1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,3.3.4,移位指令,(1),逻辑左移指令,格式,:,SHL OPR,,,CNT,(,移位次数),功能:,将指定操作数左移,CNT,位,每次最高位移入,CF,,,空出的最低位补,0,例,:,SHL AL,,,1,逻辑左移,1,位相当于把无符号的操作数乘以,2,CF,0,OPR,MOV CL ,3,SHL AL,CL,0,CF,OPR,逻辑右移一位相当于把无符号的操作数除以,2,功能:,将操作数右移,CNT,位,每次最低位进入,CF,,,空出的最高位补,0,(2),逻辑右移指令,格式,:,SHR OP
2、R,,,CNT,(,移位次数),例,:,SHR AL,,,1,MOV CL ,3,SHR AL,CL,功能:,将指定操作数,右移,CNT,位,每次移位,最低位,进入,CF,,,空出的,最高位填充原来的值,,即原来为,0,填,0,,原来为,1,,填,1,CF,OPR,(3),算术左移移位,格式,:,SAL OPR,,,CNT,功能:,执行操作与,SHL,完全相同,(4),算术右移指令,格式,:,SAR OPR,,,CNT,例,:,SAL AL,,,1,例:,MOV CL,,,3,0F4H,则指令执行后 (,SI,),=,5140H,SAR AL,CL,指令执行前,(,AL,),=0A6H,则指令
3、执行后(,AL,),=,MOV AL,0A6H,1 0 1 0 0 1 1 0,AL,1 1 0 1 0 0 1 1,AL,1 1 1 0 1 0 0 1,AL,1 1 1 1 0 1 0 0,AL,CF,1,1,0,MOV CL,2,SAL SI,CL,指令执行前,(,SI,),=1450H,SI,0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0,SI,0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0,功能:,将指定操作数,左移,CNT,位,每次移位,最高位进入,CF,,,其它位顺序,左移一位,,空出的最低位由新的,CF,值填充。,CF,OPR,(,5,)循环左移
4、指令,格式:,ROL OPR,,,CNT,例:,MOV CL,,,3,ROL BL,CL,MOV BL,0C6H,1 1 0 0 0 1 1 0,BL,1,1,0,0 0 1 1 0 1 1 0,CF,1 0 0 0 1 1 0 1,0 0 0 1 1 0 1 1,功能:,将指定操作数,右移,CNT,位,,每次,最低位移入,CF,,,其他位,顺序右移,,空出的高位由新的,CF,值填充。,CF,OPR,(6),循环右移指令,格式:,ROR OPR,,,CNT,例:,MOV CL,,,2,ROR DH,CL,MOV DH,0C6H,功能:将指定的操作数连同进位位一起,左移,CNT,次,,每次移位,,CF,移入操作数的最低位,,操作数的,最高位移入,CF,,,其他位顺序,左移,。,CF,OPR,(7),带进位的循环左移指令,格式,:,RCL OPR,,,CNT,例:,MOV CL,,,2,RCL BH,CL,MOV BH,0C6H,功能:将指定的操作数连同进位位一起,右移,CNT,次,,每次移位,,CF,移入操作数的最高位,,操作数的,最低位移入,CF,,,其他位顺序,右移,。,(8),带进位的循环右移指令,格式,:RCR OPR,,,CNT,例:,MOV CL,,,2,RCR BH,CL,MOV BH,0C6H,CF,OPR,