Cú pháp cụa cụa leơnh RCR như sau :
RCR destination,1 RCR destination,CL
Ví dú : Giạ sử DH = 8Ah ,CF=1 và CL=3 . Tìm giá trị cụa DH,CF sau khi leơnh
RCR DH,CL được thực hieơn Giại :
CF DH
Giá trị ban đaău 1 10001010 Sau khi quay 1 laăn 0 11000101 Sau khi quay 2 laăn 1 01100010 Sau khi quay 3 laăn 0 10110001=B1H
Aûnh hưởng cụa leơnh quay leđn các cờ
SF,PF và ZF phạn ạnh kêt quạ CF-bit cuơi cùng được dịch ra
OF=1 nêu kêt qụa thay đoơi dâu vào laăn quay cuơi cùng
Ưùng dúng : Đạo ngược các bit tređn moơt byte hoaịc 1 từ .Ví dú AL =10101111 thì sau khi đạo ngược AL=11110101 .
Cĩ theơ laịp 8 laăn cođng vieơc sau :Dùng SHL đeơ dịch bit MSB ra CF , Sau đĩ dùng RCR đeơ đưa nĩ vào BL .
Đốïn mã đeơ làm vieơc này như sau : MOV CX,8 ;sơ laăn laịp REVERSE :
SHL AL,1 ; dịch MSB ra CF
RCR BL,1 ; đưa CF ( MSB) vào BL LOOP REVERSE
MOV AL,BL ; AL chứa các bit đã đạo ngược
Chương 4 : Các leơnh dịch và quay 54 Các leơnh dịch và quay thường được sử dúng trong các hốt đoơng xuât nhaơp sơ nhị phađn và sơ hex.
4.4.1 Nhaơp sơ nhị phađn
Giạ sử caăn nhaơp moơt sơ nhị phađn từ bàn phím , kêt thúc là phím CR . Sơ nhị phađn là moơt chuoêi các bit 0 và 1 . Moêi moơt ký tự gõ vào phại được biên đoơi thành moơt bit giá trị ( 0 hoaịc 1) roăi tích luỹ chúng trong 1 thanh ghi . Thuaơt tốn sau đađy sẽ đĩc moơt sơ nhị phađn từ bàn phím và cât nĩ tređn thanh ghi BX .
Clear BX
input a character ( ‘0’ or ‘1’) WHILE character<> CR DO
convert character to binary value left shift BX
insert value into LSB of BX input a character
END_WHILE
Đốn mã thực hieơn thuaơt tốn tređn như sau : XOR BX,BX ; Xố BX MOV AH,1 ; hàm đĩc 1 ký tự INT 21h ; ký tự tređn AL WHILE_: CMP AL,0DH ; ký tự là CR? JE END_WHILE ; đúng , kêt thúc AND AL,0Fh ; convert to binary value SHL BX,1 ; dịch trái BX 1 bit
OR BL,AL ; đaịt giá trị vào BX INT 21h ; đĩc ký tự tiêp theo
JMP WHILE_ ; laịp END_WHILE:
4.4.2 Xuât sơ nhị phađn
Giạ sử caăn xuât sơ nhị phađn tređn BX ( 16 bit) . Thuaơt tốn cĩ theơ viêt như sau
FOR 16 times DO
rotate left BX ( put MSB into CF) IF CF=1
Chương 4 : Các leơnh dịch và quay 55 then output ‘1’ else output ‘0’ END_IF END_FOR
Đốn mã đeơ xuât sơ nhị phađn cĩ theơ xem như bài taơp .
4.4.3 Nhaơp sơ HEX
Nhaơp sơ hex bao goăm các sơ từ 0 đên 9 và các ký tự A đên F . Kêt qụa chứa trong BX .