• Nenhum resultado encontrado

INTO Interrompa se excesso IRET Retorno de interrupção

No documento 8086 MICRO (páginas 31-37)

As instruções de movimentação de dados, aritméticas e lógicas podem operar com constantes, registradores ou posições de memória, usando qualquer uma das funções de endereçamento citadas anteriormente.

A instrução aritmética compõe-se em 4 operações básicas, podendo ser operações com 8 ou 16 bits, números positivos e negativos (aritmética sinalizada com valores na notação de complemento 2).

Os MPs 8086/88 ainda executam as 4 operações aritméticas básicas em decimal, através da utilização das instruções de ajuste decimal.

As instruções lógicas também podem utilizar operandos de 8 ou 16 bits.

Tanto as operações lógicas como as aritméticas (com exceção da multiplicação e divisão) podem ter como operandos qualquer um dos registradores, com exceção dos registradores de segmentos, e o resultado da operação e colocado em um dos registradores usados.

Operações com “strings” permitem o trabalho com blocos de dados contidos em memória. Podemos através dessas instruções movimentar ou comparar, por exemplo, 2 posições de memória, o que não e permitido com as instruções normais. Em conjunto com uma instrução de prefixo (por exemplo “REPEAT”), uma operação de “strings” pode ser repetida o número de vezes dado pelo registrador CX (contagem de LOOPS-repetidos). Com isso obtemos de forma bastante simples transferência de uma área de memória para outra, ou, comparação entre duas áreas.

As instruções de transferência de controle podem ser divididas em; - Desvios incondicionais: chamadas e retorno de sub-rotinas; - Desvios condicionais;

- Desvio de LOOP;

- Interrupção por software.

As instruções de controle do processador permitem manipular FLAGS forçar a parada de processador (HALT), etc.

Segmentos DEFAULT são determinados quando não existe pré-definição (prefixo override), de registradores de segmento em algumas instruções. Tem prioridade de armazenamento em operações executadas pela CPU. Indicadores (ponteiros) para a memória normalmente usam o registrador DS como base de referencia; exceções incluem SP e BP que usam SS. Instruções “strings” que baseiam SI e DI em ES além de DS, e IP que sempre referencia CS.

As codificações destes prefixos em instruções são:

CS = 2EH ES = 26H DS = 3EH SS = 36H

As codificações dos registradores de segmento, implícitos numa instrução (DEFAULT), dentro do modo de endereçamento são:

ES = 00 CS = 01 SS = 10 DS = 11

1º BYTE 2º BYTE 3º BYTE 4° BYTE

: COD. DE OPER. : 7 6 5 4 3 2 1 0 : DADOS : DADOS :

byte de modo :--- deslocamento --- ---:

de endereçamento

7 6 = mod. (operação em memória ou registradores) 5 4 3 = reg. (registrador referenciado)

2 1 0 = r/m (modo de endereçamento)

Concluímos que importantes novas instruções foram adicionadas as CPUs 8086/88, (em relação ao 8080 e 8085), que em muito simplificaram e estendem o alcance do processamento. As instruções são:

- multiplicação e divisão de números binários relativos (inteiros) e positivos, e também de decimais, na forma não codificada (os dígitos 0-9 representados num byte);

- transfira, busque (um elemento, “scan”) e compare são operações para cadeias com até 64 KB de comprimento;

- teste de bits não destrutivos;

- tradução de bytes entre um código e outro; - interrupção gerada por software;

- um grupo de instruções que pode ajudar ou coordenar as atividades de sistemas de multiprocessadores.

O número de clocks, dado em tabela, para cada instrução, e considerado após a instrução já estar na fila interna da CPU (cachê) pois, quando se executa uma instrução a próxima já esta na fila.

Não existe transferência de conteúdo de memória para memória.

Não existe transferência de conteúdo de um certo endereço para um registro de segmento. EX: MOV SS, (05) – não existe

Toda a vez que trabalhamos com pilha o ponteiro (SP) estará sempre apontando para um endereço decrementado da última posição utilizada.

INTERRUPÇÕES

Uma interrupção para o fluxo normal de programa transfere o controle da CPU para uma rotina de serviço cujo endereço, ou vetor, ou indicador, está armazenado nos endereços de 0 à 3FFH da memória ( = 1KB = 256 interrupções de 4 bytes) que é uma tabela de 256 vetores de interrupção. (CS : IP).

Cada tipo de interrupção tem um número para identificá-la. Esse número e multiplicado por 4 pela CPU e o resultado e o endereço do primeiro byte do vetor de interrupção (endereço da rotina).

As interrupções podem ser indicadas:

1 – por periféricos na linha INTR (mascarável) e NMI (não mascarável); 2 – através da execução de instrução apropriada (INTO, INTn);

3 – pela CPU em certos casos (erro de divisão, execução passo-a-passo), Fig. A’.

Quando uma rotina de interrupção e iniciada o registro de condições (flags), CS e IP são armazenadas (PUSH) na pilha e as flags TF e IF são zeradas. Logo depois a CPU “chama” a rotina de serviço carregando o vetor da tabela (tipo *4) nos registros CS e IP. Ao terminar, restaura as flags, CS e IP com os valores, salvos há pilha (IRET).

A própria rotina pode reabilitar IF para que pedidos de interrupção sejam aceitos na linha INTR (uma rotina de interrupção pode ser sempre interrompida por um pedido na linha NMI).

Toda rotina de interrupção deve ser terminada por uma instrução IRET. Essa instrução assume que a pilha esta nas mesmas condições de quando foi iniciada. Ela carrega (POP) as 3 words do tipo da pilha nos registros CS, IP e flags, logo, voltando a instrução que seria executada quando o fluxo foi interrompido.

Portas de um sistema, são dispositivos de E / S de informações do sistema com periféricos. São acessadas através de endereçamento por instruções de memória ou de E / S (IN, OUT).

E / S – mapeada em memória. Vantagens:

- utilizar o poderoso set de instruções dos MPs 8086/88; - tem a seu dispor 1 MB de endereço.

Desvantagens:

- instruções maiores e mais lentas.

E / S – não mapeada em memória. Vantagens:

- utiliza instruções mais rápidas (IN, OUT);

- tem compatibilidade com instruções de 8 bits, no caso do MP 8088. Desvantagens:

- só tem duas instruções e está restrito aos modos de endereçamento das mesmas; - só pode acessar 64 KB de endereços.

No documento 8086 MICRO (páginas 31-37)

Documentos relacionados