Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ESP
push eax
15AB
push ebx 102C
pop ecx
;ecx fica com 102C …………
pop edx
;edx fica com 15AB
0
Memória
; programa ; func01
… …
… …
call func01 …
… ret
…
Instruções aritméticas
Adição
V1 dd 8
mov eax, 23
mov ebx, 7
add eax, ebx ; eax fica com o valor 30
add ebx, -2 ; ebx fica com 5
add [V1], 4 ; V1 fica com 12
add eax, [V1] ; eax fica com 42
adc eax, ebx ; equivalente a: eax = eax + ebx + CF
Subtracção
Multiplicação
Neste exemplo o ebx é o multiplicando (mas podia ser outro registo qualquer):
mov eax, 4
mov ebx, 7
mul ebx
Divisão
Neste exemplo o ebx é o divisor (mas podia ser outro registo qualquer):
mov edx, 0
mov eax, 35
mov ebx, 8
div ebx
mov al, –5
mov bx, 1024
add bx, al ; erro! registos de tamanhos diferentes
mov al, –5
mov bx, 1024
cbw
add ax, bx
Justificação:
O número –5 é representado, em binário com 8 bits, da seguinte forma: 11111011
5=00000101
-5=11111010 (em complemento para 1)
-5=11111011 (em complemento para 2)
al 1011010
1
bl 0110001
1
and a l , b l 0010000
1
or a l , b l 1111011
1
xo r a l , b l 1101011
0
not a l 0100101
0
sh l b l , 1 1100011 O bit mais à esquerda perde-se e
entra 0 pela direita
0
sh l a l , 1 0110101 O bit mais à esquerda perde-se e
entra 0 pela direita
0
shr al, 1 0101101 O bit mais à direita perde-se e entra 0
pela esquerda
0
sar al, 1 1101101 O bit mais à direita perde-se e entra o
sinal pela esquerda
0
sar bl, 1 0011000 O bit mais à direita perde-se e entra o
sinal pela esquerda
1
rol bl, 1 1100011 O bit que sai pela esquerda entra pela
direita
0
ror al, 1 1101101 O bit que sai direita pela entra pela
esquerda
0
rcr bl, 1 0011000 Supor que CF=0 antes da instrução.
No final, fica CF=1
1
Explicação do rcr bl,1:
bl 01100011
0 CF
Após instrução
bl 00110001
1 CF