avatar

tetsai

原创声明

本文由tetsai原创,转载请注明来源

命令记忆方法(对应颜色进行记忆):

非循环算术移位非循环逻辑移位循环不进位移位循环带进位移位
SALSHLROLRCL
SARSHRRORRCR

值得注意的是,SAL和SHL在运算结果上是完全一样的。

非循环

意味着二进制位移之后,移出的位不再参与补位,分两种情况

算术

保留最高位,而且位移的时候用最高位补

例如 110001001

右移为->111000100->111100010->111110001...

如果左移就用0补,和下面的是一样的

逻辑

单纯左移,和右移,与C语言的<< 和>>效果一样

例如 110001001

右移为->011000100->110001000->100010000...

左移为->100010010->000100100->001001000...

循环

移出的一位影响或将要影响接下来要替补的位,我们称这个是循环

不进位

意味着单纯的只是把移出的一位丢到缺的那一位

如果是左移,就把最左边位扔到最右边

如果是右移,就把最右边位扔到最左边

进位

引入标志寄存器CF,移出的一位时,缺的空由CF补,然后把移出的一位赋给CF

例如 110001001 ,设CF=0

右移为->01000100(因为一开始CF=0,所以最高位变成了0,因为最低位为1,所以然后CF=1了)->10100010(CF=0)->01010001(CF=0)->00101000(CF=1)...

发表评论

电子邮件地址不会被公开。 必填项已用*标注