110 5. Rozkazy mikroprocesorów H0H6/H08S
Przykład
CMP ZMIENNA, AX CMP ZMIENNA[BX], DI CMP BAJT, CL CMP Z 123[DI + BP +1], BX
Porównanie zawartości rejestru z argumentem w pamięci 0011 lOlw mod reg r/m
Liczba taktów - 9 + takty do obliczenia adresu efektywnego. Przykład
CMP AX, ZMIENNA CMP SI, ZMIENNA[BX]
CMP CL, BAJTjBPJ CMP DX, Z_80
Porównanie zawartości akumulatora z wartością bezpośrednią 0011 llOw datalow datahigh
Liczba taktów - 4.
CMP AL, 10H CMP AX, STALAEOU CMP AX, -1 CMP AL, 0
Porównanie zawartości rejestru z wartością bezpośrednią 1000 OOsw 11 111 reg datalow datahigh
Liczba taktów - 4.
Przykłady
CMP AH,7
CMP CL, JEDEN EOU CMP SI, 0
CMP BH, 01010101B
data
Porównanie argumentu w pamięci z wartością bezpośrednią 1000 Olsw mod 111 r/m addr low addr high data low
Liczba taktów -10 + takty do obliczenia adresu efektywnego.
5.3. Rozkazy operacji arytmetycznych i logicznych Przykłady
CMP ZMIENNA[SI +9], O CMP ZMIENNA2, STAŁA EQU
AAS (ang. ASCII adjusl forsubtraction )
poprawka po odejmowaniu dwójkowym w rozpakowanym kodzie BCD
Operacja: (AL AOFH >9) V (AF= 1) => (AL**-AL~6; AH«-AH-1; AF^-1; CF^-1; next AL<-AL A OFH)
Znaczniki: OF DFIF TF SF ZF AF PF CF
9 ... 9 9 v 9 v
• • • A « A
Jeżeli cztery mniej znaczące bity akumulatora AL są większe niż 9 lub znacznik AF = 1, to od AL jest odejmowane 6, a od AH jest odejmowane 1. Cztery bardziej znaczące bity akumulatora AL zostają wyzerowane, znaczniki AF i CF przyjmują wartość 1. Jeżeli mniej znaczące 4 bity AL nie były większe od 9 i znacznik AF = 0, to nie jest wykonywana żadna operacja.
Liczba taktów - 4.
MOV AX, 7 ; |
AH 0000 0000 |
7 |
AL 0000 0111 |
SUB AL, 9; |
-9 |
00001001 | |
• — » ) AAS ; -1 |
0000 0001 |
-6 |
11111110 AL<3:0> >9 aAF=1 0000 0110 |
;=(-D |
1111 1111 |
11111000 | |
• * |
AND |
00001111 | |
y |
11111111 |
00001000 4 |
DAS (ang. decimal adjusl for subtraction )
poprawka dziesiętna po odejmowaniu dwójkowym w kodzie BCD
Operacja: (AL A OFH >9) V (AF= 1) => (AL*-AL-6; AF<-1; next (AL>9FH) V (CF = 1) =* AL«-AL-60H; CF«-1)
Znaczniki: OF DF IF TF SF ZF AF PF CF
? - - - X X X X X
Jeżeli cztery mniej znaczące bity akumlatora AL są większe niż 9 lub znacznik AF= 1, to od AL zostaje odjęte 6, a znacznik AF przyjmuje wartość 1. Jeśli po tej operacji AL jest większe niż 9FH lub znacznik przeniesienia CF przyjął wartość 1, to od akumulatora AL zostaje odjęta wartość 60H i znacznik CF = 1. Jeżeli przed wykonaniem rozkazu DAS cztery mniej znaczące bity AL nic były mniejsze niż 9 i znacznik AF = 0, to nie jest wykonywana żadna operacja.