分享

循环移位指令

 Ethan的博客 2011-11-04

二、循环移位指令

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进行移位。参见动画演示

【例】请用不带CF的循环右移指令指令对操作数10110011进行移位。参见动画演示

【例】请用带CF的循环左移指令对操作数10110010进行移位。参见动画演示

【例】请用带CF的循环右移指令对操作数10110011进行移位。参见动画演示

图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表示数据的符号发生了改变。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多