例题

思路
选择移位语句,右移,将AL移出的送入DX左端,将BL移出的送入DX左端。循环八次
MOV AL,01100101B;
MOV BL,11011010B;
XOR DX,DX;两个值相同,异或结果为0。等效:MOV DX,0 
MOV CX,8;count
L1: SHR AL,1;逻辑右移,左边补0, RCR DX,1;带进位循环右移,右端被舍弃掉的补回左端SHR BL,1;右移 RCR DX,1;右移; LOOP L1 ;AL的1被移出,送入CF中;DX的左端被CF填入,然后右端0送入CF中;;BL的0被移出,送入CF中    ;DX的左端被CF填入,然后右端0送入CF中;;至此,一个循环结束,进行八次循环完成数据转移
指令讲解
移位操作分为三类:算术移位,逻辑移位,循环移位
逻辑移位是指逻辑左移和逻辑右移,移出的空位都用0来补。
 SHL(shift logical left):逻辑左移
 SHR(shift logical right):逻辑右移
 算术移位
 对于无符号型值,算术移位等同于逻辑移位。
 对于有符号型值 ,算术左移等同于逻辑左移。
 算术右移补的是符号位,正数补0,负数补1。
 SAL(shift arithmetic left) :算术左移
 SAR(shift arithmetic right) :算术右移
 循环移位
 ROL(rotat left) 循环左移
 
 ROR(rotat right) 循环右移
 
 带进位循环移位
 
 
 注意顺序!!!先移位,再将CF(进位标志位)复制到LSB(MSB),最后将被移除的值送入CF。
 
 所以这里作为转存的寄存器是有两个的,一个是CF,一个我不知道是啥,设为X吧。
 此时,我们反过来推导一波例题:
 
总结
通过例题学习了常见的几种移位操作。