Operațiile aritmetice de bază din x86_64 modifică registrul destinație și actualizează automat flag-urile de stare din registrul RFLAGS (cum ar fi Zero Flag dacă rezultatul este 0 sau Overflow Flag la depășire de capacitate).
Adunare, scădere și particularitatea împărțirii IDIV
; 1. Adunare și scădere de bază:
add rax, 25 ; RAX = RAX + 25
sub rbx, 10 ; RBX = RBX - 10
inc rcx ; RCX = RCX + 1 (incrementare rapidă)
dec rdx ; RDX = RDX - 1 (decrementare rapidă)
; 2. Înmulțire cu semn (IMUL):
imul rax, rbx ; RAX = RAX * RBX
imul rdx, rsi, 50 ; RDX = RSI * 50 (formatul cu 3 operanzi)
; 3. Împărțire cu semn (IDIV) - NECESITĂ ATENȚIE SPECIALĂ!
; În x86_64, IDIV împarte numărul pe 128 de biți format din perechea RDX:RAX la divizor:
; Câtul ajunge în RAX, iar restul (modulo %) ajunge în RDX.
mov rax, 105 ; Deîmpărțitul
cqo ; Instrucțiune OBLIGATORIE: extinde semnul din RAX în RDX!
mov rbx, 10 ; Împărțitorul
idiv rbx ; RDX:RAX / RBX
; Rezultat:
; RAX = 10 (câtul)
; RDX = 5 (restul - operația modulo)
Întrebări & Exemple de Cod:
Instrucțiuni Aritmetice în x86_64: ADD, SUB, INC, DEC, IMUL și IDIVAi o nelămurire despre utilizarea comenzii
Instrucțiuni Aritmetice în x86_64: ADD, SUB, INC, DEC, IMUL și IDIVsau 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.