联系我们 - 广告服务 - 联系电话:
您的当前位置: > 关注 > > 正文

进位标志位中的数值被丢弃?汇编SHL指令和SHR指令

来源:CSDN 时间:2023-03-06 08:08:01

SHL指令


(资料图片仅供参考)

SHL指令使目的操作数逻辑左移一位,最低位用0填充。最高位移入进位标志位,而进位标志位中原来的数值被丢弃。 若将1100 1111左移1位,该数就变为 1001 1110

例如: BL左移一位。最高位复制到进位标志位,最低位填充0:

mov bl, 8FH              ; BL = 10001111bshi bl, 1        ; CF = 1, BL = 00011110b

当一个数多次进行左移时,进位标志位保存的是最后移出最高有效位(MSB)的数值。

mov al, 10000000bshi al, 2                   ; CF = 0, AL = 00000000b

步骤: 1.将一个寄存器或者内存单元中过的数据向左移动bit位。 2.将溢出的这一位放到CF中。 3.最低位用0补充。

位元乘法

数值进行左移即行了位元乘法。 任何操作数左移 n 位,将该数乘以 2n。

例如,十进制数 10 左移两位,其结果与10 * 2n相同。

mov al, 10      ; 00001010 shl dl ,2       ; 00101000

SHR指令

SHR指令使目的操作数逻辑右移一位,最高位用0填充。最低位置复制到进位标志位,而进位标位中原来的数值被丢弃。

例如: AL中的最低位0被复制到进位标志位,而AL中的最高位用0填充。

mov al, 0D0H       ; aL = 11010000bshr al, 1   ; aL = 01101000b, CF = 0

在多位移操作中,最后一个移出位0的数值进入进位标志位。

mov al, 00000010bshr al, 2                        ; AL = 00000000b, CF = 1

总结: 当一个数多次进行右移时,进位标志位保存的是最后移出最低有效位的数值。

责任编辑:

标签:

相关推荐:

精彩放送:

新闻聚焦
Top