Corecția zecimală Daa în registrul al după adăugare

DAA Corecția zecimală în registrul AL după adăugare

comanda daa corectează rezultatul plus în numerele înregistra AL două BCD împachetat (BCD) (câte o cifră în fiecare tetradă) pentru a obține corecte pereche ambalate cifre BCD. Comanda este utilizată după adăugarea de numere zecimale binare-zecimale. Dacă rezultatul adăugării depășește 99, se efectuează o operațiune și este stabilit stegulețul CF. Comanda acționează asupra steagurilor SF, ZF, AF, PF și CF.








mov AL, 87h; BCD 87 ambalate

adăugați AL, 04h; după adăugarea AL = 8Bh

daa; AL = 91h, adică Ambalat cu BCD 91


mov AL, 87h; BCD 87 ambalate
adăugați AL, 11h; După adăugarea AL = 97h
da, AL = 97h, adică bătătorit
; BCD 97 (în acest caz
, comanda daa nu face nimic)

DAS Corecția zecimală în registrul AL după scăderea


comanda das corectează rezultatul scăderii în registru AL doi BCD împachetat (BCD) numere (câte o cifră în fiecare tetradă) pentru a obține cifre zecimale pereche corectă ambalate. Comanda este utilizată după operarea scăderii numerelor zecimale binare-zecimale. Dacă a fost necesar un împrumut pentru scădere, este stabilit stegulețul CF. Comanda acționează asupra steagurilor SF, ZF, AF, PF și CF.


mov AL, 55h; BCD 55 ambalat

sub AL, 19h; După scăderea AL = 3Ch

das; AL = 36h, adică Ambalat cu BCD 36


mov AL, 55h; BCD 55 ambalat

sub AL, 15h; după scăderea AL = 40h

das; AL = 40h, adică bătătorit

; BCD 40 (în acest caz

, comanda das nu face nimic)

Decrementul DEC (scade cu 1)


Comanda dec scade 1 de la operand, care poate fi un registru (cu excepția unui segment) sau o celulă de memorie atât de dimensiune octet cât și de cuvânt. Nu este permisă utilizarea unei valori imediate ca operand. Operandul este interpretat ca un numar nesemnificat. Comanda acționează pe steagurile OF, SF, ZF, AF și PF.








mov AX, 0FFFFh
dec AX; AX = FFFEh


mov CX, 3500h
dec CL; CX = 35FFh


; În câmpurile de date
mem dw 68
; În segmentul de software
dec mem = 67


mov EAX, 0
dec EAX; EAX = FFFFFFFFh

Diviziunea DIV a numerelor nesemnate


Comanda div împarte un întreg nesemnat în registrele AX (în cazul împărțirii prin octeți) sau DX: AX (în cazul divizării cu un cuvânt) într-un operand sursă (un întreg nesemnat). Mărimea dividendului este de două ori mai mare decât divizorul și restul.
Pentru operațiunile cu un singur octet, dividendul este plasat în registrul AX; După efectuarea operației, coeficientul este înscris în registrul AL, restul este înscris în registrul AH.
Pentru operațiunile cu două octeți, dividendul este plasat în registrele DX: AX (în DX - partea mai veche, în AX - cea mai tânără); După efectuarea operației, coeficientul este înscris în registrul AX, restul este înscris în registrul DX.
Ca operand div div, puteți specifica un registru (cu excepția unui segment) sau o locație de memorie; Nu divide prin valoare imediată. Dacă divizorul este 0 sau dacă coeficientul nu este plasat în registrul atribuit, este inițiată o întrerupere cu vector 0. Comanda nu afectează steagurile procesorului.
comanda Div poate fi utilizat pentru diviziunea întreg despachetat număr BCD în registrul AX nu despachetat divizorul BCD dacă Aad înainte de a executa comanda (vezi. Exemplul 3).


mov AX, 506; Dividend
mov BL, 50; Divizor
div BL; AL = 0Ah (privat), AH = 06h (restul)


; În câmpurile de date
long dd 65537; Dividend
În segmentul de software
mov DX, cuvântul ptr lung + 2; DX = 0001h, ridicat
, parte din dividend
mov AX, cuvânt ptr lung, AX = 0001h, mai mic
, parte din dividend
mov CX, 256; Divizorul
div CX, AX = 0100h (privat),
; DX = 0001h (restul)


mov AX, 0807h; BCD 87 neambalat
mov DL, 09h; BCD neambalat 9
aad; AX = 0057h = 87
div DL; AX = 0609h, adică 9 și 6 în restul


mov EAX, 0FFFFFFFh; partea inferioară a dividendului
mov EDX, 0;
mov EBX, 256; Divizorul
div EBX; privat în EAX = 000FFFFFh,
; Balanța în EDX = 000000FFh

386+ ENTER Creează un cadru de stivă pentru parametrii procedurii


Procedură de apelare
apel subrl
Subrută subrutină
subrl proc
enter2048,0; Locul pentru datele locale
. Lucrați cu date locale
părăsi
putrezi







Articole similare

Trimiteți-le prietenilor: