b) IF_THEN_ELSE IF condition is true
4.2.1 Leơnh dịch trái ( left shif t)
Leơnh SHL dịch toán háng đích sang trái .Cú pháp cụa leơnh như sau : SHL destination ,1 ; dịch trái dest 1 bit
SHL destination , CL ; dịch trái N bit ( CL chứa N) Cứ moêi laăn dịch trái , moơt sô 0 được theđm vào LSB .
CF 7 6 5 4 3 2 1 0 0 1 byte
Các cờ bị ạnh hưởng : SF,PF,ZF phạn ạnh kêt qụa AF khođng xác định
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 dịch cuôi cùng
Ví dú : Giạ sử DH =8Ah và CL=3 . Hỏi giá trị cụa DH và CF sau khi leơnh SHL DH,CL được thực hieơn ?
Kêt qụa DH=01010000=50h , CF=0
Nhađn baỉng leơnh SHL
Chúng ta hãy xét sô 235decimal . Nêu dịch trái 235 moơt bit và theđm 0 vào beđn phại chúng ta sẽ có 2350 . Nỏ cách khác , khi dịch trái 1 bit chúng ta đã nhađn 10.
Đôi với sô nhị phađn, dịch trái 1 bit có nghĩa là nhađn nó với 2.Ví dú AL=00000101=5d
SHL AL,1 ; AL=00001010=10d
SHL AL,CL ; nêu CL=2 thì AL=20d sau khi thực hieơn leơnh
Chương 4 : Các leơnh dịch và quay 50 Leơnh SHL có theơ dùng đeơ nhađn moơt toán háng với heơ sô 2 . Tuy nhieđn trong trường hợp người ta muôn nhân mánh đên tính chât sô hĩc cụa phép toán thì leơnh SAL sẽ được dùng thay cho SHL . Cạ 2 leơnh đeău táo ra cùng moơt mã máy .
Moơt sô ađm cũng có theơ được nhađn 2 baỉng cách dịch trái . Ví dú : Nêu AX=FFFFh= -1 thì sau khi dịch trái 3 laăn AX=FFF8h = -8
Tràn
Khi chúng ta dùng leơnh dịch trái đeơ nhađn thì có theơ xạy ra sự tràn . Đôi với leơnh dịch trái 1 laăn , CF và OF phạn ánh chính xác sự tràn dâu và tràn khođng dâu . Tuy nhieđn các cờ sẽ khođng phạn ánh chính xác kêt qụa nêu dịch trái nhieău laăn bởi vì dịch nhieău laăn thực chât là moơt chuoêi các dịch 1 laăn lieđn tiêp và vì vaơy các cờ CF và OF chư phạn ánh kêt quạ cụa laăn dịch cuôi cùng . Ví dú : BL=80h , CL=2 thì leơnh
SHL BL,CL
sẽ làm cho CF=OF=0 maịc dù tređn thực tê đã xạy ra cạ tràn dâu và tràn khođng dâu .
Ví dú : viêt đốn mã nhađn AX với 8 . Giạ sử raỉng khođng có tràn . MOV CL,3 ; CL=3
SHL AX,CL ; AX*8