CONJUNTO DE INSTRUÇÕES DO MICROPROCESSADOR INTEL 8080.

Post on 17-Apr-2015

149 views 0 download

Transcript of CONJUNTO DE INSTRUÇÕES DO MICROPROCESSADOR INTEL 8080.

CONJUNTO DE INSTRUÇÕES DO MICROPROCESSADOR INTEL 8080

A memória no Microprocessador Intel 8080 é organizada em células de 8 bits (1 byte).

Cada célula é identificada por um código composto por 16 bits - o endereço da célula, que geralmente é representado na base hexadecimal, acarretando um valor entre 0000 e FFFF.

O 8080 pode portanto endereçar 65.536 bytes de memória, compostas de memória ROM e memória de leitura / escrita.

Os dados são armazenados no 8080 na forma de palavras com 8 bits, como mostra a ilustração abaixo.

O bit mais à direita ou bit 0 é o bit menos significativo (em inglês, least significant bit ou LSB) e o bit mais à esquerda ou bit 7 é o bit mais significativo (em inglês, most significant bit ou MSB).

As instruções no Intel 8080 podem ter 1, 2 ou bytes, ocupando respectivamente uma, duas ou tres células de memória. As ilustrações a seguir apresentam as instruções de 1, 2 e 3 bytes.

As instruções de 1 byte não tem operando.

As instruções de 2 bytes tem como operando um dado de 8 bits.

As instruções de 3 bytes tem como operando um endereço ou um dado de 16 bits.

Em uma instrução de 3 bytes em que o operando é um endereço, o endereço é armazenado sempre com o byte menos significativo na posição seguinte à do opcode e o byte mais significativo do endereço no 2º byte após o opcode.

São ocupadas 3 células consecutivas da Memória Principal do Intel 8080, como mostra a ilustração seguinte:

No Intel 8080, o Código de Operação identifica o modo de endereçamento, através de seu mnemônico e do correspondente código binário.

Os registradores envolvidos em instruções que usam os modos de endereçamento direto por registrador e indireto por registrador são definidos através de determinados bits no opcode.

O Intel 8080 dispõe dos seguintes modos de endereçamento:

Implícito; Imediato; Direto; Registrador Direto; Registrador Indireto.

A função da instrução traz implícito o endereçamento. Não há operando.Exemplo:

No microprocessador Intel 8080 essas instruções ocupam apenas 1 byte, sendo buscadas em apenas 1 acesso à memória. São as seguintes as instruções com endereçamento implícito:

STC (set carry flag) - "seta" o bit de carry e CMC (complement carry) - complementa o valor do bit de carry; - o operando implícito é o carry flag.

RAL (rotate accumulator left), RAR (rotate accumulator right) - instruções de deslocamento de bits, à esquerda e à direita - o operando implícito é o acumulador;

RLC (rotate accumulator left through carry) e RRC (rotate accumulator right through carry) - instruções de deslocamento de bits, à esquerda e à direita, através do carry flag - os operandos implícitos são o acumulador e o carry flag;DAA (decimal adjust accumulator) - instrução para aritmética em BCD - o operando implícito é o acumulador (usa também o flag AC - auxiliary carry).

O valor do campo operando é o próprio dado. É usado para trabalhar com valores constantes. O operando é

dito operando imediato (o operando é o próprio valor a ser operado, ou seja, é o próprio dado a ser processado).

Vantagem: O operando é obtido durante o ciclo de busca, em apenas 1

acesso (quando o operando é de apenas 1 byte, tal como um dado de 8 bits) ou em 2 acessos (quando o operando é de 2 bytes, tal como um dado de 16 bits ou um endereço). Não é necessário fazer nenhum acesso à MP no ciclo de execução, o que acarreta maior rapidez na execução.

Obs.: Algumas instruções no modo imediato (geralmente instruções que manipulam endereços de memória) buscam endereços ou dados de 2 bytes.

Desvantagens a) O tamanho do dado fica limitado ao número de bits do operando

(campo operando da instrução). A limitação de tamanho do campo operando reduz o valor máximo do dado que pode ser armazenado. No Intel 8080, o campo Operando tem 8 bits, portanto o maior valor deste campo será limitado a 28 = 256. Existem instruções que permitem carregar doublewords, isto é, palavras duplas que ocupam 2 células de memória, em que o maior valor será limitado a 216 = 65.536 (64k).

