二、循環(huán)移位指令
8086指令系統(tǒng)中有4條循環(huán)移位指令:
◆ 不帶進(jìn)位位的循環(huán)左移指令 ROL
◆ 不帶進(jìn)位位的循環(huán)右移指令 ROR
◆ 帶進(jìn)位位的循環(huán)左移指令 RCL
◆ 帶進(jìn)位位的循環(huán)右移指令 RCR
這4條指令的功能如圖3.5所示。

(a)不帶CF的循環(huán)左移指令ROL |

(b)不帶CF的循環(huán)右移指令ROR |

(c)帶CF的循環(huán)左移指RCL |

(d)帶CF的循環(huán)右移指令RCR |
圖3.5 移位指令的功能
【例】請(qǐng)用不帶CF的循環(huán)左移指令對(duì)操作數(shù)10110010進(jìn)行移位。參見(jiàn)動(dòng)畫(huà)演示
【例】請(qǐng)用不帶CF的循環(huán)右移指令指令對(duì)操作數(shù)10110011進(jìn)行移位。參見(jiàn)動(dòng)畫(huà)演示
【例】請(qǐng)用帶CF的循環(huán)左移指令對(duì)操作數(shù)10110010進(jìn)行移位。參見(jiàn)動(dòng)畫(huà)演示
【例】請(qǐng)用帶CF的循環(huán)右移指令對(duì)操作數(shù)10110011進(jìn)行移位。參見(jiàn)動(dòng)畫(huà)演示
從圖3.4上可以看到,ROL和ROR指令在執(zhí)行時(shí),沒(méi)有把CF包括循環(huán)中,而RCL和RCR指令在執(zhí)行時(shí),則連同CF一起循環(huán)移位。
這4條循環(huán)移位指令可以對(duì)字節(jié)進(jìn)行操作,也可以對(duì)字進(jìn)行操作,操作數(shù)可以是寄存器,也可以是存儲(chǔ)單元。如果循環(huán)移位指令只移動(dòng)l位,則在指令中直接指出,如果要移動(dòng)若干位,則必須在CL中指定移動(dòng)位數(shù)。比如:
ROL BX,1 ;BX中的內(nèi)容不帶進(jìn)位位循環(huán)左移1位
ROL WORD PTR [DI],CL ;DI所指字單元中的數(shù)不帶進(jìn)位循環(huán)左移,CL中為移動(dòng)次數(shù)
循環(huán)移位指令影響CF和OF標(biāo)志,對(duì)其它標(biāo)志不影響。ROL和RCL指令在執(zhí)行一次左移后,如果操作數(shù)的最高位和CF不等,則OF置1。同樣,ROR和RCR指令在執(zhí)行一位右移時(shí),如果使操作數(shù)的最高位和次高位不等,則表示移位后的數(shù)據(jù)符號(hào)和原來(lái)的符號(hào)不同了,此時(shí)也會(huì)使OF為1。
因此,循環(huán)移位指令在執(zhí)行后,標(biāo)志位OF為1表示數(shù)據(jù)的符號(hào)發(fā)生了改變。
|