Baixe o app para aproveitar ainda mais
Prévia do material em texto
Microprocessador comercial: funcionamento e conjunto de instruções APRESENTAÇÃO Historicamente, sistemas microprocessados são utilizados desde a década de 1940, quando eram executadas funções específicas utilizando-se conjunto de válvulas. Com o passar do tempo e com a evolução do semicondutor, foram surgindo alguns circuitos integrados dedicados a algumas funcionalidades. Foi então que, no início da década de 1970, surgiu o primeiro microprocessador Intel, conhecido como Intel 4004, com o propósito de gerenciar uma calculadora. Nesta Unidade de Aprendizagem, você conhecerá uma evolução do microprocessador 4004, denominado Intel 8086, que tem sua arquitetura de 16 bits, sendo vastamente utilizado no mercado atual. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Identificar a arquitetura básica de um microprocessador Intel.• Descrever a operação de barramento multiplexado do microprocessador Intel.• Relacionar os grupos de instruções de um microprocessador Intel.• DESAFIO Em um sistema de automação para estacionamentos, deseja-se apresentar o número de vagas livres em um espaço que apresenta 16 vagas. Para isso, utilizam-se sensores óticos que, quando a vaga está ocupada, demonstram nível lógico baixo e, quando a vaga está livre, nível lógico 1. Os dados desses sensores são passados de forma serial para o microprocessador Intel 8086 e armazenados em um registrador de 16 bits, nomeado NÚMERO. Escreva um código em assembly que trate esse registrador de 16 bits e apresente o número de vagas livres em um registrador nomeado RESULT. INFOGRÁFICO As Unidades de Execução (EU) são responsáveis por processar as instruções; é nessas unidades que estão presentes os recursos para decodificação e execução das tarefas. Uma EU é composta por registradores de dados ou de propósito geral, ponteiros, registradores de estados ou flags, barramento de dados de 16 bits e pela unidade lógica e aritmética, ao passo que a Unidade de Interface de Barramento (BIU) é designada a fazer a intermediação entre a EU e os barramentos de dados e de endereços do meio externo. Além disso, é capaz de controlar a transmissão de sinais de endereços, dados e controle, gerenciando, assim, a sequência de busca e execução de instruções. Para isso, é composta por 5 registradores de 16 bits, uma fila de armazenamento de até 4 bytes de instruções e um sistema com endereçamento de 20 bits a partir de registradores de 16 bits. Neste Infográfico, são apresentados, em um diagrama de blocos, os registradores contidos no Intel 8086, mostrando de forma gráfica a dinâmica do sistema digital e as suas interligações. Conteúdo interativo disponível na plataforma de ensino! CONTEÚDO DO LIVRO Cada microprocessador apresenta suas características particulares, o que define suas devidas aplicações. É importante conhecer cada detalhe do microprocessador que será utilizado em seu sistema, para que você possa utilizar seus recursos de forma mais precisa. Os detalhes construtivos são apresentados na folha de dados do dispositivo. Leia o capítulo Microprocessador comercial: funcionamento e conjunto de instruções, do livro Sistemas digitais. Nele, você verá uma interpretação da folha de dados do Intel 8086 e terá um descritivo básico das funcionalidades de cada recurso. Boa leitura. SISTEMAS DIGITAIS Ruahn Fuser Microprocessador comercial: funcionamento e conjunto de instruções Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Identificar a arquitetura básica de um microprocessador Intel. Descrever a operação de barramento multiplexado do microproces- sador Intel. Relacionar os grupos de instruções do microprocessador Intel. Introdução Um microprocessador é caracterizado por um sistema digital formado por um conjunto de transistores, subdividido em alguns blocos deno- minados recursos básicos, tais como: registradores, unidade lógica e aritmética (ULA) e contadores para controle de endereços. Capaz de realizar instruções por meio de uma notação legível de código de má- quina, esse sistema pode ser classificado como um chip programável. Ele aceita algoritmos em diferentes linguagens de programação por meio de compiladores específicos. Na década de 1970, foi criada uma calculadora a partir do chip Intel 4004 de 4 bits, primeiro sistema eletrônico a utilizar um microprocessador comercial. O Intel 4004 foi construído com 2.300 transistores, com um barramento de 4 bits e capacidade para endereçar 640 bytes de memória. Ele trabalhava a 740 kHz e era capaz de realizar até 92 mil instruções por segundo. Atualmente, os microprocessadores estão presentes na maioria dos dispositivos eletrônicos, como televisores, notebooks, videogames, sistemas automotivos e controladores para automação industrial. U N I D A D E 4 C08_Sistemas_Digitais.indd 1 23/08/2018 15:31:15 Neste capítulo, você vai estudar o dispositivo Intel 8086, que é uma evolução do Intel 4004 e vem sendo muito utilizado em sistemas ele- trônicos. Para isso, você vai ver alguns detalhes do dispositivo, como arquitetura básica e recursos disponíveis, barramentos de fluxo de in- formações e microinstruções. Arquitetura básica do Intel 8086 Também conhecida como arquitetura x86, a organização dos processadores da família 8086 foi baseada na arquitetura CISC (Complex Instruction Set Com- puter ou computador com conjunto complexo de instruções). A organização do hardware que realiza os processos pode ser subdividida em duas partes bem defi nidas: EU (Execution Unit ou unidade de execução) e BIU (BUS Interface Unit ou unidade de interface de barramento). Unidade de execução Essa unidade é responsável por processar as instruções. Nela estão presentes os recursos para decodifi cação e execução das tarefas. Ela é composta por registradores de dados ou de propósito geral, ponteiros, registradores de estados ou fl ags, barramento de dados de 16 bits e unidade lógica e aritmética. Registradores de dados ou propósito geral A unidade de execução possui quatro registradores de 16 bits que podem ser utilizados nas operações lógicas e aritméticas. Tais registradores podem ser utilizados com 16 ou 8 bits, pois são subdivididos da seguinte forma. AX: conhecido como “acumulador”, é utilizado em operações aritmé- ticas e lógicas, em instruções de entrada/saída, conversões, etc. Pode ser dividido em dois registradores de 8 bits com acesso independente: AH, o byte mais significativo, e AL, o byte menos significativo. BX: conhecido como “base”, é utilizado para referenciar posições de memória, gerenciamento de tabelas, etc. Pode ser dividido em dois registradores de 8 bits com acesso independente: BH, o byte mais significativo, e BL, o byte menos significativo. CX: conhecido como “contador”, é utilizado como índice em operações de repetição, podendo ser incrementado ou decrementado. Pode ser Microprocessador comercial: funcionamento e conjunto de instruções2 C08_Sistemas_Digitais.indd 2 23/08/2018 15:31:15 dividido em dois registradores de 8 bits com acesso independente: CH, o byte mais significativo, e CL, o byte menos significativo. O CL pode ser visto como um contador de 8 bits. DX: conhecido como “dados”, é utilizado em operações aritméticas e lógicas, em instruções de entrada/saída, conversões, etc. Pode ser dividido em dois registradores de 8 bits com entrada independente: DH, o byte mais significativo, e DL, o byte menos significativo. Em alguns casos, o DX é utilizado como uma extensão do AX para armazenar valores de 32 bits. Por exemplo, no caso de instrução de multiplicações, é possível armazenar um resultado de 32 bits pode meio de AX concatenado com DX. Outro exemplo é o caso de divisão em que o DX é utilizado para armazenar o resto da operação. Além disso, o DX também pode ser utilizado para especificar o endereço de portas de entrada/saída. PonteirosA unidade de execução possui quatro registradores de 16 bits que são utilizados como ponteiros para indicar algum local de uma memória específi ca ou o acesso aos dados no segmento da pilha. Veja a seguir. SP (Stack Pointer): é o apontador de pilha. É o índice que aponta para o topo da pilha utilizada para armazenar endereços da memória de programa quando o código é desviado a partir de uma interrupção ou uma chamada de função. BP (Base Pointer): é o apontador de base. É utilizado para endereça- mento de memória, indexando o endereço inicial de uma tabela que será manipulada pela CPU. Geralmente é utilizado em conjunto com a SS e permite acesso de dados dentro do segmento de pilha. SC (Source Index): é o índice fonte. É utilizado em conjunto com o DS para realizar endereçamento indireto, ou seja, pode apontar para a origem de dados que se deseja movimentar. DI (Destination Index): é o índice destino. É utilizado em conjunto com o ES para realizar endereçamento indireto, ou seja, pode apontar para o destino dos dados que serão movimentados. 3Microprocessador comercial: funcionamento e conjunto de instruções C08_Sistemas_Digitais.indd 3 23/08/2018 15:31:15 A utilização dos ponteiros SI e DI em conjunto facilita a movimentação de dados sequenciados entre posições fonte, indicadas por SI, e destino, indicadas por DI. Os ponteiros são muito utilizados em operações com strings. Registrador de estado ou flags Também conhecido como PSW (Program Status Word), possui um registrador de 16 bits, utilizado como bits individuais que indicam propriedades do sistema. Veja a organização do registrador de estado na Figura 1. Figura 1. Organização do registrador de estado. Fonte: Adaptada de Carvalho (2000, documento on-line). A seguir, você pode ver o significado das flags. X: não utilizado e geralmente inicializado como zero. OF (Overflow Flag): é o erro de transbordamento. Indica um estouro na capacidade de um registrador: ■ 1 = houve erro de transbordamento; ■ 0 = não houve erro de transbordamento. DF (Direction Flag): é a flag de direção. Indica a direção em que as operações com os registradores SI e DI estão sendo realizadas: ■ 1 = os registradores SI e DI estão sendo decrementados; ■ 0 = os registradores SI e DI estão sendo incrementados. IF (Interrupt Flag): é a flag de interrupção. Indica se as interrupções estão habilitadas: ■ 1 = interrupções habilitadas; ■ 0 = interrupções desabilitadas. TG (Trap Flag): é a armadilha. Utilizada para depuração de programas, colocando o chip em modo de debug: ■ 1 = indica que após a próxima instrução ocorrerá uma interrupção. A própria interrupção limpa essa flag; ■ 0 = caso contrário. Microprocessador comercial: funcionamento e conjunto de instruções4 C08_Sistemas_Digitais.indd 4 23/08/2018 15:31:15 SG (Sign Flag): é a flag de sinal. Indica se o resultado de uma operação é positivo ou negativo em termos de aritmética de complemento de 2 (a operação dessa flag é dependente de OF): ■ 1 = resultado negativo; ■ 0 = resultado positivo. ZF (Zero Flag): é a flag de zero. Indica se o resultado da última operação lógica ou aritmética é igual a zero: ■ 1 = igual a zero; ■ 0 = diferente de zero. AF (Auxiliar Carry Flag): é a flag de carry auxiliar. Utilizada em instruções com códigos BCD: ■ 1 = quando ocorre um carry ou “vai um” do bit 3 para o bit 4 em uma operação de soma, ou o não empréstimo do bit 4 para o bit 3 em uma subtração; ■ 0 = caso contrário. PF (Parity Flag): é a flag de paridade. Indica um número par de números 1 no byte inferior do resultado de alguma operação lógica ou aritmética: ■ 1 = número par; ■ 0 = número ímpar. CF (Carry Flag): é a flag de “vai um”. Indica que em uma operação de soma ou subtração sobrou um bit. Na soma, o bit é definido como “vai um”; na subtração, como “empréstimo”. Também é utilizada em algumas instruções de rotação e deslocamento, quando o último bit do registrador possui nível lógico 1: ■ 1 = nível lógico do bit sobrando deve ser tratado; ■ 0 = não houve necessidade de tratamento na operação. Unidade de interface de barramento Essa unidade faz a intermediação entre a EU e os barramentos de dados e de endereços do meio externo. Além disso, é capaz de controlar a transmissão de sinais de endereços, dados e controle, gerenciando a sequência de busca e execução de instruções. Para isso, é composta por cinco registradores de 16 bits, uma fi la de armazenamento de até 4 bytes de instruções e um sistema que faz o endereçamento de 20 bits a partir de registradores de 16 bits. Você pode conhecer melhor tais recursos a seguir. 5Microprocessador comercial: funcionamento e conjunto de instruções C08_Sistemas_Digitais.indd 5 23/08/2018 15:31:15 Registradores de segmentos São registradores de 16 bits utilizados para endereçamento de memória, tanto para instruções quanto para dados e pilhas. Os segmentos são blocos de me- mória endereçáveis de 64 Kbytes. Durante a execução de um procedimento, há ao menos quatro segmentos ativos, descritos a seguir. CS (Code Segment): é o segmento de código. Endereça o segmento onde estão as instruções que serão executadas pela CPU. SS (Stack Segment): é o segmento de pilha. Endereça o segmento reservado à pilha para gerenciamento de chamadas de sistema. DS (Data Segment): é o segmento de dados. Endereça o segmento onde estão os dados que são manipulados pela CPU. ES (Extra Segment): é o segmento de dados extras. Endereça um seg- mento extra para dados. É geralmente utilizado para manipulação de tabelas e strings. Ponteiros Essa unidade possui um registrador de 16 bits dedicado a trabalhar junto ao program counter. IP (Instruction Pointer): é o ponteiro de instruções. É utilizado em conjunto com o CS para saber o endereço da próxima instrução a ser executada. É automaticamente incrementado em função do tamanho em bytes da instrução executada, de modo a apontar sempre para a instrução seguinte. Fila de instruções Essa unidade possui uma fi la com seis registradores de 16 bits para armazenar instruções que serão executadas pela CPU. É esse recurso que permite o pipeline durante a execução do programa. Unidade de geração de endereços É uma unidade que transforma os endereços contidos nos registradores de segmentos de 16 bits em valores de 20 bits. Esse circuito faz a interface entre os circuitos internos e externos do sistema. Microprocessador comercial: funcionamento e conjunto de instruções6 C08_Sistemas_Digitais.indd 6 23/08/2018 15:31:16 Dinâmica do barramento multiplexado A BIU realiza a interface entre os sinais de dados, endereços e controle in- ternos e os periféricos externos ao componente. Porém, para trabalhar com uma quantidade de pinos reduzida, o Intel 8086 possui um barramento que utiliza os mesmos pinos para endereço e dados. Para entender melhor como funciona o barramento multiplexado, você deve primeiro observar quais são os pinos disponíveis para essa função. Na Figura 2, a seguir, você pode ver a disposição física dos pinos. Figura 2. Pinos do Intel 8086. Fonte: Adaptada de Intel (1990, documento on-line). Pinos de dados e endereços do barramento multiplexado Os pinos de dados e endereços são compartilhados para enviar e receber informações conforme a confi guração do pino ALE. 7Microprocessador comercial: funcionamento e conjunto de instruções C08_Sistemas_Digitais.indd 7 23/08/2018 15:31:16 AD15 – AD0: esses pinos são o barramento multiplexado propriamente dito. Eles integram os 16 bits que transportam os dados e os endereços. A19 – A16: esses pinos transportam os 4 bits restantes do endereço. Porém, eles têm uma segunda função: indicar o status em algumas operações. : transporta um sinal que indica que os dados contidos nos 8 bits mais significativos do barramento são dados válidos. Pino Esse pino tem a importante função de defi nir o modo de operação do proces- sador.Existem dois modos de operação, como você pode ver a seguir. Modo mínimo: o processador gera todos os sinais de controle para o barramento multiplexado (HLDA, WR, M/IO, DT/R, DEN, ALE e INTA), além de possuir uma entrada de controle denominada HOLD. Você vai conhecer melhor todos esses sinais de controle adiante. Modo máximo: o processador não gera os sinais de controle, que devem ser gerados por outro processador que trabalha em conjunto. Ou seja, esse modo é utilizado para sistemas que contam com coprocessadores. Pinos de controle Os pinos de controle servem para gerenciar as operações realizadas por dis- positivos externos. Cada pino possui funções específi cas, descritas a seguir. QS0 (ALE) No modo mínimo, assume o address latch enable (endereço habilitado). Já no modo máximo, representa queue status 0 (estado da fi la 0). Modo mínimo: ■ ALE = 1 — indica que o barramento multiplexado está sendo usado para transportar um endereço; ■ ALE = 0 — caso contrário. Modo máximo: ■ QS0 — é utilizado junto ao QS1 para indicar o estado da fila em bytes na entrada da EU. Microprocessador comercial: funcionamento e conjunto de instruções8 C08_Sistemas_Digitais.indd 8 23/08/2018 15:31:16 No modo mínimo, assume o data transmit/receive (transmissão e recepção de dados). Já no modo máximo, representa a linha de status S1. Modo mínimo: ■ = 1 — indica que o processador está transmitindo dados; ■ = 0 — indica que o processador está recebendo dados. Modo máximo: ■ — é utilizado junto ao e ao para indicar qual operação está sendo executada. No modo mínimo, assume o write (escrita). Já no modo máximo, representa locked (trancado). Modo mínimo: ■ = 1 — caso contrário; ■ = 0 — indica que o processador está executando uma operação de escrita. Modo máximo: ■ = 1 — caso contrário; ■ = 0 — indica que outros processadores não devem tentar tomar o barramento de sistema pois o 8086 não atenderá a uma solicitação HOLD. No modo mínimo, assume o memory/InputOutput (memória/EntradaSaída). Já no modo máximo, representa a linha de status S2. Modo mínimo: ■ = 1 — indica que as linhas de endereço se referem ao espaço de endereçamento de memória; ■ = 0 — indica que as linhas de endereço se referem ao espaço de endereçamento de I/O. Modo máximo: 9Microprocessador comercial: funcionamento e conjunto de instruções C08_Sistemas_Digitais.indd 9 23/08/2018 15:31:16 ■ — é utilizado junto ao e ao para indicar qual operação está sendo executada. No modo mínimo, assume o data enable (dados habilitados). Já no modo máximo, representa a linha de status S0. Modo mínimo: ■ — indica que o barramento está sendo utilizado para transportar dados ou status. Modo máximo: ■ — é utilizado junto ao e ao para indicar qual operação está sendo executada. RD Conhecido como read (leitura), indica que o processador está executando uma operação de leitura. READY Em português, ready signifi ca “pronto”. Indica que o processador já pode concluir uma operação de leitura ou escrita. Pode ser usado para solicitar à CPU um tempo de espera para executar toda a operação. Os barramentos são normalmente utilizados para interconectar vários periféricos, oferecendo assim uma carga considerável. As CPUs são projetadas para fornecer, pelo barramento, um tipo de sinal específico, não possuindo alta capacidade de corrente. Logo, para suportar as intercomunicações entre dispositivos, são necessários ampli- ficadores de correntes intermediários denominados drivers, que fornecem a corrente necessária para a CPU entregar seus sinais ao barramento, e receivers, utilizados para retirar os sinais do barramento. Para linhas bidirecionais, são utilizados um driver e um receiver, conjunto denominado transceiver. Microprocessador comercial: funcionamento e conjunto de instruções10 C08_Sistemas_Digitais.indd 10 23/08/2018 15:31:16 Pinos de arbitragem do barramento Os pinos de controle servem para gerenciar as operações realizadas por dis- positivos externos. Cada pino possui funções específi cas, como você pode ver a seguir. RQ0/GT0 (HOLD) No modo mínimo, assume o hold (manter) e permite que um periférico controle o barramento. Quando habilitado, todos os sinais de controle são confi gurados como alta impedância. Já no modo máximo, representa request/grant (solicitar/ conceder) e funciona de forma bidirecional, com a função de conceder ou solicitar o controle do barramento. RQ1/GT1 (HLDA) No modo mínimo, apresenta a resposta para a solicitação de HOLD. Já no modo máximo, representa request/grant (solicitar/conceder) e funciona de forma bidirecional, com a função de conceder ou solicitar o controle do barramento. Além dos pinos de controle do barramento multiplexado, existem alguns poucos que não foram devidamente apre- sentados nesta seção. O datasheet do microprocessador Intel 8086 apresenta todos os elementos descritos de forma sucinta e prática. Vale a pena conferir no link ou código a seguir. https://goo.gl/Nkga2c Microinstruções assembly A microinstrução do Intel 8086 é baseada em arquitetura CISC, como você já viu. Dessa forma, as microinstruções podem assumir tamanhos variados. A seguir, você vai conhecer alguns detalhes da programação em linguagem de montagem do 8086. 11Microprocessador comercial: funcionamento e conjunto de instruções C08_Sistemas_Digitais.indd 11 23/08/2018 15:31:17 Sintaxe assembly Alguns pontos são importantes para um melhor entendimento durante a exe- cução de programas em linguagem assembly. Veja: A linguagem assembly não é case-sensitive, ou seja, não diferencia letra maiúscula de letra minúscula. Uma sugestão para os códigos é usar letra maiúscula para o código e letra minúscula para os comentários. As instruções, que serão definidas a seguir, com seus respectivos mne- mônicos e operandos, são convertidas por meio de seus opcodes (códigos de operações) para linguagem de máquina. As diretivas são auxiliares de organização. São utilizadas pelo com- pilador e auxiliam na montagem, sempre realizando alguma tarefa específica, tal como: alocar espaços de memória, criar sub-rotinas, definir valores fixos, etc. Uma linha de comentário é iniciada com “;” e é utilizada para docu- mentação durante um código. É importante inserir comentários sucintos que auxiliem, posteriormente, na manutenção dos algoritmos. A declaração de uma instrução pode assumir diferentes formatos e, as- sumindo diferentes formatos, pode ser utilizada com objetivos distintos. O formato base para a declaração é: [LABEL:] [MNEMÔNICO] [OPERANDOS] [; comentário] A label (rótulo) é utilizada para a organização do código, e o montador a traduzirá posteriormente para um endereço de memória de programa. Os operandos podem assumir zero, um ou dois valores distintos, conforme o mnemônico utilizado. É esse detalhe que torna o assembly com tamanhos de opcodes variados. NOP ; sem operandos: não realiza nada. DEC DX ; um operando: decrementa 1 de DX. SUB DX, 8d ; dois operandos: subtrai 8 de DX e guarda o resultado em DX. Microprocessador comercial: funcionamento e conjunto de instruções12 C08_Sistemas_Digitais.indd 12 23/08/2018 15:31:17 Já os mnemônicos são os códigos dos operadores, ou as microinstruções possíveis contidas no papel de dados do microprocessador. Tal linguagem de montagem está subdividida, no Intel 8086, em seis grupos principais: transferência de dados, funções aritméticas, funções lógicas, manipulação de strings, controle de fluxo e controle de processador. Você pode conhecer melhor os grupos a seguir. Transferência de dados Utilizada para a manipulação de dados durante um procedimento, como mover, desempilhar, carregar, etc. Estrutura: MOV DESTINO, FONTE MOV D0, D1 ; move o valor contido na variável D1 para a variável D0. MOV DX, Ah ; move o valor decimal 10 para o registrador DX. Funções aritméticas São responsáveis por realizar a matemáticacom registradores. Usualmente, em mi- croprocessadores estão disponíveis operações matemáticas com números binários. Estrutura: ADD DESTINO, FONTE ADD D0, D1 ; soma o valor contido na variável D1 à variável D0 e guarda o resultado ; em D0. ADD DX, Fh ; soma o valor decimal 15 ao registrador DX e guarda em DX. 13Microprocessador comercial: funcionamento e conjunto de instruções C08_Sistemas_Digitais.indd 13 23/08/2018 15:31:17 Funções lógicas São operações lógicas realizadas entre registradores. É importante tomar cui- dado, pois tais operações são realizadas bit a bit com os valores de registradores. Estrutura: NOT REGISTRADOR NOT D0 ; inverte o valor contido no registrador D0. Manipulação de strings São instruções dedicadas à manipulação de strings. Essas instruções são interligadas diretamente com os registradores de segmentos apresentados no item BIU. Estrutura: MOVS MOVSB ; move um byte do segmento [DS:SI] para o segmento [ES:DI]. MOVSW ; move uma word do segmento [DS:SI] para o segmento [ES:DI]. Microprocessador comercial: funcionamento e conjunto de instruções14 C08_Sistemas_Digitais.indd 14 23/08/2018 15:31:17 Controle de fluxo Tais instruções geralmente manipulam o program counter do processador. Servem para gerenciar o fl uxo do programa e realizar algumas estratégias de programação. Além disso, permitem a chamada de funções e o desvio da sequência natural da execução do programa. Estrutura: JMP DESTINO JMP LABEL ; pula para o endereço de memória de programa contido em label. JMP 00h ; pula para o vetor de reset (endereço 00h) do microprocessador. Controle de processador Realiza algumas funções especiais para o gerenciamento do processador. Estrutura: CLC CLC ; essa instrução limpa a flag carry. Para programar em assembly, é importante conhecer todas as microins- truções do microprocessador em uso. Para isso, acesse a folha de dados do dispositivo e procure pelo descritivo de microinstruções para conhecer o restante das instruções. 15Microprocessador comercial: funcionamento e conjunto de instruções C08_Sistemas_Digitais.indd 15 23/08/2018 15:31:17 Microprocessador comercial: funcionamento e conjunto de instruções16 C08_Sistemas_Digitais.indd 16 23/08/2018 15:31:17 CARVALHO, M. B. Os microprocessadores 8086/88: hardware. [2000?]. Disponível em: <http://www.telecom.uff.br/orgarqcomp/Slides/OrgComp_pt3_Hardware_8086. pdf>. Acesso em: 21 ago. 2018. INTEL. 8086 16-BIT HMOS microprocessor 8086/8086-2/8086-1. 1990. Disponível em: <https://pt.scribd.com/document/21242899/8086-Datasheet>. Acesso em: 22 ago. 2018. Leituras recomendadas BARRETTO, M. Microprocessadores. 2000. Disponível em: <http://engeletrica.sobral. ufc.br/professores/marcelo/Micro/Apostila_Microprocessadores.pdf>. Acesso em: 22 ago. 2018. INTEL. 4004 single chip 4-BIT P-channel microprocessor. 1987. Disponível em: <http:// www.applelogic.org/files/4004Data.pdf>. Acesso em: 22 ago. 2018. PANNAIN, R. Arquitetura do microprocessador 8086. [2000]. Disponível em: <http://www. ic.unicamp.br/~pannain/mc404/aulas/pdfs/OBCLM2.pdf>. Acesso em: 22 ago. 2018. WEBER, R. F. Fundamentos da arquitetura de computadores. 4. ed. Porto Alegre: Book- man, 2012. DICA DO PROFESSOR Uma das funções da unidade de interface de barramentos é gerar os endereços de 20 bits, de acordo com a instrução a ser executada. Para cada tipo de instrução, o endereço é gerado de uma forma distinta e utiliza sempre registradores especiais, tais quais os que já foram vistos até o momento. Na Dica do Professor, você vai encontrar, de forma detalhada, como a BIU processa cada tipo de instrução e cria os endereços de 20 bits para serem utilizados pelo sistema. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) Sabendo-se que VAR1 e VAR2 são variáveis de 32 bits contidas nos endereços de memória [1024:1026] e [1028:1030], respectivamente, qual o valor contido nos endereços de memória [1032:1030], em decimal, no fim do trecho apresentado abaixo? MOV 1026, FFh MOV 1024, A2h MOV 1030, 0Ah MOV 1028, F1h MOV R0,1026 ADD R0,1030 MOV 1034, R0 MOV R0, 00h ADC R0 ADD R0, 1024 ADD R0, 1028 MOV 1032, R0 HLT A) 68243. B) 245. C) 16452. D) 68350. E) 68255. 2) Sobre prefetch, analise as seguintes afirmações e assinale a correta: A) Acontece quando o microprocessador faz tratamento prévio de dados. B) É a prática de buscar informações pré-definidas. C) É realizada pela EU, de forma que, quando a CPU se encontra ocupada, a EU empilha instruções que serão posteriormente executadas. D) Por serem (a EU e a BIU) independentes entre si, é possível que a BIU realize o barramento externo para efetuar buscas prévias de instruções. Essa prática é denominada prefetch. E) A fila utilizada para prefetch é conhecida como memória cache. 3) Sobre a dinâmica de trabalho do barramento multiplexado, assinale a alternativa correta:. A) O mesmo barramento pode ser utilizado para enviar e receber dados para os periféricos externos, mas não para trabalhar com endereços. B) O mesmo barramento pode ser utilizado para enviar e receber endereços para os periféricos externos, mas não para trabalhar com dados. C) O mesmo barramento pode ser utilizado para enviar e receber dados e endereços para os periféricos externos, devendo, os sinais de controle, ser realizados de forma independente ao barramento. D) O barramento multiplexado é utilizado para dados e endereços, além de possuir pinos de controle para funções de coprocessamento. E) O barramento multiplexado serve para alimentação elétrica do microprocessador. 4) Sobre a Unidade de Execução (EU), analise as seguintes alternativas e assinale a correta: A) É na EU que está presente a ULA (Unidade Lógica e Aritmética), responsável por todo o gerenciamento dos periféricos. B) A EU apresenta registradores de segmentos que são utilizados como auxiliares em operações aritméticas. C) A ULA (Unidade Lógica e Aritmética) é responsável por executar algumas instruções, além de fazer acesso a flags de estado. D) O barramento principal da EU possui 20 bits e serve para trocar dados com dispositivos externos. E) A EU é totalmente dependente da BIU e sempre fica ociosa, aguardando que esta forneça a próxima instrução. Sobre a Unidade de Interface de Barramento (BIU), analise as seguintes alternativas 5) e assinale a correta: A) A BIU é responsável por gerar o endereço de 20 bits, a fim de fazer acesso à memória necessária para a execução de uma instrução. B) Os registradores de segmento são utilizados para armazenar dados de instruções que serão posteriormente executadas. C) O ponteiro de instrução aponta para a função previamente executada. Dessa forma, é possível realizar resgate de valores perdidos. D) Os registradores de uso geral fazem parte da BIU e servem como auxiliares na geração dos endereços de barramento. E) A BIU tem o objetivo de gerenciar a execução das instruções, fazendo sempre o controle de estados por meio de flags. NA PRÁTICA Na prática, os códigos geralmente são criados em linguagem C, por ser uma linguagem mais intuitiva e de fácil manipulação. Além disso, alguns ambientes de desenvolvimentos permitem que sejam criados programas mesclando-se a linguagem C com a linguagem assembly. É interessante que se analise como as instruções em C são compiladas em assembly em cada microcontrolador. Isso proporciona ao desenvolvedor melhor controle do dispositivo e ajuda a criar soluções mais eficientes. Apresenta-se, então, um trecho de código muito utilizado em linguagem C (laço de repetição FOR ) e como ele seria compilado para a linguagem assembly do Intel 8086. SAIBA + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Processador CISC e RISC Neste vídeo você verá a definição de processadores com arquitetura RISC e CISC, além de suas diferenças. Conteúdo interativodisponível na plataforma de ensino! Arquitetura do conjunto de instruções Assista, nesta aula, as definições e características de uma arquitetura do conjunto de instruções. Conteúdo interativo disponível na plataforma de ensino! Datasheet do microprocessador 80c86, da Intersil O datasheet mostra a disposição dos recursos do processador, assim como as instruções que podem ser utilizadas na confecção de códigos em assembly. Conteúdo interativo disponível na plataforma de ensino!
Compartilhar