Códigos de Instrução Códigos de Instrução • Palavras de memória Prof. Eduardo Appel Eng.DSc. Interpretadas como dados [email protected] http:\\vitoria.upf.tche.br\~appel Interpretadas como código Indicam uma operação que é requisitada de um microprocessador • Disposição dos dados na memória • Diferenciação entre códigos de instrução e dados Estudo de caso: Adição Binária O conteúdo da palavra de memória de endereço 0A30H deve ser somado ao conteúdo da palavra de memória de endereço 0A31H, e a soma deverá ser armazenada na posição de memória de endereço 0A31H. • Execução de programas Arquitetura e Organização de Computadores 1 Arquitetura e Organização de Computadores Códigos de Instrução Códigos de Instrução Estudo de Caso - Adição Binária Estudo de Caso - Adição Binária 1) Identificar o endereço da primeira palavra de memória a ser somada; 2) Transferir o conteúdo desta posição de memória para o microprocessador; 3) Identificar o endereço da segunda posição de memória a ser somada; 4) Somar o conteúdo desta posição com o conteúdo da palavra de memória que foi transferido para o microprocessador no passo [2]; 5) Identificar o endereço da posição de memória onde a soma deve ser armazenada; 6) Transferir a soma para esta posição de memória; Arquitetura e Organização de Computadores 02AFH Assumidos como contendo dados binários puros 0A30H 0A31H 0A32H • O código de instrução que identifica endereço de memória irá ocupar 3 bytes como segue: 10011100 9CH quando interpretado como um código de instrução, faz com que as duas próximas palavras de memória sejam lidas e interpretadas como um endereço de memória de dados. 3 Arquitetura e Organização de Computadores Códigos de Instrução Códigos de Instrução Estudo de Caso - Adição Binária Estudo de Caso - Adição Binária • A memória do microprocessador será dividida em memória de dados e memória de programa. • Vamos supor que o programa deve ser armazenado em palavras de memória com endereço começando em 0400H Memória de Programa Memória de Dados 02AFH 0400H 9C 0A30H 0401H 0A 0A31H 0402H 30 0A32H 0403H Lê o conteúdo das duas próximas palavras de memória. Interprete-as como um endereço de memória de dados 0A30Hé o endereço de memória de dados que a CPUvai ler. Arquitetura e Organização de Computadores 5 2 4 • O passo 2 necessita de que o conteúdo desta palavra de memória endereçada seja lido e interpretado como dado. Não há necessidade de que a instrução especifique qual a espécie do dado contido nesta palavra de memória. • Vamos assumir que o código binário 01000000 se interpretado como uma instrução, faz com que o conteúdo da palavra de memória endereçada seja lido e interpretado como dado. Memória de Programa 0400H 9C 0401H 0A 0402H 30 0403H 40 Passo 1 Lê o conteúdo da palavra de dado endereçada (0A30H do passo 1) e interpreta como dado binário puro. Arquitetura e Organização de Computadores 6 1 Códigos de Instrução Códigos de Instrução Estudo de Caso - Adição Binária Estudo de Caso - Adição Binária • O passo 3 é uma repetição do passo 1, com apenas o dado correspondente ao endereço de memória (0A31H) sendo diferente. O programa fica então: • O passo 4 é uma variação do passo 2, em vez dde simplesmente ler o conteúdo da palavra de memória endereçada, o dado é somado, usando-se addição binária, ao dado de memória lido anteriormente. Esta operação é representada por: 10000000 Memória de Programa 0400H 9C 0401H 0A 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 Memória de Programa Passo 1 Passo 2 0402H 30 0403H 40 0404H 9C 0405H 0A 0406H 31 0407H 80 0408H 60 30 40 9C dentro da CPU. 0405H 0A 0406H 31 0407H 80 7 Passo 1 Passo 2 Passo 3 Soma o conteúdo da palavra de memória de dados endereçada com a palavra de dado armazenada anteriormente na CPU. Arquitetura e Organização de Computadores Códigos de Instrução Códigos de Instrução Estudo de Caso - Adição Binária Estudo de Caso - Adição Binária Memória de Programa 9C 0402H 0404H • O passo 5 é uma repetição do passo 3, o endereço da palavra de memória onde a soma deve ser armazenada, 0A31H já é o mesmo da mais recente palavra endereçada no passo 3, logo a instrução não precisa ser repetida para o passo 5. A palavra binária 01100000 quando interpretada como código de instrução faz com que o dado seja colocado na palavra de memória endereçada mais recentemente. 0A 0A 0403H Arquitetura e Organização de Computadores 0401H 9C 0401H Lê 0A31H, como um endereço de memória de dados para 0407H 0400H 0400H Passo 1 8 • O programa cria endereços de memória que identificam palavras de memória que foram assumidas como contendo dados binários puros. • Cabe ao programador certificar-se que estas posições de memória contém realmente dados binários. • Caso seja cometido algum erro, só o resultado estranho obtido servirá de alerta. Passo 2 Passo 3 Passo 4 Armazena a palavra de dado da CPU na palavra de memória endereçada pelo endereço de memória de dados 9 Códigos de Instrução 10 Códigos de Instrução Ficam alguns questionamentos: • Como um microprocessador realiza as operações requisitadas por um código de instrução? • Qual lógica externa é necessária para um microcomputador completar as operações especificadas num código de instrução? • Quais as formas de se escrever um programa de microcomputador? Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Os códigos de instrução são mandados para a CPU como um meio de identificar a próxima operação que se deseja que a CPU realize. Uma seqüência de códigos de instrução, armazenados na memória, constitui um programa. 11 Arquitetura e Organização de Computadores 12 2