Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instrução Uma instrução é a operação elementar que o processador pode efetuar. As instruções são armazenadas na memória principal, para serem tratadas pelo processador. Uma instrução é composta de dois campos: O código operacional, representando a ação que o processador deve efetuar; O código operando, definindo os parâmetros da ação. O código operando depende da operação. Pode tratar-se de um dado ou de um endereço da memória. Código operacional Campo operando O número de bytes de uma instrução varia conforme o tipo de dado (a ordem da grandeza é de 1 à 4 bytes). As instruções podem ser divididas em categorias cujas principais são: Acesso à memória: acessos à memória ou transferências de dados entre registros. Operações aritméticas: operações tais como: adições, subtrações, divisões ou multiplicações. Operações lógicas: operações E, OU, NÃO, NÃO exclusivo, etc. Controle: controle de sequência, conexões condicionais, etc. Registros Quando o processador executa as instruções, os dados são armazenados, temporariamente, nas pequenas memórias rápidas de 8, 16, 32 ou 64 bits que chamamos registros. Conforme o tipo do processador, o número global de registros pode variar entre uma dezena e várias centenas. Os principais registros são: o registrador de dados ou acumulador (ACC), armazenando os resultados das operações aritméticas e lógicas; o registrador de status (PSW, Processor Status Word), armazenando os indicadores sobre o estado do sistema (retenção, excesso, etc.); o registrador de instrução (RI), com a instrução de processamento em curso; o contador de programa (CO ou PC para Program Counter), com o endereço da próxima instrução a ser processada; o registro reserva, que armazena, temporariamente, um dado vindo da memória. CONJUNTO DE INSTRUÇÕES Quem executa um programa é o hardware e o que ele espera encontrar é um programa em linguagem de máquina (uma sequencia de instruções de máquina em código binário). Um programa em linguagem de alto nível não pode ser executado diretamente pelo hardware. Ele em que ser transformado (traduzido) para linguagem de máquina por um compilador, antes de ser carregado em memória, para que o hardware possa executá-lo. A linguagem da máquina é composta de códigos binários, representando instruções, endereços e dados e esta totalmente vinculada ao conjunto de instruções da máquina. Alto nível – linguagem mais próxima do programador Baixo nível – linguagem mais próxima da máquina Características: - Código da máquina - Binária - Usualmente representada por códigos Assembly Exemplo de um conjunto de instruções de uma máquina “qualquer” Instrução Significado Operação Código Load Carregar no acumulador ACC <-- op 0000 Store Salvar na memória op <-- ACC 0001 Add Somar ACC <-- ACC + op 0010 Sub Subtrair ACC <-- ACC - op 0011 Mult Multiplicar ACC <-- ACC * op 0100 Div Dividir ACC <-- ACC / op 0101 Jmp Desviar CI <-- op 0110 Jz Desviar, se ACC igual zero CI <-- op, se ACC = 0 0111 Jnz Desviar, se ACC não zero CI <-- op, se ACC != 0 1000 Read Ler entrada op <-- entrada 1001 Print Imprimir saida <-- op 1010 Stop Terminar 1100 Cada uma das instruções tem um código binário associado, que é o código da operação. Serão usadas as seguintes convenções: Operador Significado Operador Significado + adição ~ not (negação) - subtração = igual * multiplicação != diferente / divisão | or (AND) <-- atribuição ^ exclusive or (XOR) << deslocamento à esquerda & and (E) >> deslocamento à direita Formato das instruções Código de operação (OPCODE) Operando 1 (OP1) OP 2 OP 3... Código da Operação ou OPCODE – identifica a operação a ser realizada pelo processador. É o campo da instrução cujo valor binário identifica a operação a ser realizada. Este código é a entrada no decodificador de instruções na UC (unidade de controle). Cada instrução deverá ter um código único que a identifique. Operando (s) – é o campo da instrução cujo valor binário sinaliza a localização do dado (ou é o próprio dado) que será manipulado (processado) pela instrução durante a operação. Em geral, um operando identifica o endereço de memória onde está contido o dado que será manipulado, ou pode conter o endereço onde o resultado da operação será armazenado. Finalmente, um operando pode também indicar um Registrado (que conterá o dado propriamente dito ou um endereço de memória onde está armazenado do dado). Os operandos fornecem os dados da instrução. Exemplo: ADD OP1 OP2 => (OP1)<-- (OP1) + (OP2) + conteúdo de OP1 e OP2 e armazena o res em OP1 ADD OP1 OP2 OP3 => (OP3)<-- (OP1) + (OP2) + conteúdo de OP1 e OP2 e armazena o res em OP3 ADD OP1 => (ACC)<-- (ACC) + (OP1) + conteúdo de OP1 e ACC e armazena o res em ACC Elementos de uma instrução: - Código de operação “faça isso” - Referência a Operando Fonte “para este” - Referência a Operando Destino “coloque a resposta aqui” - Endereço da próxima instrução “quando tiver terminado, vá para a próxima posição” Localização dos Operandos: - Onde estão os Operandos fonte e destino? Memória principal Registrador do CPU Dispositivo de entrada e saída Representação da instrução: - cada instrução é representada por uma única sequencia de bits - para programadores são usados os mnemônicos: ADD, SUB, LOAD - operando pode ser representados de maneira simbólica: ADD x, y Tipos de instrução: Pode ser usado mais de um formato de instrução: - processamento de dados - armazenamento de dados - movimentação de dados - controle de fluxo de programa Tamanho do código da operação 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 Quantas combinações possível, sem repetição, consigo com 8 posições de 2 produtos? R= Considere um computador hipotético no qual, em sua arquitetura, o processador possui apenas um registrador de armazenamento de dados, denominado acumulador, com tamanho de 16 bits e no formato de suas instruções reservam-se 4 bits para os códigos de operação. Considerando-se ainda que o registrador de endereços tenha 12 bits de tamanho, pode-se afirmar que neste computador há: 16 códigos de operação. Tipos de Operandos - números - caracteres - dados lógicos Números - inteiro e ponto fixo - ponto flutuante - decimal Decimal – representado por 4 bits: 0 = 0000 1 = 0001 8 = 1000 BCD – binary coded decimal 246 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 Caracteres ASCII �PAGE \* MERGEFORMAT�3�
Compartilhar