| STATYSTYKI |
Od 06.09.2000
|
Optymalizacja: 1024x768, IE5 |
|
| Instrukcje porównania |
CMP
Instrukcja cmp (compare) porównuje dwa argumety. Rozkaz odejmuje zawartość pierwszego argumentu od drugiego(Y - X), jednak nie zapisuje nigdzie wyniku, a tylko ustawia odpowiednie znaczniki.
Postać instrukcji jest następująca:
cmp X, Y
W zależności od relacji między X i Y mogą następować określone skoki warunkowe. Innych instrukcji skoków używa się dla liczb ze znakiem (ustawiane są wówczas flagi: zerowa ZF, przeniesienia CF, nadmiaru OF i znaku SF), a innych dla liczb bez znaku(ustawiane są wówczas flagi: zerowa ZF i przeniesienia CF).
Poniższa tabelka przedstawia przy jakiej relacji X i Y zachodzą skoki:
| Relacja | dla liczb ze znakiem | dla liczb bez znaku |
| X = Y | je | je |
| X > Y | jg | ja |
| X < Y | jl | jb |
| X >= Y | jge | jae |
| X <= Y | jle | jbe |
| X <> Y | jne | jne |
TEST
Rozkaz oblicza iloczyn logiczny - AND dla wszystkich odpowiadających sobie par bitów. Wynik nie jest nigdzie zapisywany, tylko na jego podstawie ustawiane są znaczniki. Znaczniki są tak zmieniane jak w przypadku instrukcji AND:
| Znacznik | Wartość |
| OF(z.przepełnienia) | Zawsze równy 0 po operacji TEST. |
| CF(z.przeniesienia) | Zawsze równy 0 po operacji TEST. |
| ZF(z.zera) | 1- jeżeli wynik operacji TEST jest 0 0- jeżeli wynik operacji TEST jest różny od 0 |
| PF(z.parzystości) | 1- jeżeli wynik operacji TEST ma parzystą liczbę bitów równych 1 0- jeżeli wynik operacji TEST ma nieparzystą liczbę bitów równych 1 |
| SF(z.znaku) | 1- jeżeli wynik jest ujemny (najstarszy bit jest równy 1) 0- jeżeli wynik jest nieujemny (najstarszy bit jest równy 0) |
Instrukcja TEST jest wygodna do "niedestruktywnego" sprawdzania bitów.
Np. mamy przejść do etykieta_1, gdy 3 bit rejestru al jest równy
1. Użyjemy wówczas w operacji TEST maski z ustawionym (równym 1)
bitem 3 i pozostałymi bitami równymi 0:
test al,00001000b ;sprawdz bit
jz etykieta_2 ;jeśli ZF=0(3 bit z al jest 0) to skacz do etykieta_2
etykieta_1:
;.....
etykieta_2:
;.....
Operatory relacji: EQ,NE,LT,GT,LE,GE
Są opisane tutaj.
Operatory porównujące łańcuchy: CMPSx
Są opisane tutaj.
<<
|
|