CENTRO FEDERAL DE EDUÇÃO TECNOLÓGICA DE MINAS GERAIS         DEPARTAMENTO DE ENSINO DO SEGUNDO GRAU      COORDENAÇÃO DO CU...
Índice Analítico1. Introdução aos Computadores. __________________________________________________________ 5  1.1 O comput...
4. As Instruções do μPZ80________________________________________________________________ 43 4.1 Instruções de transferênc...
Índice de Instruções  ADC A,byte ___________________________50    LD (DE),A ____________________________ 57  ADC A,reg8 __...
CAPÍTULO 1.1. INTRODUÇÃO AOS COMPUTADORES.1.1 O computador.                                                               ...
Como podemos classificar os computadores? Isto vai depender dos critérios utilizados para tal. Se utili-zarmos tamanho e c...
1.2.1 O microprocessador.          Os vários blocos da Figura 1-4 podem ser classificados da seguinte forma:              ...
Dois registradores para uso como ponteiros para a memória de 16 bits cada - (registradores de índi-         ce IX e IY);  ...
Figura 1-7: Estrutura típica de um microcomputador de 8 bits.      Os termos microprocessador (μP) e microcontrolador e (μ...
Memória primária                           Memórias de leitura e escrita                                                  ...
DRAM (Dynamic RAM): Cada célula desta memória é construída por apenas um transistor MOS e de umpequeno capacitor, veja a F...
Memória Flash: Ou flash E2PROM, é uma variante da E2PROM, sua principal diferença refere-se ao fatode que ela não permite ...
1.3 Linguagens de programação.1.3.1 Linguagens de baixo nível.                                                            ...
em linguagem de máquina; certos números, porém, são substituídos por símbolos que são mais ilustrativos pa-ra o programado...
É neste contexto que se inserem as linguagens de alto                           Inícionível ou linguagens automáticas que ...
As três etapas a seguir: edição, compilação e depuração são, normalmente, repetidas várias vezes atéque se obtenha o progr...
1.4.2 Simulação e execução.       A etapa final do processo de elaboração de um programa consiste da verificação de seu fu...
CAPÍTULO 2.2. O PRIMEIRO PROGRAMA EM LINGUAGEM ASSEMBLY.     Neste capítulo iremos descrever em detalhes as etapas que com...
P2: Criar um programa que busque da memória os valores armazenados nas posições 1000h e 1001h,            some-os e, em se...
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Denny daniel collina   apostila de sitemas microprocessados
Upcoming SlideShare
Loading in …5
×

Denny daniel collina apostila de sitemas microprocessados

545
-1

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
545
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Denny daniel collina apostila de sitemas microprocessados

  1. 1. CENTRO FEDERAL DE EDUÇÃO TECNOLÓGICA DE MINAS GERAIS DEPARTAMENTO DE ENSINO DO SEGUNDO GRAU COORDENAÇÃO DO CURSO TÉCNICO DE ELETRÔNICA LABORATÓRIO DE SISTEMAS MICROPROCESSADOS I Introdução TeóricaJunho/2007 Prof. Denny Daniel Collina denny@deii.cefetmg.br
  2. 2. Índice Analítico1. Introdução aos Computadores. __________________________________________________________ 5 1.1 O computador. [07] [08] ____________________________________________________________ 5 1.2 Organização básica de um computador. [08] __________________________________________ 6 1.2.1 O microprocessador.______________________________________________________________ 7 1.2.2 Memórias. ______________________________________________________________________ 9 1.2.3 Tipos de memórias _______________________________________________________________ 9 1.2.3.1 RWM - Memórias de leitura e escrita. ____________________________________________ 10 1.2.3.2 ROM - Memórias apenas de leitura.______________________________________________ 11 1.2.4 Memórias de programa e de dados. _________________________________________________ 12 1.3 Linguagens de programação.________________________________________________________ 13 1.3.1 Linguagens de baixo nível. [10] ___________________________________________________ 13 1.3.2 Linguagens de alto nível. [01] ____________________________________________________ 14 1.4 Etapas da elaboração de um programa. [07] ___________________________________________ 15 1.4.1 Compilação e Link-edição. [04] ___________________________________________________ 16 1.4.2 Simulação e execução. ___________________________________________________________ 17 1.5 Questões de revisão._______________________________________________________________ 172. O primeiro programa em linguagem assembly. ____________________________________________ 19 2.1 Elaboração do fluxograma.__________________________________________________________ 19 2.2 A configuração básica do computador. _______________________________________________ 20 2.3 Editando o código fonte.____________________________________________________________ 22 2.3.1 Formatação. ____________________________________________________________________ 22 2.4 Executando o assembler. ___________________________________________________________ 23 2.5 Executando o linker. _______________________________________________________________ 26 2.6 Executando o simulador. ___________________________________________________________ 27 2.6.1 Área de Código. ________________________________________________________________ 28 2.6.2 Área dos Registradores. __________________________________________________________ 28 2.6.3 Área de Status do simulador. ______________________________________________________ 29 2.6.4 Pinos de interrupção. ____________________________________________________________ 30 2.6.5 Portas Paralelas. _______________________________________________________________ 30 2.6.6 Área de Dados. _________________________________________________________________ 30 2.6.7 Menu de Comandos._____________________________________________________________ 31 2.6.7.1 Dump. _____________________________________________________________________ 31 2.6.7.2 Help Simulation. _____________________________________________________________ 31 2.6.7.3 Patch Code. ________________________________________________________________ 32 2.6.7.4 Quit Exit. ___________________________________________________________________ 33 2.6.7.5 Reset. _____________________________________________________________________ 33 2.7 Simulando o programa._____________________________________________________________ 333. A linguagem assembly para o Z80. [10] ________________________________________________ 35 3.1 Labels. __________________________________________________________________________ 35 3.2 Mnemônicos ou códigos de operação. ________________________________________________ 36 3.3 Operandos._______________________________________________________________________ 36 3.3.1 Constantes numéricas. ___________________________________________________________ 36 3.3.2 Constantes de Caracteres. ________________________________________________________ 36 3.3.3 Operações com Constantes._______________________________________________________ 36 3.4 Comentários. _____________________________________________________________________ 37 3.5 Pseudo-instruções. ________________________________________________________________ 37 3.6 Cuidados ao se definir variáveis e constantes. _________________________________________ 40Índice. I
  3. 3. 4. As Instruções do μPZ80________________________________________________________________ 43 4.1 Instruções de transferência de 8 bits. _________________________________________________ 44 4.2 Instruções de transferência de 16 bits. ________________________________________________ 46 4.3 Instruções aritméticas e lógicas. _____________________________________________________ 49 4.3.1 Registrador de flags. _____________________________________________________________ 49 4.3.2 Operações aritméticas com operandos em 8 bits. _______________________________________ 51 4.3.3 Instruções de comparação. ________________________________________________________ 52 4.3.4 Operações com valores codificados em BCD.__________________________________________ 53 4.3.5 Operações aritméticas com operandos em 16 bits. ______________________________________ 54 4.3.6 Operações lógicas. ______________________________________________________________ 55 4.4 Modos de endereçamento. __________________________________________________________ 57 4.4.1.1 Endereçamento direto ou estendido.______________________________________________ 57 4.4.1.2 Endereçamento de registrador. __________________________________________________ 57 4.4.1.3 Endereçamento imediato e imediato estendido. _____________________________________ 57 4.4.1.4 Endereçamento relativo. _______________________________________________________ 58 4.4.1.5 Endereçamento indireto. _______________________________________________________ 58 4.4.2 Endereçamento indireto utilizando os pares BC e DE. ___________________________________ 59 4.4.3 Endereçamento indireto utilizando o par HL. ___________________________________________ 60 4.5 Instruções de desvio. _______________________________________________________________ 62 4.5.1 Instruções de desvio absoluto incondicional. ___________________________________________ 63 4.5.2 Instruções de desvio absoluto condicional. ____________________________________________ 63 4.5.3 Instruções de desvio relativo incondicional. ____________________________________________ 64 4.5.4 Instruções de desvio relativo condicional. _____________________________________________ 65 4.6 Instruções de subrotina e de pilha.____________________________________________________ 66 4.6.1 Instruções de subrotina.___________________________________________________________ 67 4.6.1.1 Chamada de subrotina incondicional. _____________________________________________ 67 4.6.1.2 Chamada de subrotina condicional. ______________________________________________ 68 4.6.1.3 Retorno de subrotina incondicional. ______________________________________________ 68 4.6.1.4 Retorno de subrotina condicional. ________________________________________________ 69 4.6.2 Instruções de pilha. ______________________________________________________________ 69 4.7 Instruções de rotação e deslocamento. ________________________________________________ 73 4.7.1 Instruções de rotação. ____________________________________________________________ 74 4.7.2 Instruções de deslocamento. _______________________________________________________ 77 4.8 Instruções de entrada e saída. _______________________________________________________ 77 4.9 Instruções de controle da CPU._______________________________________________________ 79A. O Código ASCII. ______________________________________________________________________ 81B. O Conjunto Completo de Instruções do Z80. ______________________________________________ 83 B.1 Instruções de Transferência de 8 bits._________________________________________________ 83 B.2 Instruções de Transferência de 16 bits.________________________________________________ 84 B.3 Instruções de Permuta, Transferência de blocos e Pesquisa de grupos. ____________________ 85 B.4 Instruções Aritméticas de 8 bits. _____________________________________________________ 86 B.5 Instruções Aritméticas de 16 bits. ____________________________________________________ 86 B.6 Instruções de propósito geral e de controle da CPU _____________________________________ 87 B.7 Instruções de Rotação e Deslocamento _______________________________________________ 87 B.8 Instruções de Manipulação de bit. ____________________________________________________ 88 B.9 Instruções de Entrada e Saída _______________________________________________________ 89 B.10 Instruções de Desvio ______________________________________________________________ 90 B.11 Instruções de Chamada e Retorno de subrotina. _______________________________________ 90C. Referências Bibliográficas._____________________________________________________________ 91Índice II
  4. 4. Índice de Instruções ADC A,byte ___________________________50 LD (DE),A ____________________________ 57 ADC A,reg8 ____________________________50 LD (end),A ___________________________ 43 ADC HL,reg16 __________________________53 LD (end),reg16 ________________________ 45 ADD A,(HL) ___________________________60 LD (HL), reg8 ________________________ 58 ADD A,byte ___________________________49 LD A,(BC) ____________________________ 57 ADD A,reg8 ____________________________49 LD A,(DE) ____________________________ 57 ADD HL,reg16 __________________________52 LD A,(end) ___________________________ 42 AND (HL) _____________________________58 LD reg,byte __________________________ 43 AND byte _____________________________54 LD reg16,(end) ________________________ 44 AND reg8 ______________________________54 LD reg16,dbyte ________________________ 44 BIT n,(HL) ___________________________58 LD reg8,(HL) _________________________ 58 CALL C,end ___________________________66 LD reg8,reg8’ _________________________ 42 CALL end _____________________________65 LD SP,reg16 ___________________________ 70 CALL M,end ___________________________66 NEG __________________________________ 50 CALL NC,end __________________________66 NOP __________________________________ 77 CALL NZ,end __________________________66 OR (HL) ______________________________ 58 CALL P,end ___________________________66 OR byte ______________________________ 54 CALL PE,end __________________________66 OR reg8 ______________________________ 54 CALL PO,end __________________________66 ORG __________________________________ 36 CALL Z,end ___________________________66 OUT (C),reg8 _________________________ 76 CCF __________________________________54 OUT (port),A _________________________ 76 CP (HL) ______________________________60 POP reg16 _____________________________ 69 CP byte ______________________________51 PUSH reg16 ____________________________ 68 CP reg8 _______________________________51 RES n,(HL) ___________________________ 58 CPL __________________________________53 RET __________________________________ 66 DAA __________________________________51 RET C ________________________________ 67 DB ___________________________________37 RET M ________________________________ 67 DCR reg8 ______________________________49 RET NC _______________________________ 67 DEC (HL) _____________________________58 RET NZ _______________________________ 67 DEC reg16 _____________________________53 RET P ________________________________ 67 DEFSEG _______________________________35 RET PE _______________________________ 67 DS ___________________________________38 RET PO _______________________________ 67 DW ___________________________________38 RET Z ________________________________ 67 END __________________________________35 RL (HL) ______________________________ 74 EQU __________________________________36 RL reg8 ______________________________ 74 EX (SP),reg16 _________________________71 RLA __________________________________ 72 EX AF,AF’ ____________________________46 RLC (HL) _____________________________ 73 EX DE,HL _____________________________45 RLC reg8 _____________________________ 73 EXX __________________________________46 RLCA _________________________________ 72 HALT _________________________________77 RR (HL) ______________________________ 74 IN A,(port) __________________________76 RR reg8 ______________________________ 74 IN reg8,(C) ___________________________76 RRA __________________________________ 73 INC (HL) _____________________________60 RRC (HL) _____________________________ 73 INC reg16 _____________________________53 RRC reg8 _____________________________ 73 INC reg8 ______________________________49 RRCA _________________________________ 72 JP (HL) ______________________________61 SBC A,(HL) ___________________________ 58 JP C,end _____________________________62 SBC A,byte ___________________________ 50 JP end _______________________________61 SBC A,reg8 ___________________________ 50 JP M,end _____________________________62 SBC HL,reg16 __________________________ 53 JP NC,end ____________________________62 SCF __________________________________ 55 JP NZ,end ____________________________62 SEG __________________________________ 36 JP P,end _____________________________61 SET n,(HL) ___________________________ 58 JP PE,end ____________________________62 SLA (HL) _____________________________ 75 JP PO,end ____________________________62 SLA reg8 _____________________________ 75 JP Z,end _____________________________62 SRA (HL) _____________________________ 75 JR C,ee ______________________________63 SRA reg8 _____________________________ 75 JR ee ________________________________63 SUB byte _____________________________ 49 JR NC,end ____________________________63 SUB reg8 _____________________________ 49 JR NZ,ee _____________________________63 XOR (HL) _____________________________ 60 JR Z,ee ______________________________63 XOR byte _____________________________ 54 LD (BC),A ____________________________57 XOR reg8 _____________________________ 54Índice. III
  5. 5. CAPÍTULO 1.1. INTRODUÇÃO AOS COMPUTADORES.1.1 O computador. [07] [08]1 Desde os primórdios de nossa era, o homem sempre se preocupou em desenvolver máquinas, fossemelas automáticas ou manuais. Tal preocupação tinha como objetivo minimizar esforços, o desgaste do agentehumano no trabalho e aumentar a produção. A primeira máquina que auxiliava na execução dos cálculos é oábaco e data de 500 a.c., veja a Figura 1-1. As primeiras máquinas eram formadas por engrenagens e correias e podem ser chamados de computa-dores mecânicos, veja um exemplo na Figura 1-2. Os computadores, como os conhecemos hoje em dia, sãona sua imensa maioria máquinas digitais que operam com informações binárias. Do que são capazes os computadores? Os com-putadores executam na maioria das vezes, as mesmastarefas que um humano pode executar, mas os compu-tadores podem fazê-lo com muito maior velocidade eprecisão. Isto devido ao fato de os computadores reali-zarem todos os seus cálculos e operações um passopor vez e de demandar uma pequena fração de tempopara executar cada passo. Ao contrário dos humanos, um computador nãopensa! Um computador necessita de um jogo completode instruções que lhe informem exatamente o que fazera cada passo para desenvolver suas tarefas. Este con-junto de instruções, chamado de programa, é preparadopor uma ou mais pessoas, e é diferente para cada tare- Figura 1-1: O ábaco, primeira máquina de calcular.fa a ser executada. Estes programas são colocados naunidade de memória do computador, em forma de códi-go binário, sendo que cada instrução possui um códigoúnico. O computador lê estes códigos da memória, umpor vez, interpreta-os e executa a operação correspon-dente. Seria impossível listar todas as aplicações doscomputadores. Em vez disso, iremos ver dois exemplos: Ciência e engenharia: Os cientistas e engenhei-ros usam a matemática como uma linguagem para defi-nir a operação dos sistemas físicos. Em muitos casos,as relações matemáticas são extremamente complexase devem ser calculadas para muitos valores diferentesdas variáveis do sistema. Um computador pode calcularestas complexas expressões matemáticas em altas ve-locidades. Além disso, ele pode executar cálculos repe-tidos usando diferentes tipos de dados, tabelar os resul-tados e determinar que conjuntos de valores produzem Figura 1-2: Máquina diferencial de Babbage (1822).os melhores resultados. Em muitos casos, um compu-tador pode poupar ao engenheiro horas, ou até mesmo dias, de cálculos tediosos, deixando, assim, mais tem-po livre para o trabalho criativo. Controle de processos: O tempo não é um fator crítico quando o computador é utilizado para processardados comerciais ou realizar cálculos de engenharia, no sentido de que os resultados não têm necessidadeimediata (isto é, dentro de alguns milisegundos ou segundos). Os computadores são, muitas vezes, usados emaplicações onde os resultados de seus cálculos são imediatamente necessários para serem utilizados no con-trole de um processo. Estas são chamadas de aplicações de tempo real. Um exemplo pode ser encontrado nocontrole de processos industriais, que é utilizado em fábricas de papel, refinarias de petróleo, etc.1 Os números entre colchetes indicam as referências bibliográficas utilizadas para a redação do tópico correspondente. A referência com- pleta pode ser consultada no final desta apostila.Introdução aos Computadores. 5
  6. 6. Como podemos classificar os computadores? Isto vai depender dos critérios utilizados para tal. Se utili-zarmos tamanho e capacidade de processamento, teremos: O microcomputador, é o menor e o mais novo membro da família dos computadores. Ele consiste, ge-ralmente, em vários CI’s, incluindo um chip microprocessador, CI’s de memória e dispositivos de entrada e saí-da. Os minicomputadores são maiores que os microcomputadores e têm preços bem mais elevados. Os mi-nis são largamente utilizados em sistemas de controle industrial, em aplicações científicas nos laboratórios depesquisa, e em aplicações comerciais para pequenos negócios. Seu uso ainda ocorre, mas está recebendoboa concorrência dos microcomputadores que têm apresentado significativo crescimento na velocidade e ca-pacidade de processamento. Os maiores computadores, chamados de mainframes são aqueles encontrados em grandes companhias,bancos, universidades, etc. Eles podem chegar a custar vários milhares dólares. As aplicações dos mainframesvariam da resolução de problemas científicos de engenharia complexos até aplicações comerciais orientadaspara dados, onde a ênfase está na manutenção e atualização de grande quantidade de dados e informações.1.2 Organização básica de um computador. [08] Quais os elementos essenciais para se compor um computador? São quatro os elementos essenciais: aunidade central de processamento, a unidade de memória e as unidades de entrada e saída. A interligaçãodestas unidades pode ser vista na Figura 1-3. Unidade de Unidade de U. C. P. Entrada Saída Do mundo Para o exterior mundo exterior Memória Figura 1-3: Organização básica de um computador. A Unidade Central de Processamento (UCP) é a composição da Unidade Lógica-Aritmética (ULA), da u-nidade de Controle e de um conjunto de registradores que normalmente são implementados em um único chip,o microprocessador (μP). A Unidade de Controle dirige a operação de todas as outras unidades, fornecendo sinais de tempori- zação e de controle. De certa forma, a unidade de controle é como o dirigente de uma orquestra, que é o responsável por manter cada um dos membros da orquestra na sincronização correta. A Unidade Lógica-Aritmética (ULA) é a área do computador onde são realizadas as operações, arit- méticas e lógicas, com os dados. O tipo de operação a ser executada é determinado pela unidade de controle. Os operandos poderão vir tanto da unidade de memória como da unidade de entrada. A Unidade de Memória (memória primária ou memória do sistema) armazena grupos de dígitos binários(palavras) que podem representar ou instruções (programa) que o computador deverá executar, ou dados a se-rem operados pelo programa. A memória serve também para o armazenamento de resultados intermediários efinais das várias operações. Dentro desta unidade podemos destacar três subgrupos: memórias da famíliaRAM, da família ROM, e registradores. A Unidade de Entrada é composta por todos os dispositivos utilizados para receber informações e dadosque são externos ao computador, e introduzi-los nas unidades de memória ou na ULA. Alguns dispositivos deentrada básicos são: teclados, botões, leitoras de fita, unidades de disco flexível, conversores analógicos-digitais (ADC’s), etc. A Unidade de Saída é composta pelos dispositivos utilizados para transferir dados e informações docomputador para o “mundo exterior”. Exemplos de unidades de saída: displays, indicadores luminosos, im-pressoras, monitores de vídeo, conversores digitais-analógicos (DAC’s), etc.6 Capítulo 1.
  7. 7. 1.2.1 O microprocessador. Os vários blocos da Figura 1-4 podem ser classificados da seguinte forma: Conjunto de registradores de armazenamento e de entrada/saída (E/S); Unidade Lógico-aritmética; Unidades de controle e temporização (incluindo o controle de interrupção), Lógica de decodificação e Barramentos. Figura 1-4: Diagrama em blocos simplificado do Z80. Figura 1-5: Foto do chip Z80 CPU e o detalhamento de sua pinagem. Neste momento, podemos utilizar um diagrama mais simplificado composto apenas do conjunto reduzi-do2 de registradores, como apresentado na Figura 1-6. Sua arquitetura de registradores, em uma abordagem simplificada, pode ser apresentada como compos-ta por 20 registradores: Um contador de programa (PC) de 16 bits;2 Há, ainda, os registradores de 8 bits: I(interrupt vector) e R(refresh register) que não serão abordados neste curso.Introdução aos Computadores. 7
  8. 8. Dois registradores para uso como ponteiros para a memória de 16 bits cada - (registradores de índi- ce IX e IY); Um registrador de 16 bits para uso como ponteiro de pilha - registrador stack pointer (registrador SP); Um registrador de 8 bits para execução da maioria das operações aritméticas, lógicas, etc., - o acu- mulador (registrador A); Um registrador indicador de estado de 8 bits, dos quais apenas 6 são utilizados - registrador de flags ou registrador de estado (registrador F); E mais 6 registradores de 8 bits, chamados registradores de propósito geral - B, C, D, E, H, L. Estes registradores podem, também, ser utilizados ao pares (BC, DE, HL) transformando-se em 3 registra- dores de 16 bits; E, por fim mais 8 registradores denominados conjunto alternativo: A’, F’, B’, C’, D’, E’, H’, L’ que permutam seus valores com o acumulador, o registrador de flags e os registradores de propósito ge- ral. μP Z80 16 bits PC SP IX IY 8 bits A F A’ F’ B C B’ C’ D E D’ E’ H L H’ L’ Figura 1-6: Arquitetura de registradores do μP Z80. Todos os microcomputadores, apesar de variarem em sua arquitetura, têm um elemento em comum - apastilha do microprocessador. Como sabemos, o μP funciona como a unidade central de processamento domicrocomputador. Em essência, o μP é o coração do microcomputador, pois suas características definem ascaracterísticas do microcomputador. Sua velocidade determina a velocidade máxima do microcomputador, eseus pinos de controle determinam o tipo de interfaceamento de dispositivos de entrada e saída (E/S ou I/O)que poderá ser utilizado. O μP executa grande número de funções incluindo: Provê os sinais de controle e temporização para todos os elementos do microcomputador; Busca instruções e dados na memória; Transfere dados de e para os dispositivos de E/S; Decodifica instruções; Executa operações aritméticas e lógicas determinadas por instruções; Responde a sinais de controle gerados pelos dispositivos de E/S; etc. O μP contém todos os circuitos lógicos para executar estas funções, mas devemos ter em mente queuma grande parte da lógica interna do μP não é acessível externamente. Os elementos internos do μP são a-cessíveis por software, isto significa que podemos trabalhar com os circuitos internos do μP apenas com a exe-cução do programa colocado na memória. Isto é que torna o μP tão versátil e flexível - quando quisermos modi-ficar a operação do μP, simplesmente modificamos o programa. A organização básica de um computador, apresentada anteriormente (Figura 1-3), agora pode ser me-lhor representada com a presença do μP. Na Figura 1-7 podemos observar a interligação do μP com os demaiscomponentes.8 Capítulo 1.
  9. 9. Figura 1-7: Estrutura típica de um microcomputador de 8 bits. Os termos microprocessador (μP) e microcontrolador e (μC) costumam ser objeto de confusão por aque-les que estão sendo apresentados a esta área do conhecimento. Como pudemos ver acima o microprocessa-dor cumpre a função da unidade central de processamento (UCP) em microcomputador. Para o caso do microcontrolador, a definição mais simples é: o computador incluso em um único chip(single chip computer). Portanto, em um chip microcontrolador teremos não só a UCP, como os dispositivos deentrada e saída, e as memórias RAM e ROM. Os pinos do chip dão acesso apenas aos dispositivos de E/S e aalguns pinos de controle, clock e alimentação. Veja a Figura 1-8. Unidade de U. C. P. Unidade de Entrada Saída Do mundo exterior Para o mundo exterior +V GND CLK Memória RAM + ROM Microcontrolador Figura 1-8: Diagrama em blocos de um microcontrolador.1.2.2 Memórias.1.2.3 Tipos de memórias Um sistema microprocessado pode dispor de dois tipos de memória: primária (do sistema ou principal) esecundária (de massa ou de armazenamento). A memória primária é constituída por células de armazenamento baseadas em semicondutores3. Há du-as características importantes que permitem subdividir este grupo: a possibilidade de alterar as informaçõesarmazenadas e a sua volatilidade.3 No passado utilizou-se memórias primárias baseadas em materiais magnéticos: ferrite ou memória de ferrite, que foi substituída pelas memórias de semicondutores por apresentarem tamanho bastante reduzido.Introdução aos Computadores. 9
  10. 10. Memória primária Memórias de leitura e escrita Memórias apenas de leitura (RWM) (ROM) RAM estática RAM dinâmica Memórias permanentes Memórias apagáveis (SRAM) (DRAM) RAM não volátil RAM dinâmica integrada ROM Mascarável ROM Programável e Apagável (NVRAM) (iRAM) (Masked ROM) (EPROM) ROM Programável ROM Programável e Apagável (PROM) Eletricamente (EEPROM) Memória Flash Figura 1-9: Classificação das memórias primárias. As memórias que compõem este grupo que permitem a alteração das informações nelas armazenadassão denominadas memórias de leitura e escrita (RWM), que são mais conhecidas por outra sigla (RAM). Asque não permitem alteração são memórias apenas de leitura (ROM). As memórias podem ser voláteis, ou seja, após o desligamento da energia a informação é perdida, ouentão, podem ser não voláteis. A maioria das RAMs é volátil enquanto que todas as ROMs são não voláteis. Estas características nos permitem agrupar os vários tipos de memórias semicondutoras de acordo coma Figura 1-9. A memória secundária é constituída por dispositivos de armazenamento magnéticos ou óticos, como dis-cos flexíveis, discos rígidos (HDs), fitas e CD-ROMs, etc. Estes possuem capacidade de armazenamento mui-to maior que as memórias semicondutoras e não são voláteis. A maioria permite a leitura e a escrita, enquantoalguns, apenas a leitura. Neste curso nos concentraremos nas memórias primárias, que são essenciais em qualquer sistema mi-croprocessado. Vejamos uma breve descrição das memórias apresentadas na Figura 1-9.1.2.3.1 RWM - Memórias de leitura e escrita. As memórias que têm estas características são as RAMs que na sua maioria têm, também, uma outracaracterística muito importante: são voláteis. Destacamos alguns tipos dos vários existentes para serem apre-sentadas neste subgrupo: SRAM (Static Random Access Memory): Esta memória é constituída por células compostas por flip-flops,ou biestáveis. Cada flip-flop necessita de 6 transistores na sua construção, o que a faz ter um baixo nível de in-tegração, mas alta velocidade de acesso (veja a Figura 1-10). Esta memória é mais cara e consome mais e-nergia do que as RAMs dinâmicas (veja a descrição abaixo). NVRAM (Non volatile RAM): Encontramos duas possíveis implementações com esta designação: A primeira é composta de um arranjo com uma RAM estática, com uma EEPROM (veja descrição abaixo) e circuitos monitores de tensão. Logo após o ligamento os dados são copiados da EEPROM para a RAM e durante o seu funcionamento são lidos e gravados na RAM. Quando a tensão de ali- mentação cai abaixo de certo valor os dados são copiados da RAM para a EEPROM, evitando assim que sejam perdidos. A segunda é conhecida como ZeroPower NVRAM: É uma memória que, em um mesmo encapsula- mento, contem uma RAM estática construída com tecnologia CMOS (baixo consumo), uma bateria de lítio e circuitos monitores de tensão. Quando a alimentação externa cai abaixo de 3 V, o circuito moni- tor de tensão comuta alimentação da RAM para a bateria, mantendo os dados.10 Capítulo 1.
  11. 11. DRAM (Dynamic RAM): Cada célula desta memória é construída por apenas um transistor MOS e de umpequeno capacitor, veja a Figura 1-11. O armazenamento dos níveis lógicos de um bit ocorre sob a forma deníveis diferentes de carga do capacitor intrínseco ao circuito. A vantagem deste tipo de memória reside no fatode ter o número reduzido de componentes por célula, o que traz um grau de integração bastante elevado, alémde ter um consumo bastante reduzido e preço bem inferior, se comparado com o de uma RAM estática equiva-lente. Há uma desvantagem: o capacitor se descarrega rapidamente, levando a perda da informação se elenão for recarregado a tempo. Este processo é chamado de refresh e deve ser executado em intervalos de al-guns milisegundos. Isto faz com que seja necessário adicionar circuitos ao sistema para desempenhar esta ta-refa. Em função disto este tipo de memória passa a ser economicamente recomendável em sistemas, acima deuma certa capacidade de armazenamento. Para sistemas pequenos a RAM estática é a recomendada. Figura 1-10: Diagrama de uma célula de memória Figura 1-11: Diagrama de uma célula de memória RAM estática. RAM dinâmica. iRAM (Integrated RAM): Este é um tipo de memória RAM dinâmica onde o circuito de refresh já está dis-ponível dentro do mesmo encapsulamento da memória. Para o usuário ela funciona de forma similar à RAM di-nâmica, sem apresentar o inconveniente de ter que adicionar circuitos para efetuar a tarefa de refresh.1.2.3.2 ROM - Memórias apenas de leitura. Este subgrupo das memórias tem outra característica muito importante além da descrita no título. Todasas ROMs são não voláteis, isto quer dizer que o padrão de bits gravados na memória é permanente, não podeser alterado. ROM de máscara (Masked Read Only Memory): Neste tipo de memória a informação nela contida é gra-vada durante o processo de fabricação, que tem uma de suas etapas denominada mascaramento. Este tipo dememória só é adquirido através de encomenda direta ao fabricante e os lotes mínimos são de alguns milharesde unidades. É utilizada em equipamentos com programa já testado e aprovado e produzidos em larga escala,pois em grandes quantidades apresenta o custo mais baixo dos vários tipos de ROM. PROM (Programmable ROM): Este tipo de memória é encontrada no comércio, e vem totalmente apa-gada. O usuário pode, através de equipamento adequado, efetuar sua programação. Uma vez programada nãopode ser apagada e poder ser considerada como uma ROM. Normalmente é utilizada em equipamentos cujoprograma já foi testado e aprovado, mas que não têm um volume de produção para justificar a encomenda deROM de máscara. Outra sigla para este tipo de memória é OTPROM (One time programmable ROM) EPROM (Erasable PROM): É uma memória que em função de sua tecnologia de construção, diferenteda ROM e da PROM, tem a vantagem de poder ser apagada, se necessário. Isto se faz através da exposiçãoda pastilha à luz ultravioleta durante um intervalo que pode variar de 15 a 30 minutos4. O processo de apaga-mento é feito com o componente fora do circuito e todo o chip é apagado. Em função da necessidade de seexpor o chip à luz, o encapsulamento de uma EPROM é construído em cerâmica e dotado de uma janela dequartzo. Estes dois materiais colaboram para o seu alto custo. EEPROM (Electrically Erasable PROM): Este tipo de memória foi desenvolvida para suplantar algumasdesvantagens das EPROMs: necessidade da retirada do chip do circuito para o apagamento completo parapermitir a regravação, longo tempo de apagamento. A E2PROM é uma memória que pode ser gravada e regra-vada eletricamente palavra por palavra. Se necessário, o chip pode ser todo apagado em alguns milisegundos.É possível reprogramar o chip no próprio circuito, desde que o sistema tenha sido projetado para tal. O seucusto é superior ao de uma EPROM.4 É bastante difícil de precisar o tempo, pois ele é função da intensidade luminosa emitida pela lâmpada, da distância do chip à lâmpada e da tecnologia de fabricação do componente.Introdução aos Computadores. 11
  12. 12. Memória Flash: Ou flash E2PROM, é uma variante da E2PROM, sua principal diferença refere-se ao fatode que ela não permite o apagamento de uma palavra apenas. Deve-se apagar todo o chip, ou um setor, paraque se possa regrava-lo. Apesar deste inconveniente, as memórias flash que têm a vantagem de possuíremcélulas com estrutura mais simples que as E2PROMs e permitem um maior nível de integração o que permite aredução de seu custo. OBS.: Em tempo: recentemente (janeiro de 2005) já se teve notícia de alguns fabricantes produzindo mi-crocontroladores com memória flash apagável byte-a-byte. Isto elimina, talvez o grande inconveniente deste ti-po de memória.1.2.4 Memórias de programa e de dados. Observando a Figura 1-5 vemos que o μP Z80 dispõe de um barramento de endereços de 16 bits (A0 atéA15), isto nos permite dizer que ele pode endereçar até 216 posições de memória. Mais especificamente querdizer que o microprocessador tem capacidade de acessar até 64 KBytes5 de informação. Mas que tipo de informação pode ser armazenada na memória? Podemos, inicialmente, classificar a in-formação em dois grandes grupos: programa e dados. Já vimos que o programa é o conjunto de instruções quecomanda o funcionamento do microprocessador para que ele resolva uma determinada tarefa. Os dados en-globam um conjunto de informações bastante variado, que podem ser: aquelas que microprocessador leu daunidade de entrada, os valores intermediários gerados durante o processamento, os valores finais que vão serenviados para a unidade de saída, as variáveis, tabelas de constantes, mensagens pré-formatadas, etc. Por-tanto, as informações contidas na memória do computador devem ser separadas de forma bem organizada pa-ra que possamos acessá-las com facilidade. Inicialmente efetuaremos a divisão da memória em dois grandes blocos. A cada parte daremos o nomede segmento de memória. E a partir deste momento, iremos nos referir à memória de forma mais específica:memória de dados (ou segmento de dados) e memória de programa (ou segmento de programa). Mais à fren-te, verá que a memória poderá ser dividida em outros segmentos. No item seguinte, serão apresentados osmeios de que a linguagem assembly dispõe para efetuar divisão organizada da memória. Uma forma visual de representar a memória de um computador é o mapa de memória, que nada mais édo que uma tabela onde identificamos o que está armazenado em cada bloco de memória. Em alguns casos,pode-se chegar ao ponto de identificar individualmente o tipo de informação contido em cada posição de me-mória. Veja a Figura 1-12 0000h Segmento de programa vazio vazio Segmento de dados vazio vazio Vazio FFFFh Figura 1-12: Exemplo de um mapa de memória. Observando a Figura 1-12, vemos que o mapa de memória não está todo preenchido, há espaços vazi-os. Na verdade foi dito que o μP Z80 tem capacidade de endereçar até 64 KBytes. Não há a obrigatoriedade dese preencher todo o mapa de memória. Utiliza-se a quantidade de memória necessária para o funcionamentoadequado do equipamento. Outro ponto a observar é que não existe a obrigatoriedade do segmento de programa estar posicionadona memória “antes” do segmento de dados. Estes segmentos podem ser alocados na memória em qualquerordem ou seqüência.5 Convém ressaltar que o prefixo “K”, aqui difere do usado em engenharia “k” por ter valor multiplicador de 1024.12 CAPÍTULO 1.
  13. 13. 1.3 Linguagens de programação.1.3.1 Linguagens de baixo nível. [10] Para que possa haver comunicação existem várias maneiras de uma pessoa expressar as idéias quetem em mente, de forma que possam ser recebidas e entendidas por outra pessoa. A troca de informações de-ve ser feita através de uma linguagem comum ao emissor e ao receptor. Da mesma maneira, o microprocessador deve receber informações, interpretá-las e executá-las, porém omicroprocessador e os demais circuitos usam para troca de informações sinais elétricos e, desta forma, a ma-neira mais prática de codificar as informações é na forma binária. Um programa a ser executado por um microprocessador (μP) deve estar armazenado na memória deforma que em cada posição deva existir uma informação codificada em um certo número de dígitos binários:a instrução. Não são apenas as instruções que devem estar armazenadas na forma binária, temos ainda osdados e os endereços. Esta maneira de codificar as informações é bastante simples e rápida para a máquina;difícil e trabalhosa, porém, para nós. Este conjunto de informações apresentado na forma binária, que é compreendido pelo μP constitui umalinguagem que chamamos de linguagem de máquina ou código objeto. Na Figura 1-13 podemos observar umpequeno programa exemplo em linguagem de máquina para o μP Z80. A linguagem de máquina é própria de cada μP e é definida pelo fabricante, durante a etapa de desen-volvimento do μP. É muito comum que o código objeto de μP não seja compatível com o de outro. Podemos ci-tar como uma das exceções a esta regra a compatibilidade de código entre os microprocessadores 8085 e Z80. Um programa em linguagem de máquina é longo e confuso para o ser humano, porém, pode-se repre-sentá-lo de uma forma mais simples, utilizando-se, ao contrário da base binária, a base hexadecimal. Pois, co-mo sabemos, a conversão de binário para hexadecimal é bastante simples. Veja a Figura 1-14. Endereço na memória Conteúdo Endereço Conteúdo 0000 0000 0000 0000b 0011 1110b 0000h 3Eh 0000 0000 0000 0001b 1000 0000b 0001h 80h 0000 0000 0000 0010b 1101 0011b 0002h D3h 0000 0000 0000 0011b 0001 1111b 0003h 1Fh 0000 0000 0000 0100b 0010 0001b 0004h 21h 0000 0000 0000 0101b 0000 0000b 0005h 00h 0000 0000 0000 0110b 0001 0000b 0006h 10h 0000 0000 0000 0111b 0111 1110b 0007h 7Eh 0000 0000 0000 1000b 0010 0011b 0008h 23h 0000 0000 0000 1001b 1000 0110b 0009h 86h 0000 0000 0000 1010b 0010 0111b 000Ah 27h 0000 0000 0000 1011b 1101 0011b 000Bh D3h 0000 0000 0000 1100b 0001 0111b 000Ch 17h 0000 0000 0000 1101b 0011 1111b 000Dh 3Fh 0000 0000 0000 1110b 0000 0001b 000Eh 01h 0000 0000 0000 1111b 1101 1010b 000Fh DAh 0000 0000 0001 0000b 0001 0011b 0010h 13h 0000 0000 0001 0001b 0000 0000b 0011h 00h 0000 0000 0001 0010b 1010 1111b 0012h AFh 0000 0000 0001 0011b 1101 0011b 0013h D3h 0000 0000 0001 0100b 0000 1111b 0014h 0Fh 0000 0000 0001 0101b 0111 0110b 0015h 76hFigura 1-13: Programa em linguagem de máquina Figura 1-14: O mesmo programa apresentado em para o μP Z80, apresentado em binário. hexadecimal. Como o próprio nome diz, a linguagem de máquina é muito mais voltada para a máquina que para o serhumano. Evidentemente os primeiros computadores eram programados em linguagem de máquina, entretantoesta linguagem possui uma série de inconvenientes, tais como: os programas são muitos longos, cansativos deserem carregados na memória, são difíceis de serem entendidos e não ilustram as operações que o μP irá e-xecutar. Também são bastante susceptíveis a erros, os quais são difíceis de serem encontrados e corrigidos.Por apresentar estas características, a linguagem de máquina recebe a designação de linguagem de baixo ní-vel. Com a evolução dos computadores rapidamente apareceram linguagens mais apropriadas para o traba-lho do ser humano, facilitando a tarefa de programação. A linguagem assembly ou linguagem simbólica, é con-siderada, ainda, como linguagem de baixo nível. Ela foi um primeiro passo na evolução da linguagem de pro-gramação, pois um programa em linguagem assembly possui a mesma seqüência de instruções do programaIntrodução aos Computadores. 13
  14. 14. em linguagem de máquina; certos números, porém, são substituídos por símbolos que são mais ilustrativos pa-ra o programador. Além disso, cada linha de programa em linguagem assembly digita-se apenas uma instruçãocompleta. O μP Z80 dispõe de instruções que ocupam 1, 2, 3 e até 4 bytes, portanto, ao se traduzir uma linhade assembly para linguagem de máquina pode-se implicar na utilização de até 4 bytes no segmento de memó-ria reservado para o programa. Uma primeira simbologia utilizada na linguagem assembly é a substituição do código hexadecimal dainstrução pelo mnemônico correspondente ao código da operação. O mesmo acontece com os registradores,especificados como operandos, que são identificados por uma ou duas letras. No exemplo apresentado naFigura 1-14 temos como conteúdo da primeira posição de memória o byte 3Eh, o que corresponde a “ld a,“.O valor em questão corresponde ao mnemônico “ld“, seguido do primeiro operando, o registrador “a,“. Estainstrução demanda, ainda, um segundo operando (o dado) que está armazenado na posição de memória se-guinte, ou seja, o byte 80h. Efetuando todas as substituições temos: “ld a,80h”, veja a Figura 1-15. Com a substituição dos números por símbolos, foi necessário pouco tempo de uso da linguagem assem-bly para estes tornarem-se familiares. Possibilitou-se uma significativa melhoria para a criação e entendimentodo programa. Porém, além desta existem outras particularidades desta linguagem que facilita a tarefa de pro-gramação tais como o uso de rótulos (labels) e comentários no programa. Os labels são nomes simbólicos atribuídos a constantes numéricas, endereços de posições de memó-rias, endereços de variáveis, etc. Eles têm a função de evitar o uso de valores numéricos no programa, que emmuitas situações, não são tão significativos quanto os símbolos (ou nomes) dos labels. Voltando à Figura 1-15, podemos observar que a instrução armazenada na posição de memória cujo en-dereço é 000Fh constitui uma instrução de desvio (condicional) do processamento para o endereço 0013h.Caso o programa fosse modificado com a inserção ou retirada de instruções, este endereço seria alterado. Seao invés de utilizar como operando da instrução de desvio condicional, um número, fosse utilizado um label querotulasse a instrução para onde o salto deveria ser executado, alterações no programa não exigiriam alteraçõesno operando da instrução, evitando assim trabalho adicional para o programador. Endereço 8085 Z80 Z80 0000h mvi a,80h ld a,80h Inicio: ld a,80h 0002h out 1Fh out (1Fh),a out (1Fh),a 0004h lxi h,1000h ld Hl,1000h ld hl,1000h 0007h mov a,m ld a,(hl) ld a,(hl) 0008h inx h inc Hl inc hl 0009h add M add (hl) add (hl) 000Ah daa daa daa 000Bh out 17h out (17h),a out (17h),a 000Dh mvi a,01h ld a,01h ld a,01h 000Fh jc 0013h jp c,0013h jp c, Saida 0012h xra a xor A xor a 0013h out 0Fh out (0Fh),a Saida: out (0Fh),a 0015h hlt halt halt Figura 1-15: O programa da Figura 1-13, agora codificado em linguagem assembly para os μPs 8085 e Z80.1.3.2 Linguagens de alto nível. [01] A linguagem assembly já facilitou muito o trabalho de programação, porém, com o passar dos tempos,surgiu a necessidade de linguagens melhores. Essas novas linguagens são mais voltadas para o problema aser resolvido, desprendendo dos aspectos inerentes ao equipamento que será utilizado. Apresentam uma es-trutura técnica, formada por instruções que são decodificadas em diversas instruções de máquina; são, ainda,linguagens universais, não dependendo do repertório de instruções estabelecido pelos fabricantes dos micro-processadores. Com linguagens deste tipo temos a seguintes vantagens: Os programas podem ser escritos de maneira concisa e mais rápida; Para programar não há a necessidade de conhecerem-se as características do sistema nem a lin- guagem de máquina do microprocessador envolvido; Os programas nestas linguagens podem ser transferidos facilmente de um computador para o outro (portabilidade); A linguagem está mais próxima da utilizada para a formulação do problema, sendo assim mais próxi- ma do homem que da máquina.14 CAPÍTULO 1.
  15. 15. É neste contexto que se inserem as linguagens de alto Inícionível ou linguagens automáticas que foram responsáveis pela Etapa 1crescente difusão dos computadores provocando a sua utili- Programa: editor de textozação em massa, pois o usuário passou a não ter mais a ne- Função: edição do arquivo fontecessidade de conhecer a fundo a máquina e nem sua lingua- Resultado: programa fonte ".asm"gem assembly. Bastam conhecimentos matemáticos ou es- Etapa 2pecíficos de sua área e o conhecimento dos detalhes da lin- Programa: assemblerguagem de alto nível. Outra razão é que o usuário tem a Função: tradução para código objetopossibilidade de usar programas prontos, desenvolvidos por Resultado: arquivo objeto ".obj"outros, e que não dependem do equipamento que ele possui, Etapa 3crescendo rapidamente o número de pacotes de programas Programa: linkerdisponíveis. Função: montagem e geração do código executável Resultado: arquivo executável ".hex" Etapa 4 Programa: simulador1.4 Etapas da elaboração de um programa. [07] Função: depuração do programa Resultado: correção de alguns erros A programação de um sistema é a construção corretada seqüência de instruções que este vai realizar para condu-zir à solução do problema. Esta seqüência de instruções é Pronto para a Nvariável, pois a programação possui uma ampla variedade de execução realalternativas e opções que dependem do programador que, ?através de várias maneiras, atinge os mesmos resultados. S Etapa 5 Programas mais elaborados exigem uma metodologia Execução real - Programa executado pelode trabalho, sem a qual, torna-se impossível fazer uma pro- microprocessador utilizando E/S real ou simuladagramação correta. Essencialmente, o projeto de um progra-ma a ser processado por um computador deve ter os seguin-tes procedimentos: O programa N Análise do problema; está correto ? Determinação do algoritmo (opcional, mas altamen- S te recomendável); Fim Escrever o programa em linguagem simbólica (edi- ção); Figura 1-16: Fluxo de elaboração e depuração de um programa. Traduzir o programa para linguagem de máquina (compilação e link-edição); Testar e corrigir o programa (depuração). Na análise do problema, deve ser determinado de maneira bem clara quais os objetivos que devem seralcançados e exatamente que tarefa deve ser realizada. Se este programa for processado em um equipamentojá disponível, verificar sua capacidade de execução do programa, sua capacidade de memória, seus periféricose sua unidade central de processamento. Caso este programa seja para um equipamento que está sendo de-senvolvido, definir primeiro todo o hardware deste equipamento. Também deve ficar bem claro quais as saídasque devemos dar a cada entrada, e que dispositivos de entrada e saída fornecerão estas informações. O algoritmo a ser determinado deve estabelecer quais equações ou conjuntos de regras e operaçõesque devem ser submetidos os dados para que sejam obtidos os resultados esperados. Dependendo da com-plexidade e finalidade do programa os algoritmos podem ser mais complexos, e sua perfeita determinação éfundamental para o projeto do programa. O algoritmo pode ser escrito de forma descritiva ou através de um diagrama de blocos (como o digramavisto na Figura 1-16). A forma descritiva nos remete basicamente à escrita de um texto. É extremamente indi-cada quando trabalhamos com linguagens de alto nível. Já o fluxograma é aplicado quando utilizamos linguagens de baixo nível, como o assembly. Ao escre-vermos o fluxograma, temos a possibilidade de utilizar o recurso de refinamento sucessivo, que é basicamente,representar um comando, normalmente complexo, em um único bloco. Posteriormente faz-se um novo fluxo-grama que detalhe este comando. Portanto, podemos obter um conjunto de fluxogramas: o que podemos cha-mar de principal, apresenta um número reduzido de blocos e nos permite ter uma visão do conjunto do progra-ma. Em seguida, podemos ter um ou mais fluxogramas detalhando cada um dos blocos do fluxograma princi-pal. A elaboração do fluxograma é de grande auxílio na hora de se escrever o programa e quase fundamentalpara a sua correção (depuração).Introdução aos Computadores. 15
  16. 16. As três etapas a seguir: edição, compilação e depuração são, normalmente, repetidas várias vezes atéque se obtenha o programa funcionando corretamente. Veja o fluxograma da Figura 1-16. Para escrever o programa (edição) deve ser primeiramente determinado o tipo de linguagem que será u-tilizada, se uma linguagem de baixo nível ou alto nível. Isto depende de se ter disponível um sistema de desen-volvimento ou não e que tipos de linguagem este sistema tem condições de interpretar. Quanto mais complica-do for o programa, mais interessante será a utilização de linguagem de alto nível. Isto torna o programa maisfácil de ser entendido por possuir uma sintaxe mais clara. A tradução do programa fonte (compilação) pode até ser feita manualmente em programas escritos emlinguagens de baixo nível, devido ao fato que cada instrução possui um código de máquina correspondente. Noentanto, este processo é lento, tedioso e suscetível a erros. Na prática, utilizam-se programas para a traduçãodo programa fonte em código de máquina. Para testar e corrigir o programa (depuração) existe uma série de artifícios que auxiliam este procedi-mento, desde programas de simulação, assim como a partição do programa em pequenos fragmentos para fa-cilitar sua análise e a descoberta dos erros (bugs).1.4.1 Compilação e Link-edição. [04] A conversão manual de um programa fonte em assembly para linguagem de máquina (código objeto) épossível de ser executada - mesmo que implique em uma tarefa cansativa, tediosa e passível de erros, o quenão ocorre com um programa em linguagem de alto nível. Para este trabalho árduo utiliza-se o próprio compu-tador com um programa especialmente desenvolvido para a execução desta tarefa. Os aplicativos que traduzem um programa fonte para a linguagem de máquina são chamados programastradutores. Sua função é a de ler cada linha do programa e efetuar a conversão para código de máquina po-dendo executar estas instruções ou não. Normalmente ainda gera-se uma listagem completa do código objeto.Os programas tradutores mais comuns são: O Programa Assembler: É um programa voltado para converter um código fonte, escrito em linguagemassembly, para um programa objeto em linguagem de máquina. Existem diversos tipos de assemblers, poiscomo foi visto, cada microprocessador possui uma linguagem assembly diferente, e também para um mesmoμP podem existir programas assemblers diferentes, dependendo de quem desenvolveu este programa. Nor-malmente, o programa assembler: Traduz o programa fonte; Armazena o programa objeto em memória ou em disco; Fornece uma listagem do programa fonte resultante, do código objeto resultante; Uma tabela de símbolos (labels) e Uma listagem de erros de sintaxe. O Programa Compilador: É a designação dada ao aplicativo que traduz programa fonte, escrito em lin-guagem de médio ou de alto nível, para programa objeto, em linguagem de máquina. Existem diversos tipos decompiladores, um para cada linguagem: compilador Pascal, compilador C, etc. O Programa Interpretador: É também voltado para linguagens de alto nível. Este não produz um progra-ma objeto e, sim, toma uma instrução do programa fonte, traduz e executa imediatamente. Após isto, retira no-va instrução do programa fonte, traduz e executa, e assim por diante. Desta forma o programa fonte é executa-do imediatamente, sem que seja necessário esperar pelo programa objeto e depois executá-lo. Porém, o pro-grama fonte executado linha por linha, tendo antes a tradução de cada linha, tem o tempo de execução aumen-tado. Uma vez obtido o código objeto, proveniente de um assembler ou de um compilador, é necessário aindaconvertê-lo em código executável. O processo de montagem (ou tradução) efetuado por um dos dois progra-mas já citados, gera um código objeto com a característica de poder ser armazenado em qualquer lugar damemória do computador - código objeto relocável. É necessário, então, submeter este código ao programa lin-ker (ligador, encadeador) para torná-lo um código objeto absoluto, ou seja, cujos endereços de alocação namemória do computador já estejam definidos. Esta definição é essencial para que as instruções de desvio te-nham seus operandos corretamente calculados. Este código de máquina resultante chamamos de código exe-cutável pois ele está pronto para ser processado pelo microprocessador. O linker pode efetuar o encadeamentode um ou vários códigos objeto, bastando para tal que a lista dos arquivos que os contêm seja fornecida.16 CAPÍTULO 1.
  17. 17. 1.4.2 Simulação e execução. A etapa final do processo de elaboração de um programa consiste da verificação de seu funcionamento.Isto se faz pela execução do código executável que pode ser feita de duas formas: a execução direta na má-quina ou sua simulação através de programas adequados. A execução por meio de simulação, ocorrendo antes da execução direta no equipamento microproces-sado, permite-nos obter maior eficiência no processo de elaboração de um programa. Através da simulação épossível obter um conjunto muito maior de informações sobre a evolução do programa em desenvolvimento doque teríamos ao executá-lo diretamente no equipamento real. Informações como conteúdo de registradores e oestado de outros circuitos internos ao microprocessador nem sempre são facilmente obtidos nos equipamen-tos. Ao contrário, a simulação do μP nos permite a execução em modo passo-a-passo e até retornar o proces-samento, “retroceder a simulação”, permitindo que uma mesma seqüência de instruções possa ser executadamais de uma vez. Ocorre que, na maioria dos casos, os programas simuladores são para arquiteturas de microprocessado-res genéricas e, em alguns casos, onde o programa em desenvolvimento depende de uma interação com ohardware do equipamento, sua simulação deixa a desejar. Este é o caso, por exemplo, da necessidade de lerdados do teclado do equipamento, ou de apresentar um resultado no display. Ainda assim, para estes casos,onde um programa simulador genérico não dispõe de funções que simulem o hardware periférico ao micropro-cessador, é possível, através de pequenos artifícios, contornar a situação e tirar proveito do simulador. Podemos dizer que a utilização da simulação vai nos auxiliar a resolver a grande maioria dos problemasde um programa em elaboração. Uma parte muito pequena dos problemas, ou falhas, a qual depende da inte-ração com o hardware, é que só poderá ser resolvida pela execução direta no equipamento. Apesar da defesa feita em favor das ferramentas de simulação, em momento nenhum se teve a intençãode proclamar a infalibilidade desta ferramenta. É interessante salientar que a ferramenta da simulação deve serencarada como uma das etapas no processo de elaboração de um programa. Sendo assim, o passo seguinte à simulação é o da execução real, na máquina, do código desenvolvido,e já parcialmente depurado. E só após esta etapa, que deve ser constituída de testes que busquem ser os maisreais possíveis ao contexto em que o equipamento será empregado, é que podemos atestar o bom funciona-mento ou não de um programa.1.5 Questões de revisão. Após a leitura do texto desta prática introdutória, efetue uma revisão respondendo às questões seguintes: 01. Classifique os computadores de acordo com sua capacidade de processamento. 02. Quais são os elementos essenciais de um computador? 03. Que características de um microcomputador são definidas pelo microprocessador que o compõe? 04. Defina programa e dados. 05. Cite um exemplo do uso do computador, diferente daqueles apresentados no texto da Prática 0. 06. Durante o processamento, o microprocessador (μP) provê um grande número de funções, cite-as. 07. O que torna o microprocessador uma máquina extremamente versátil? 08. Caracterize as memória RAM e ROM. Que tipo de informação cada uma pode conter? Cite exemplos. 09. Explique o significado dos termos “leitura” e “escrita”. 10. O que acontece se, em um determinado programa, existir uma instrução para escrever dados na ROM? 11. Do que é formada a linguagem de máquina? Qual é a característica comum entre as linguagens de má- quina dos microprocessadores dos vários fabricantes? 12. Por que se utiliza a representação na base hexadecimal da linguagem de máquina? 13. Caracterize e descreva brevemente a linguagem assembly. 14. Defina label. Qual a vantagem da sua utilização na elaboração de programas? 15. Defina linguagem de baixo nível. 16. Defina linguagem de alto nível e cite suas vantagens. 17. Cite as etapas componentes da elaboração de um programa de computador. 18. Defina programa tradutor e descreva os tipos existentes. 19. O que se entende por “depuração” de um programa? 20. Qual a validade da simulação no processo de desenvolvimento de um programa? 21. Existe apenas uma linguagem assembly? Explique.Introdução aos Computadores. 17
  18. 18. CAPÍTULO 2.2. O PRIMEIRO PROGRAMA EM LINGUAGEM ASSEMBLY. Neste capítulo iremos descrever em detalhes as etapas que compõem o processo de criação de um pro-grama em linguagem assembly para o μP Z80, como apresentado na Figura 1-16 da página 15. Mesmo sem ter apresentado formalmente o conjunto de instruções do μP Z80, utilizaremos apenas al-gumas instruções bastante elementares para compor o nosso primeiro programa. Mais à frente, todas elas se-rão abordadas em detalhe. É importante relembrar o que foi exposto no item 1.4 , na página 15: o momento da edição de um pro-grama constitui a quarta etapa de um “projeto”. Ela é precedida pela análise do problema, pela determinaçãodo algoritmo e pela elaboração do fluxograma. Saltaremos as duas primeiras etapas e iniciaremos pela elabo-ração do algoritmo. É bom lembrar que, como foi apresentado anteriormente, utiliza-se o fluxograma como “fer-ramenta” de descrição do algoritmo em linguagens de baixo nível, como é o caso da linguagem assembly queutilizaremos.2.1 Elaboração do fluxograma. Para efeito de padronização, iniciaremos apresentando o formato de alguns dos blocos mais usados naelaboração de fluxogramas. Início Terminador: é utilizado para representar o início e o fim do programa. y = x +5 2 Processo: neste bloco especificamos as operações, cálculos, tarefas, ou seja, o processamento que deve ser executado. sin(x) Subrotina: representa um processamento pré-definido, a solução de uma função, ou mesmo um sub-programa. Tomada de decisão: Este bloco representa o momento de um teste boole- S ano, que se tiver resultado verdadeiro (S = sim = verdadeiro) implicará no ? desvio do processamento. Caso o teste tenha resultado falso, o processa- N mento prosseguirá normalmente. Dados Entrada de dados: Bloco que representa a entrada de dados, ou seja, a co- leta de informação vinda do ambiente externo ao programa. Teclado Entrada manual: Bloco que representa a entrada de informação gerada pe- lo usuário (ou operador) do equipamento. Papel Saída de dados: Bloco que representa a operação saída de dados em pa- pel, ou seja, impressão. Display Saída de dados: Bloco que representa a operação saída de dados em um dispositivo de exibição que pode ser um display, um monitor de vídeo, 1 Conector: Símbolo que indica a continuidade do processo em outro ponto, na mesma página. 1 Conector: Símbolo que indica a continuidade do processo em outro ponto, em outra página. Setas: Indicam o sentido do fluxo do processamento Como já devem ter observado, a Figura 1-16 apresenta um fluxograma. Problemas Propostos: P1: Criar um programa que busque da memória os valores armazenados nas posições 1000h e 1001h, some-os e, em seguida, armazene o resultado na posição de memória 1002h.O primeiro programa em linguagem assembly. 19
  19. 19. P2: Criar um programa que busque da memória os valores armazenados nas posições 1000h e 1001h, some-os e, em seguida, armazene o resultado na posição de memória 1002h. Repetir esta opera- ção enquanto o resultado da soma não for zero. P3: Criar um programa que faça piscar indefinidamente, a intervalos de 1 segundo, um led ligado à por- ta de saída a partir do momento em que a chave ligada à porta de entrada for levada a nível alto. Vamos aos fluxogramas: Início Início Início Ler o valor da Ler o valor da Fazer saída = 0 posição 1000h posição 1000h (led apagado) Ler o valor da Ler o valor da Ler posição 1001h posição 1001h chave Somar os dois Somar os dois valores valores Chave = 0 S ? N Armazenar o Armazenar o resultado na resultado na posição 1002h posição 1002h Fazer saída = 1 (led aceso) Fim Resultado S ≠0? Subrotina de tempo = 1segundo N Fim Fazer saída = 0 (led apagado) Figura 2-1: Fluxogramas para a solução dos problemas propostos P1, P2 e P3, respectivamente. O programa P1 pode ser traduzido em um fluxograma linear, onde o processamento seguiu contínuosem desvios. Já os programas P2 e P3 necessitaram de fluxogramas com desvios de processamento em fun-ção das suas proposições que apresentavam condições. Outro ponto a salientar é que o programa P3 apre-senta um início, mas não apresenta término (pois foi proposto desta forma), ou seja, é um programa que entraem uma condição de repetições infinitas (loop infinito). Mas, como ou quando termina um programa em loop infinito? Termina quando o processador for desli-gado.2.2 A configuração básica do computador. Na Figura 2-2 apresentamos o diagrama em blocos (simplificado) do hardware que iremos trabalhar. NaFigura 2-3 apresentamos o diagrama eletrônico com o circuito completo. Os principais componentes do circuito deste computador são: Um microprocessador de 8 bits: Z80A-CPU, fabricado pela Zilog; Lógica de decodificação formada por dois CIs decodificadores 74LS138; 2K bytes de memória EPROM, chip 2716, ocupando a faixa de endereços de 0000h a 07FFh; 2K bytes de memória RAM estática, chip 6116, ocupando a faixa de endereços de 1000h a 17FFh; 2 portas paralelas de entrada, de 8 bits cada, chips 74LS244, ocupando os endereços de E/S 00h e 01h e20 Capítulo 2.

×