b) IF_THEN_ELSE
4.3 Leơnh qua y( Rotate)
Quaytrái(rotateleft) =ROL sẽquaycácbitsangtrái,LSBsẽđượcthay baỉngMSB.CònCF=MSB
CF 7 6 5 4 3 2 1 0
CúphápcụaROLnhưsau: ROL destination,1
ROL destination,CL
Quayphại (rotateright) =ROR sẽquaycácbitsangphại ,MSBsẽđược thay baỉngLSB.CònCF=LSB
7 6 5 4 3 2 1 0 CF
Cúphápcụaleơnhquayphạilà
Chương4:Các leơnh dịch và quay 52
ROR destination,1 ROR destination,CL
TrongcácleơnhquayphạivàquaytráiCFchứa bitbịquayrangoài.
Vídúsauđađychothâycáchđeơkhámcác bittređnmoơtbytehoaịc1từ màkhođnglàm thayđoơinoơidungcụanó.
Vídú:DùngROLđeơđêmsôbit1tređnBXmàkhođngthayđoơinoơidungcụa nó.KêtqụacâttređnAX.
Giại :
XOR AX,AX ;xoáAX
MOV CX,16 ;sôlaănlaịp=16(moơttừ) TOP:
ROL BX,1 ;CF=bitquayra
JNC NEXT ; nêuCF=0 thìnhạyđênvònglaịp INC AX ; ngượclái(CF=1),taíng AX NEXT:
LOOP TOP
Quaytráiquacờnhớ(rotatethroughcarryleft)=RCL.Leơnhnàygiôngnhư leơnhROLchưkháclàcờnhớ naỉm giữaMSBvàLSBtrongvòng kíncụacácbit
CF
7 6 5 4 3 2 1 0
Cúphápcụa cụaleơnhRCLnhưsau: RCL destination,1
RCL destination,CL
Quayphại quacờnhớ(rotatethroughcarryright)=RCR.Leơnhnàygiông như leơnhRORchưkháclàcờnhớ naỉm giữaMSBvàLSBtrongvòng kíncụacác bit.
Chương4:Các leơnh dịch và quay 53
CF
7 6 5 4 3 2 1 0
Cúphápcụa cụaleơnhRCRnhưsau: RCR destination,1
RCR destination,CL
Vídú:GiạsửDH=8Ah,CF=1vàCL=3.Tìmgiátrịcụa DH,CF saukhi leơnh
RCR DH,CL đượcthực hieơn Giại :
CF DH
Saukhiquay1laăn 0 11000101 Saukhiquay2laăn 1 01100010 Saukhiquay3laăn 0 10110001=B1H
Aûnhhưởngcụaleơnhquayleđncáccờ
SF,PFvàZFphạnạnhkêtquạ CF-bitcuôicùngđượcdịchra
OF=1nêukêtqụathayđoơidâuvàolaănquay cuôicùng
Ưùng dúng : Đạongược cácbittređnmoơtbytehoaịc1từ .VídúAL=10101111 thìsaukhiđạongược AL=11110101.
Cótheơlaịp8laăncođngvieơcsau:DùngSHLđeơdịch bitMSBraCF ,Sauđó dùngRCRđeơđưanóvàoBL.
Đốïnmãđeơlàmvieơcnàynhưsau: MOV CX,8 ;sôlaănlaịp REVERSE:
SHL AL,1 ;dịchMSBraCF
RCR BL,1 ;đưaCF(MSB)vàoBL LOOPREVERSE
MOV AL,BL ;ALchứacácbitđãđạongược