Instrucțiunile de comparație pregătesc execuția deciziilor logice (salturile condiționate). Ele funcționează efectuând operații interne și actualizând registrul RFLAGS, fără a modifica registrele sursă sau destinație.
| Instrucțiune | Operație internă invizibilă | Când se activează Zero Flag (ZF = 1)? |
|---|---|---|
cmp a, b |
Calculează temporar a - b și aruncă rezultatul. |
Dacă a == b (deoarece diferența lor este 0). |
test a, b |
Calculează temporar a AND b și aruncă rezultatul. |
Dacă niciun bit comun nu este 1 (ex. test rax, rax verifică dacă RAX este 0 sau pointer null). |
Exemple de comparație corectă
; Verificăm dacă un număr din RAX este egal cu 100:
cmp rax, 100
je este_egal ; Sare dacă ZF == 1 (adică rax == 100)
; Verificăm dacă un pointer este NULL fără a folosi cmp rax, 0:
test rax, rax
jz pointer_este_null ; Sare dacă rax == 0
Întrebări & Exemple de Cod:
Comparații și Evaluarea Flag-urilor: Instrucțiunile CMP și TESTAi o nelămurire despre utilizarea comenzii
Comparații și Evaluarea Flag-urilor: Instrucțiunile CMP și TESTsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.