ADD destino, fonte
SUB destino, fonte
Usadas para adicionar (ou subtrair) dados entre:
- registo e registo
- registo e posição de memória
- adicionar (ou subtrair) um número diretamente a (de) um registo ou posição de memória.
Combinações válidas de operandos:
Exemplos de instruções válidas:
ADD AX,BX ;soma o conteúdo de BX com AX, resultado em AX
ADD AX,WORD1 ;soma o conteúdo da posição de memória word1,
;ao registo AX, resultado em AX.
SUB WORD2, AX ;subtrai o conteúdo do registo AX ao conteúdo da posição de memória WORD2, resultando em WORD2.
SUB BL,5 ;subtrai 5 decimal ao conteúdo de BL
Graficamente: suponha a instrução ADD AX, DX
INC destino
DEC destino
Usadas para adicionar 1 (incrementar) ou subtrair 1 (decrementar) ao/do conteúdo de:
- Um registo
- Uma posição de memória
Exemplos
- INC CX ;incrementa o conteúdo de CX
- INC WORD1 ;incrementa o conteúdo da posição de memória WORD1
- DEC BYTE2 ;decrementa o conteúdo da posição de memória BYTE2
- DEC CL ;decrementa o conteúdo de CL (Byte baixo de CX)
Graficamente: Suponha a instrução INC BYTE1
NEG destino
Usada para subtrair o conteúdo destino pelo seu valor negativo, operando sobre:
- Um registo
- Uma posição de memória
Exemplos:
- NEG BX ;gera o valor negativo do conteúdo de BX.
- NEG WORD1 ;idem, no conteúdo da posição de memória WORD1.
Graficamente: Suponha a instrução NEG BX
MUL fonte
MUL (multiply) - Usada com números em representação não sinalizada
Multiplicação com números em formato byte:
- registos de 8 bits e vairáveis de tipo DB.
- segundo operando é assumido em AL
- resultado (destino) pode ser 16 bits e encontra-se em AX.
Multiplicação com números em formato word:
- registos de 16 bits e variáveis do tipo DW
- segundo operando é assumido em AX
- resultado pode ser 32 bits (tamanho doubleword) e encontra-se em:
DX - 16 bits mais significativos (high word).
AX - 16 bits menos significativos (low word).
Exemplos de casos de multiplicação:
1. Suponha que AL contenha 80h e BL contenha FFh:
Antes: AL = 80h = 10000000b = 128
BL = FFh = 11111111b = 255
2. Suponha que AX contenha 0001h e BX contenha FFFFh:
antes: AX = 0001h = 0000000000000001b = 1
BX = FFFh = 1111111111111111n = 65535
DIV fonte
- DIV (divide) - Usada com números em representação não-sinalizada.
- Fonte deve ser considerada como divisor (não pode ser uma constante).
Divisão com números em formato byte:
- O divisor é de 8 bits (1 byte)
- O dividendo é assumido em AX (16 bits)
- Após a execução: O quociente de 8 bits estará em AL, o resto de 8 bits estará em AH.
Divisão com números em formato word:
- O divisor é de 16 bits (1 word)
- O dividendo é de 32 bits:
- DX → 16 bits mais significativos do dividendo (high word).
- AX → 16 bits menos significativos do dividendo (low word).
Após a execução: -o quociente de 16 bits estará em AX.
-o resto dos bits estará em DX.
Exemplos de casos de divisão
1. Suponha que DX e AX contenham 0000h e 0005h, e BX contenha FFFEh;
Antes:
DX: AX = 00000005h = 5
BX = 0000FFFEh = 65534
Sem comentários:
Enviar um comentário