Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Unidade III - conjunto de instrucoes e programacao, Notas de estudo de Cultura

Unidade III - conjunto de instrucoes e programacao

Tipologia: Notas de estudo

2011

Compartilhado em 26/10/2011

adriana-saldanha-cabral-5
adriana-saldanha-cabral-5 🇧🇷

5

(1)

5 documentos

1 / 13

Documentos relacionados


Pré-visualização parcial do texto

Baixe Unidade III - conjunto de instrucoes e programacao e outras Notas de estudo em PDF para Cultura, somente na Docsity! Unidade III SAP1 - Conjunto de instruções e programação. • Conjunto de instruções • Mnemônicos • Opcode • Programação do SAP1. Na unidade II você conheceu a arquitetura física do SAP1 como o contador de programa, memória, somador/subtrator etc. Conforme vimos na disciplina de Organização de Computadores, para que uma máquina seja definida como um computador, ela tem que ter a capacidade de ser programada. Os computadores atuais podem ser programados utilizando-se uma linguagem de programação extremamente poderosa e ao mesmo tempo com relativa facilidade de compreensão para um ser humano; porem, quando esse programa é traduzido em linguagem de máquina, os recursos que ele pode utilizar para executar as suas tarefas são definidos num conjunto de funcionalidades denominado Conjunto de Instruções. Podemos definir então um conjunto de instruções como sendo um conjunto de funcionalidades ao qual um computador, por meio do processador ou microcontrolador, é capaz de responder executando alguma tarefa. Essas instruções fazem parte do processador ou microcontrolador. Existem várias categorias de instruções, como por exemplo: Instruções de movimentação de dados: Servem para copiar um dado de um registrador para outro. Instruções aritméticas e lógicas: Utilizadas para somar, subtrair, multiplicar, dividir, executar operações lógicas booleanas como, por exemplo, o AND, OR, NOT etc. Essas operações podem ser Diádicas (quando envolve dois operandos) ou Monádicas (quando envolve apenas um operando). Instruções de comparação e desvio condicional: Utilizadas para comparar valores ou desviar o fluxo de execução do programa. Instruções de Chamadas a Procedimentos: São responsáveis por chamar um procedimento ou função (subconjunto de instruções). Instruções de LOOP: Usadas para controlar laços de repetição, fazendo com que um conjunto de instruções sejam executadas várias vezes. Instruções de Entrada e Saída: São as instruções responsáveis pela entrada e saída de dados para serem processados (Entrada) ou que já foram processados (saída). O conjunto de instrução varia sempre de um computador para outro, mas os tipos apresentados acima e os termos que aprenderemos nesta unidade podem ser aplicados para quase todos os processadores e microcontroladores. Pelo fato do SAP1 ser extremamente simples, ele também tem poucas instruções (somente cinco instruções) e por esse motivo você aprenderá a trabalhar com as instruções do SAP1 e depois irá aprender as instruções mais complexas, acompanhando a sua evolução (instruções do SAP2 e SAP3). INSTRUÇÕES As instruções possuem um NOME, também conhecido por MNEMÔNICO (apelido) e podem conter um ou mais OPERANDOS. Além disso, como o computador “entende” apenas a presença ou ausência de sinal, ou seja, 0 ou 1 cada instrução possui um código denominado OPCODE (código de operação). O OPCODE é utilizado sempre que for necessário fazer uma programação em linguagem de máquina, ou quando você precisar entender o que se passa dentro da máquina quando uma instrução estiver sendo executada. Veja os nomes, opcodes e a respectiva função das cinco instruções do SAP1: MNEMÔNICO OPCODE FUNÇÃO LDA 0000 Carrega o valor contido no endereço de memória apontado pelo seu operando no acumulador. ADD 0001 Soma o valor contido no endereço de memória apontado pelo seu operando com o conteúdo armazenado no Acumulador. valor anterior (primeiro operando) pelo resultado obtido pelo Somador-Subtrator. Exemplo: Supondo que os dados armazenados na memória do SAP 1 e os respectivos endereços sejam: CH 08H DH 02H EH 01H FH 05H Observação: Valores armazenados em hexadecimal. A instrução LDA DH irá carregar o valor 02H (que é o valor que está armazenado na posição DH da memória RAM), no Acumulador. ADD: Soma o valor contido no Acumulador com o endereço de memória apontado pelo operando da instrução ADD. O resultado será escrito no Acumulador, sobrescrevendo o seu conteúdo anterior. Exemplo: Supondo que os dados armazenados na memória do SAP 1 e os respectivos endereços sejam: CH 08H DH 02H EH 01H FH 05H Observação: Valores armazenados em hexadecimal. A instrução ADD CH irá somar o valor 08H (que é o valor que está armazenado na posição CH da memória RAM), ao valor armazenado no Acumulador. Se considerarmos que no exemplo anterior o valor que foi carregado no Acumulador foi 02H, o ADD irá fazer uma soma dos valores 02H + 08H, obtendo o resultado AH que ficará armazenado no Acumulador, sobrescrevendo assim o valor 02H carregado pela instrução LDA do exemplo anterior. SUB: Subtrai do valor contido no acumulador, o valor contido no endereço de memória apontado pelo seu operando. O resultado será escrito no Acumulador, sobrescrevendo o seu conteúdo anterior. Exemplo: Supondo que os dados armazenados na memória do SAP 1 e os respectivos endereços sejam: CH 08H DH 02H EH 01H FH 05H Observação: Valores armazenados em hexadecimal. A instrução SUB EH irá subtrair o valor armazenado no Acumulador por 01H (que é o valor armazenado na posição EH). Mais uma vez, se considerarmos os dois exemplos anteriores, o valor atual do Acumulador é AH, portanto a instrução SUB EH irá resultar no valor 09H que será escrito no Acumulador, sobrescrevendo o valor anterior AH. OUT: Faz com que o conteúdo armazenado no acumulador seja indicado no módulo indicador visual binário. A instrução OUT não faz referência à memória como nos exemplos das instruções LDA, ADD e SUB. O OUT irá simplesmente pegar o valor contido no Acumulador e transferi-lo ao Registrador de saída, que por sua vez está conectada ao conjunto de LEDs que compõem o módulo Indicador Visual Binário. Exemplo: OUT Considerando todos os exemplos anteriores, o valor atual do acumulador é 09H, e sendo assim, o resultado obtido após o OUT deste exemplo será o seguinte: Indicador Visual Binário 0000 1001 – ou seja, 09H HLT: A instrução HLT não faz referência a memória e serve para desativar o CLOCK fazendo com que o módulo Controlador-Sequencializador pare de funcionar, encerrando o programa. DH 05H EH 14H FH 11H Obs.: se você tiver dúvidas sobre os valores 14H e 11H, consulte a tabela de conversão decimal / hexadecimal no apêndice A. Programa escrito em linguagem de montagem x programa escrito em linguagem de máquina: Os programas escritos acima, utilizam os MNEMÔNICOS das instruções do SAP1 juntamente com os valores de posição de memória e operandos em hexadecimal. Esta forma de se escrever um programa, chama-se MONTAGEM (assembly), ou seja, os programas escritos até agora utilizaram uma linguagem denominada de “Linguagem de Montagem”, que gerou o que chamamos de “programa fonte”. Como sabemos bem, os computadores precisam receber um programa em linguagem de máquina para poder trabalhar, e o que veremos na seqüência é como se faz para transformar um programa fonte escrito em linguagem de montagem num programa escrito em linguagem de máquina. Qualquer programa escrito em linguagem de máquina, chama-se PROGRAMA OBJETO. A maioria dos programadores trabalham escrevendo programa numa linguagem de alto nível e quem transforma o programa fonte em programa objeto é o tradutor (pode ser um compilador ou interpretador). Vamos ver como é que se traduz um programa escrito em linguagem de montagem em linguagem de máquina, sem a ajuda de um tradutor. Veja como é simples, basta substituir todos os valores apontados em hexadecimal para binário e indicar as instruções por meio dos seus códigos de operação (opcode) e não mais pelo mnemônico (apelido). Para ficar claro, estude os programas abaixo que é a tradução dos exemplos feitos em linguagem de montagem apresentados até agora. Exemplos de programas escritos em linguagem de máquina: EXEMPLO 1: Vamos fazer um programa para retornar o resultado de 3+5. Obs.: Os valores 3 e 5 estão no sistema de numeração decimal e deverão ser armazenados nas posições EH e FH da memória. Endereço Instrução 0000 0000 1110 0001 0001 1111 0010 1110 0011 1111 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 0000 0011 1111 0000 0101 EXEMPLO 2: Agora vamos fazer um programa para retornar o resultado da expressão: 7 – 3. Obs.: Os valores 7 e 3 estão no sistema de numeração decimal e deverão ser armazenados nas posições EH e FH da memória. Endereço Instrução 0000 0000 1110 0001 0010 1111 0010 1110 0011 1111 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 0000 0111 1111 0000 0011 EXEMPLO 3: Vamos complicar mais um pouquinho; faremos agora um programa para calcular a seguinte expressão: 2 + 5 +20 - 17 Obs.: Os valores 2, 5, 20 e 17 estão no sistema de numeração decimal e deverão ser armazenados nas posições de memória compreendidos entre CH e FH. Endereço Instrução 0000 0000 1100 0001 0001 1101 0010 0001 1110 0011 0010 1111 0100 1110 0101 1111 0110 0111 1000 1001 1010 1011 1100 0000 0010 1101 0000 0101 1110 0001 0100 1111 0001 0001 Atividades:
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved