电视剧乱世香港主题曲:循环移位指令

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 22:36:11
二、循环移位指令
8086指令系统中有4条循环移位指令:
◆ 不带进位位的循环左移指令 ROL
◆ 不带进位位的循环右移指令 ROR
◆ 带进位位的循环左移指令 RCL
◆ 带进位位的循环右移指令 RCR
这4条指令的功能如图3.5所示。

(a)不带CF的循环左移指令ROL

(b)不带CF的循环右移指令ROR

(c)带CF的循环左移指RCL

(d)带CF的循环右移指令RCR
图3.5 移位指令的功能
【例】请用不带CF的循环左移指令对操作数10110010进行移位。参见动画演示',1)">
【例】请用不带CF的循环右移指令指令对操作数10110011进行移位。参见动画演示',2)">
【例】请用带CF的循环左移指令对操作数10110010进行移位。参见动画演示',3)">
【例】请用带CF的循环右移指令对操作数10110011进行移位。参见动画演示',4)">
从图3.4上可以看到,ROL和ROR指令在执行时,没有把CF包括循环中,而RCL和RCR指令在执行时,则连同CF一起循环移位。
这4条循环移位指令可以对字节进行操作,也可以对字进行操作,操作数可以是寄存器,也可以是存储单元。如果循环移位指令只移动l位,则在指令中直接指出,如果要移动若干位,则必须在CL中指定移动位数。比如:
ROL    BX,1                ;BX中的内容不带进位位循环左移1位
ROL    WORD PTR [DI],CL    ;DI所指字单元中的数不带进位循环左移,CL中为移动次数
循环移位指令影响CF和OF标志,对其它标志不影响。ROL和RCL指令在执行一次左移后,如果操作数的最高位和CF不等,则OF置1。同样,ROR和RCR指令在执行一位右移时,如果使操作数的最高位和次高位不等,则表示移位后的数据符号和原来的符号不同了,此时也会使OF为1。
因此,循环移位指令在执行后,标志位OF为1表示数据的符号发生了改变。