Documente Academic
Documente Profesional
Documente Cultură
Conversie de tipuri
FG: cbw
S: daca (al7) = 0, atunci (ah) 0 în caz contrar (ah) 1
AF: nu-i afectat nici un flag
FG: cwd
S: daca (ax15) = 0, atunci (dx) 0 în caz contrar (dx) 1
AF: nu-i afectat nici un flag
mov al, 5
mov cl, 6
add al, cl
mov ah, 0
push ax
add ax,20
pop cx
add cx, ax
Instrucţiuni aritmetice
Instrucţiunea inc (Increment – Incrementează)
In care destinaţie este un registru sau un operand în memorie, de tip octet sau
cuvânt
Instrucţiuni aritmetice
Sursa poate fi un registru sau o locaţie de memorie de 8 sau 16 biti. Variantele noi de
procesoare acceptă şi date imediate ca operand sursă.
Instrucţiuni aritmetice
Exemple
Ce conţinut va avea registrul ax după execuţia următoarelor secvenţe de program?
mov al,3 mov ax, 12 mov al,3 mov al,10 mov al, 18
mov bl, 7 mov bx, 7 mov bl, 7 mul al sub al, 3
mul bl sub ax, bx mul al mul ah mov dl, 2
mov bl,3 mul bl mul dl
mul bl
Instrucţiuni aritmetice
În situaţia în care un operand este de tip byte, iar
celălalt de tip word, se converteste operandul de tip byte la
word.
.data
alfa db 10
beta dw 200
.code
mov al, alfa
cbw
mul beta
Instrucţiuni aritmetice
mov ah,2
mov dl, al
add dl,30h
int 21h
mov dl, ah
add dl,30h
int 21h
Exemplu:
Determinați expresia ce se calculează în următoarea secvență de program:
.data
x dw ?
y dw ?
.code
…
mov ax, x
mov bx, ax
mul bx
add ax, x
mov bx, y
add bx,y
mul bx
sub ax, y
Instrucţiuni aritmetice
Instrucţiunea neg (Negate - Schimbă semnul)
FG: neg <destinaţie>
S: (destinaţie) 0 - (destinaţie)
AIF: afectate: AF, CE, PF, SF, ZF, OF (toate).
Schimbarea semnului poate conduce uneori la aceeaşi valoare, în cazul depăşirii domeniului
admisibil. De exemplu, secvenţa:
mov al, -128
neg al
va lăsa registrul al neschimbat (80H), deoarece 128 şi -128 au aceeaşi reprezentare internă.
Instrucţiuni aritmetice
Un exemplu de afişare la consolă a unui număr negativ cuprins în intervalul -10..-99:
mov bx, <număr>
mov ah,2
mov dl, ‘-’
int 21h
mov ax,bx
neg ax
mov bl, 10
div bl
mov ah,2
mov dl, al
add dl,30h
int 21h
mov dl, ah
add dl,30h
int 21h
Instrucţiuni aritmetice
Testând bistabilii de condiţie, putem deduce relaţia dintre cei doi operanzi. De
exemplu, instrucţiunea cmp ax, bx va provoca o scădere temporară (ax) - (bx).
Dacă zf = 1, înseamnă că (ax) = (bx).
Dacă cf = 1 înseamnă că la scădere a apărut un împrumut, deci (AX) < (BX), dacă sunt
considerate ca numere fără semn.
Instrucţiunea CMP se foloseşte, de obicei, împreună cu instrucţiuni de salt
condiţionat.