De nada adianta realizar cálculos e operações complexas, numa velocidade incrível, se o resultado destes processos não puder ser enviado para o mundo externo.
E é sobre isso que iremos falar nesse artigo sobre o microprocessador Intel 8086/8088, sobre a interface de entrada e saída (I/O).
Instruções de entrada e saída (I/O Instructions)
A maneira mais comum que temos de controlar a entrada e saída é através das instruções IN e OUT, da linguagem de programação Assembly. Elas servem para transferirmos dados, fazer a comunicação, entre o 8086 e os dispositivos de entrada e saída.IN, em inglês, é dentro.
Ou seja, usamos a instrução IN para entrada de dados.
OUT, em inglês, é fora.
Portanto, usamos, a instrução OU para a saída de dados.
Essas instruções usam o registro acumulador (AX, que é composto pelo AL e o AH) do microprocessador Intel para transferir dados entre o 8086 e os dispositivos de entrada e saída, onde o endereço de I/O fica armazenado no registrador DX.
Exemplos de instruções Assembly de entrada e saída:
IN AH, p8 -> o registro AL recebe o byte de dados da porta p8
IN AX, DX -> AX recebe o endereço da porta contido em DX
OUT p8, AH -> o byte sai do registrador AH para a porta p8
OUT DX, AX -> o endereço da porta armazenada em AX vai para a porta endereçada por DX
Sempre que alguma dessas instruções rodam, o 8086 terá informações sobre endereço em sua via de endereços (barramento).
Essas informações de endereços são compostas de 8 bits, ou seja 1 byte, que variam de:
$$A_0 - A_7$$
Como a via do microprocessador Intel 8086 é de 16 bits, o seguintes restantes tem valores lógicos nulos, 0:
$$A_8 - A_{15}$$
Esses 8 bits podem selecionar 256 endereços de periféricos de entrada e saída (como mouse, teclado, monitor etc).
Caso usemos as instruções INS e OUTS, esse endereçamento de dispositivos de entrada e saída I/O é feito usando-se o registro DX:
INSB (byte), INSW (word) e INSD (doubleword)
OUTSB, OUTSW e OUTSD
Ao contrário das instruções IN e OUT, as INS e OUTS não transferem dados entre o acumulador (AX) e os dispositivos de entrada e saída, mas entre a memória e os dispositivos, diretamente.
Na memória o endereço fica armazenado nos registradores ES:DI, cujos ponteiros são automaticamente in/decrementados (depende do registro de flag DF).
Nenhum comentário:
Postar um comentário