Instrucțiunile MOVZX (Move with Zero-Extend) și MOVSX (Move with Sign-Extend) copiază o valoare dintr-un registru sau locație de memorie mai mică (byte/word/dword) într-un registru mai mare, completând biții superiori cu zerouri (pentru tipuri fără semn) sau cu bitul de semn (pentru numere întregi cu semn).
; Extindere de zero (Unsigned):
mov al, 0x85 ; AL = 133 (unsigned) sau -123 (signed)
movzx rax, al ; RAX = 0x0000000000000085 (extindere cu 0)
; Extindere de semn (Signed):
mov al, 0x85 ; Bitul cel mai semnificativ este 1 (negativ)
movsx rax, al ; RAX = 0xFFFFFFFFFFFFFF85 (păstrează valoarea negativă pe 64 de biți)
; Extindere de la 32 de biți la 64 de biți cu semn:
movsxd rdi, dword [rbp - 4] ; Încarcă un int C de 32 biți într-un registru pe 64 biți
Regulă specială x86_64: O simplă instrucțiune mov eax, edx realizează automat extinderea cu zero a jumătății superioare a lui RAX (curăță biții 32-63 la zero).
Întrebări & Exemple de Cod:
MOVZX și MOVSX în x86_64: Conversii cu Extindere de Zero și SemnAi o nelămurire despre utilizarea comenzii
MOVZX și MOVSX în x86_64: Conversii cu Extindere de Zero și Semnsau 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.