• Registradores
Estes registradores são definidos como registradores de uso geral, pois podemos
realmente armazenar qualquer coisa que quisermos neles. São também registradores de
16 bits, o que significa que podemos armazenar um inteiro positivo de 0 a 65535, ou um
inteiro com sinal de -32768 to 32768.
Entendendo a parte alta e baixa do byte. AX tem um intervalo de 0 até FFFFh. Isto
significa que existe um intervalo de 0 até FFh para AH e AL. Se tivermos de armazenar
A61Dh em AX, AH conterá A6h, e AL conterá 1Dh.
o Os registradores de segmento
* DI - o índice de destino. Novamente, você o usará muito. Um outro ponteiro que, com
um segmento, geralmente ES, é usado para escrita pela CPU.
Ainda há outros registradores e flags mas não se faz necessário trabalhar com estes por
enquanto.
Entendido o que são registradores, agora vamos ver como usá-los, e como se codifica
em Assembler? Bem, primeiro você precisa de algumas instruções. As seguintes
instruções podem ser usadas em todas as CPU's do 8086 para cima.
* MOV <dest>, <valor> - MOVE. Esta instrução permite MOVER um valor para uma
posição na memória.
* SUB <dest> <valor> - SUBTRAI. Esta instrução subtrai um número a partir do valor
armazenado em “dest” ou subtrai um registrador do outro.
* MUL <dest> <valor> - MULTIPLICA. Esta instrução multiplica um número pelo valor
armazenado em “dest” ou multiplica dois registradores.
* DIV <dest> <valor> - DIVIDE. Esta instrução divide valor armazenado em “dest” por
um número ou divide um registrador do outro.
Begin { MyProc }
{ ... }
End; { MyProc }
Begin { Main }
Asm
CALL MyProc ; Chamada de procedimento
End;
End.
• Flags
Legenda:
SF - Flag de Sinal;
ZF - Flag de Zero;
AF - Flag Auxiliar;
PF - Flag de Paridade.
CF - Flag de Carry (vai um).
CMP - (COMPARE) compara dois números e reflete a comparação nos FLAGS. Para usá-
la você faria algo desse tipo:
* CMP AX, BX então seguir com uma instrução como essas abaixo:
Ex:
Volta: DEC AX ; Decrementa AX
MOV CX, AX ; Move o conteúdo de AX para CX
CMP AX, BX ; Compara AX com BX
JNE Volta ; Se AX for diferente de BX ele pula caso contrário “Volta”
Comparação sem sinal:
Pouco Comuns:
Int 21h
Função 02h
Uso: Mostra um caracter na tela
Registradores de chamada: AH = 02h e DL valor do caracter a ser exibido
Int 21h
Função 01h
Uso: Ler um caracter do teclado
Registrador de chamada: AH = 01h
Registrador de retorno: AL onde fica o caracter lido
Int 16h
Função 00h
Uso: Ler um caracter do teclado
Registrador de chamada: AH = 00h
Registrador de retorno: AL onde fica o caracter lido
Função IN
Uso: Lê o dado que está na porta (definida pelo endereço)
Registradores de chamada: AX onde será armazenado o dado lido e DX endereço da
porta.
IN AX, DX
Função OUT
Uso: Enviar um dado para a saída da impressora
Registradores de chamada: AX dado à ser impresso e DX informa o destino do dado.
OUT DX, AX