b) Este modo de endereçamento não permite flexibilidade para alterar dados que variam a cada execução do programa, portanto não é adequado para variáveis repetidamente operadas com diferentes valores a cada execução do programa.

Utilização- Inicialização de contadores- Constantes- Armazenamento de ponteiros em registradores- Indicação de quantidade de posições em operações de deslocamento de bits (multiplicação e divisão)

Nota: No Intel 8080, as instruções com endereçamento imediato são quase sempre codificadas com mnemônicos de 3 letras terminados pela letra I.Exemplosinstrução de soma ==> mnemônico para endereçamento direto = ADD instrução de soma ==> mnemônico para endereçamento imediato = ADI;

instrução “move” ==> mnemônico para endereçamento direto = MOV instrução “move” ==> mnemônico para endereçamento imediato = MVI;

instrução “load” (carrega) ==> mnemônico para endereçamento direto): LDAinstrução “load” ==> mnemônico para endereçamento direto = LDI

Obs.: No Intel 8080, quase todas as instruções imediatas usam o acumulador como operador implícito. As exceções são:MVI (move immediate) - pode mover o dado para qualquer registrador de trabalho ou posição de memória;LXI (load register pair immediate) - move um dado de 16 bits (geralmente um endereço) para qualquer par de registradores.

O valor do campo operando indica o endereço do dado na MP.No Intel 8080, como um endereço requer 16 bits, o operando (no modo direto) terá 16 bits, ocupando 2 células e as instruções no modo de endereçamento direto terão 3 bytes.

Vantagensa) É aplicado em mais situações que o modo imediato; b) Requer apenas uma referência à memória para busca do dado (além de uma para a busca da instrução), sendo mais rápido que o modo indireto.

Desvantagensa) Limitação do endereço da MP que pode ser indicado pelo tamanho do campo operando. b) É mais lento que o modo imediato.

UtillizaçãoQuando o dado varia de valor a cada execução.

O campo operando contém um endereço de memória cujo conteúdo é o endereço do dado a ser operado.

Portanto, há um duplo endereçamento. O endereço intermediário é chamado ponteiro (“pointer”)

O Intel 8080 somente dispõe de instruções com modo de endereçamento indireto usando registradores como ponteiro.

Existem outros modos de endereçamento, que usam registradores para indicar a posição onde estão os dados.

Os modos de endereçamento direto e indireto por registrador funcionam de forma semelhante aos modos de endereçamento direto e indireto vistos anteriormente (em que o operando aponta para uma posição de memória), porém utilizando um registrador em lugar do operando.

O conteúdo do Registrador pode ser o dado - endereçamento direto - ou então é uma referência à memória - endereçamento indireto.

O operando aponta para um registrador, o qual contém o dado.

O operando aponta para um registrador, o qual contém um endereço de memória (ponteiro) onde está o dado.

Vantagens : Maior velocidade / rapidez de execução - o acesso ao

registrador é muito mais rápido que o acesso à memória.

Economia de espaço de armazenamento de instrução (o tamanho da instrução é menor porque como são poucos registradores, são menos bits para seus endereços).

Desvantagem: Não são adequados para transferência de

variáveis da MP para ULA. Pequeno número de registradores - se forem

muitos os dados endereçados por registrador, os registradores disponíveis podem não ser suficientes.

Utilização Implementação de contadores.

No Intel 8080, a identificação do registrador envolvido na operação faz parte do próprio opcode.

O número de acessos à memória é o mais importante fator no consumo de tempo de execução da instrução.

O modo de endereçamento afeta o tempo requerido para executar uma instrução e a memória requerida para seu armazenamento.

Instruções que usam endereçamento implícito ou por registrador direto são executadas muito rápido, pois trabalham diretamente com o hardware do processador e seus registradores.

No Intel 8080, uma instrução no modo de endereçamento implícito ou por registrador direto toda pode ser buscada (“fetched”) em um único ciclo de busca (um único acesso à memória), correspondente à busca do opcode.

Cada ciclo de acesso à memória busca uma célula e implica em um número variável de estados, cujo tempo de duração depende da frequência do clock. Cada instrução consome um determinado número de ciclos de UCP.

Torres, Gabriel. Hardware Curso completo 4ª Edição.

Stallings, Willian. Arquitetura e Organização de Computadores 5ª Edição.

Morimoto, Carlos E. Guia do Hardware 3ª Edição.