instruçoes resumidas ia32
Operando 1
Operando 2
Tratamento de dados (existem diversos modos de endereçamento)
MOV
OP1
OP2
op1← op2
MOVZ
OP1
OP2
op1← op2 completando com zero
MOVSZ
OP1
OP2
op1← op2 completando com zero e mantendo o sinal ADD
OP1
OP2 op1←op2+op1 ADC
OP1
OP2 op1←op2+op1 + CF
SUB
OP1
OP2
op1←op2-op1
IMUL
OP1
Realiza a multiplicação considerando sinal e guardo o resultado no acumulador (AX, DX.AX, EDX.EAX).
IDIV
OP1
Realiza a divisão considerando sinal o cociente é armazenado em AL e o resto em AH (ou AX, DX ou
EAX, EDX)
MUL
Op1
Realiza a multiplicação sem sinal e guardo o resultado no acumulador (AX, DX.AX, EDX.EAX).
DIV
OP1
Realiza a divisão sem sinal o cociente é armazenado em AL e o resto em AH (ou AX, DX ou EAX, EDX)
INC
OP1 op1← op1 + 1
DEC
OP1 op1← op1 - 1
NEG
OP1
Op1 recebe a negação em complemento de 2
Comparações
CMP
OP1
OP2
TEST
OP1
OP2
Atualiza os FLAGS dependendo do resultado de OP1
- OP2 (subtração)
Atualiza os FLAGS dependendo do resultado de OP1
AND OP2
Pulos sem considerar sinal
JE/JZ
Label
JNE/JNZ
Label
JA/JNBE
Label
JAE/JNB
Label
JB/JNAE
Label
JBE/JNA
Label
JC
Label
JNC
Label
Pula se igual (ZF=1)
Pula se não igual (ZF=0)
Pula se superior
Pula se superior ou igual
Pula se inferior
Pula se inferior ou igual
Pula se CF = 1
Pula se CF=0
Pulos considerando sinal
JG/JNLE
Label
JGE/JNL
Label
JL/JNGE
Label
JLE/JNG
Label
Pula se superior
Pula se superior ou igual
Pula se inferior
Pula se inferior ou igual
Desvio incondicional
JMP
Label
CALL
Label
RET
INT
OP1
Pula
Pula, empilhando endereço de retorno
Pula retirando o endereço de retorno
Faz a interrupção indicada pelo operando
Laços loop CX←CX-1, pula se CX != 0
Label
Operações Binárias
AND
OR
XOR
NOT
SHR
OP1
OP1
OP1
OP1
OP1
OP2
OP2
OP2
Valor
SHL
OP1
Valor
ROR
OP1
Valor
ROL
OP1
Valor
op1←op2 AND op1 op1←op2 OR op1 op1←op2 XOR op1
OP1 recebe a negação bit a bit.
Shift para direita (quantidade de bits indicada por valor) Shift para esquerda (quantidade de bits indicada por
valor)