SlideShare ist ein Scribd-Unternehmen logo
1 von 93
Downloaden Sie, um offline zu lesen
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órica




Junho/2007                          Prof. Denny Daniel Collina
                                     denny@deii.cefetmg.br
Índice Analítico

1. 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._______________________________________________________________ 17
2. 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._____________________________________________________________ 33
3. 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
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._______________________________________________________ 79
A. O Código ASCII. ______________________________________________________________________ 81
B. 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. _______________________________________ 90
C. Referências Bibliográficas._____________________________________________________________ 91




Índice                                                                                            II
Í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
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, fossem
elas automáticas ou manuais. Tal preocupação tinha como objetivo minimizar esforços, o desgaste do agente
humano 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ão
na 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 mesmas
tarefas que um humano pode executar, mas os compu-
tadores podem fazê-lo com muito maior velocidade e
precisão. Isto devido ao fato de os computadores reali-
zarem todos os seus cálculos e operações um passo
por vez e de demandar uma pequena fração de tempo
para executar cada passo.
       Ao contrário dos humanos, um computador não
pensa! Um computador necessita de um jogo completo
de instruções que lhe informem exatamente o que fazer
a cada passo para desenvolver suas tarefas. Este con-
junto de instruções, chamado de programa, é preparado
por 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 na
unidade 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, um
por vez, interpreta-os e executa a operação correspon-
dente.
     Seria impossível listar todas as aplicações dos
computadores. 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 complexas
e devem ser calculadas para muitos valores diferentes
das variáveis do sistema. Um computador pode calcular
estas 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 processar
dados comerciais ou realizar cálculos de engenharia, no sentido de que os resultados não têm necessidade
imediata (isto é, dentro de alguns milisegundos ou segundos). Os computadores são, muitas vezes, usados em
aplicaçõ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 no
controle 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
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 de
pesquisa, e em aplicações comerciais para pequenos negócios. Seu uso ainda ocorre, mas está recebendo
boa 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 mainframes
variam da resolução de problemas científicos de engenharia complexos até aplicações comerciais orientadas
para 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: a
unidade central de processamento, a unidade de memória e as unidades de entrada e saída. A interligação
destas 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 e
finais das várias operações. Dentro desta unidade podemos destacar três subgrupos: memórias da família
RAM, da família ROM, e registradores.
       A Unidade de Entrada é composta por todos os dispositivos utilizados para receber informações e dados
que são externos ao computador, e introduzi-los nas unidades de memória ou na ULA. Alguns dispositivos de
entrada 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 do
computador 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.
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
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 - a
pastilha do microprocessador. Como sabemos, o μP funciona como a unidade central de processamento do
microcomputador. Em essência, o μP é o coração do microcomputador, pois suas características definem as
características do microcomputador. Sua velocidade determina a velocidade máxima do microcomputador, e
seus 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 que
uma 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 demais
componentes.




8                                                                                                  Capítulo 1.
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 de
entrada e saída, e as memórias RAM e ROM. Os pinos do chip dão acesso apenas aos dispositivos de E/S e a
alguns 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) e
secundá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ções
armazenadas 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
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 armazenadas
são denominadas memórias de leitura e escrita (RWM), que são mais conhecidas por outra sigla (RAM). As
que 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, ou
entã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 com
a 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, enquanto
alguns, 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 outra
caracterí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.
DRAM (Dynamic RAM): Cada célula desta memória é construída por apenas um transistor MOS e de um
pequeno capacitor, veja a Figura 1-11. O armazenamento dos níveis lógicos de um bit ocorre sob a forma de
níveis diferentes de carga do capacitor intrínseco ao circuito. A vantagem deste tipo de memória reside no fato
de ter o número reduzido de componentes por célula, o que traz um grau de integração bastante elevado, além
de 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 ele
nã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 de
uma 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. Todas
as ROMs são não voláteis, isto quer dizer que o padrão de bits gravados na memória é permanente, não pode
ser 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 de
memória só é adquirido através de encomenda direta ao fabricante e os lotes mínimos são de alguns milhares
de 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ão
pode ser apagada e poder ser considerada como uma ROM. Normalmente é utilizada em equipamentos cujo
programa já foi testado e aprovado, mas que não têm um volume de produção para justificar a encomenda de
ROM 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, diferente
da ROM e da PROM, tem a vantagem de poder ser apagada, se necessário. Isto se faz através da exposição
da 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 se
expor o chip à luz, o encapsulamento de uma EPROM é construído em cerâmica e dotado de uma janela de
quartzo. Estes dois materiais colaboram para o seu alto custo.
      EEPROM (Electrically Erasable PROM): Este tipo de memória foi desenvolvida para suplantar algumas
desvantagens das EPROMs: necessidade da retirada do chip do circuito para o apagamento completo para
permitir 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 seu
custo é 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
Memória Flash: Ou flash E2PROM, é uma variante da E2PROM, sua principal diferença refere-se ao fato
de que ela não permite o apagamento de uma palavra apenas. Deve-se apagar todo o chip, ou um setor, para
que se possa regrava-lo. Apesar deste inconveniente, as memórias flash que têm a vantagem de possuírem
células com estrutura mais simples que as E2PROMs e permitem um maior nível de integração o que permite a
reduçã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 quer
dizer 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 que
comanda 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 da
unidade de entrada, os valores intermediários gerados durante o processamento, os valores finais que vão ser
enviados 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 nome
de 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 os
meios 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 de
se preencher todo o mapa de memória. Utiliza-se a quantidade de memória necessária para o funcionamento
adequado do equipamento.
     Outro ponto a observar é que não existe a obrigatoriedade do segmento de programa estar posicionado
na memória “antes” do segmento de dados. Estes segmentos podem ser alocados na memória em qualquer
ordem 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.
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 que
tem 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 o
microprocessador 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 de
forma 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 os
dados 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 uma
linguagem que chamamos de linguagem de máquina ou código objeto. Na Figura 1-13 podemos observar um
pequeno 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        76h

Figura 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 ser
humano. Evidentemente os primeiros computadores eram programados em linguagem de máquina, entretanto
esta linguagem possui uma série de inconvenientes, tais como: os programas são muitos longos, cansativos de
serem 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 programa

Introdução aos Computadores.                                                                                  13
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ção
completa. O μP Z80 dispõe de instruções que ocupam 1, 2, 3 e até 4 bytes, portanto, ao se traduzir uma linha
de 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 da
instruçã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 na
Figura 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,“. Esta
instruçã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 entendimento
do 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 em
muitas 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. Se
ao invés de utilizar como operando da instrução de desvio condicional, um número, fosse utilizado um label que
rotulasse a instrução para onde o salto deveria ser executado, alterações no programa não exigiriam alterações
no 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 a
ser 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.
É neste contexto que se inserem as linguagens de alto                           Início
nível ou linguagens automáticas que foram responsáveis pela
                                                               Etapa 1
crescente difusão dos computadores provocando a sua utili-
                                                                   Programa: editor de texto
zação em massa, pois o usuário passou a não ter mais a ne-         Função: edição do arquivo fonte
cessidade de conhecer a fundo a máquina e nem sua lingua-          Resultado: programa fonte ".asm"
gem assembly. Bastam conhecimentos matemáticos ou es-          Etapa 2
pecíficos de sua área e o conhecimento dos detalhes da lin-        Programa: assembler
guagem de alto nível. Outra razão é que o usuário tem a            Função: tradução para código objeto
possibilidade de usar programas prontos, desenvolvidos por         Resultado: arquivo objeto ".obj"

outros, e que não dependem do equipamento que ele possui,      Etapa 3
crescendo rapidamente o número de pacotes de programas             Programa: linker
disponíveis.                                                       Função: montagem e geração do código executável
                                                                   Resultado: arquivo executável ".hex"

                                                               Etapa 4
                                                                   Programa: simulador
1.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 correta
da 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         N
variável, pois a programação possui uma ampla variedade de                         execução real
alternativas 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 pelo
de trabalho, sem a qual, torna-se impossível fazer uma pro-        microprocessador utilizando E/S real ou simulada
gramaçã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 ser
alcançados e exatamente que tarefa deve ser realizada. Se este programa for processado em um equipamento
já disponível, verificar sua capacidade de execução do programa, sua capacidade de memória, seus periféricos
e 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ídas
que 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ções
que 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 digrama
visto 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 fundamental
para a sua correção (depuração).



Introdução aos Computadores.                                                                                          15
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 mais
fá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 em
linguagens de baixo nível, devido ao fato que cada instrução possui um código de máquina correspondente. No
entanto, este processo é lento, tedioso e suscetível a erros. Na prática, utilizam-se programas para a tradução
do 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 que
nã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 programas
tradutores. 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 linguagem
assembly, para um programa objeto em linguagem de máquina. Existem diversos tipos de assemblers, pois
como 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 de
compiladores, 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 ainda
convertê-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 da
memó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 na
memó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 encadeamento
de 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.
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 do
que teríamos ao executá-lo diretamente no equipamento real. Informações como conteúdo de registradores e o
estado 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 executada
mais 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 o
hardware do equipamento, sua simulação deixa a desejar. Este é o caso, por exemplo, da necessidade de ler
dados 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 problemas
de 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ção
de proclamar a infalibilidade desta ferramenta. É interessante salientar que a ferramenta da simulação deve ser
encarada 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 mais
reais 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
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ção
do 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 que
utilizaremos.



2.1 Elaboração do fluxograma.
      Para efeito de padronização, iniciaremos apresentando o formato de alguns dos blocos mais usados na
elaboraçã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
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ínuo
sem 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 entra
em 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. Na
Figura 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 e

20                                                                                               Capítulo 2.
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados
Introdução aos Sistemas Microprocessados

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (18)

Alinhamento
AlinhamentoAlinhamento
Alinhamento
 
G.d.2012
G.d.2012G.d.2012
G.d.2012
 
Pedido cessao de uso 2011
Pedido cessao de uso 2011 Pedido cessao de uso 2011
Pedido cessao de uso 2011
 
Cultivo limão ricardo costa
Cultivo limão ricardo costaCultivo limão ricardo costa
Cultivo limão ricardo costa
 
Redes2
Redes2Redes2
Redes2
 
Questionário
QuestionárioQuestionário
Questionário
 
Tese marinho
Tese marinhoTese marinho
Tese marinho
 
Manual Deployment of Integrated Asset Management (Various Industrial Units, 1...
Manual Deployment of Integrated Asset Management (Various Industrial Units, 1...Manual Deployment of Integrated Asset Management (Various Industrial Units, 1...
Manual Deployment of Integrated Asset Management (Various Industrial Units, 1...
 
Solucoeselon
SolucoeselonSolucoeselon
Solucoeselon
 
Desenho mecãnico
Desenho mecãnicoDesenho mecãnico
Desenho mecãnico
 
Acessorios de tubulacao
Acessorios de tubulacaoAcessorios de tubulacao
Acessorios de tubulacao
 
Matemática – razão e proporção 01 – 2013
Matemática – razão e proporção 01 – 2013Matemática – razão e proporção 01 – 2013
Matemática – razão e proporção 01 – 2013
 
Apostila lineares.pdf
Apostila lineares.pdfApostila lineares.pdf
Apostila lineares.pdf
 
Otimização Estática
Otimização EstáticaOtimização Estática
Otimização Estática
 
Desenhos eletricos senai (ng)
Desenhos eletricos senai (ng)Desenhos eletricos senai (ng)
Desenhos eletricos senai (ng)
 
Principio de Ánalise
Principio de Ánalise Principio de Ánalise
Principio de Ánalise
 
Materiais e equipamentos em sistemas de baixa tensão ii
Materiais e equipamentos em sistemas de baixa tensão iiMateriais e equipamentos em sistemas de baixa tensão ii
Materiais e equipamentos em sistemas de baixa tensão ii
 
Algoritmos probabilísticos
Algoritmos probabilísticosAlgoritmos probabilísticos
Algoritmos probabilísticos
 

Andere mochten auch

Karel – Autonomous Robot for Enhancing Learning
Karel – Autonomous Robot for Enhancing LearningKarel – Autonomous Robot for Enhancing Learning
Karel – Autonomous Robot for Enhancing LearningMihai Agape
 
Introdução à Robótica / Visão Geral / Tendências
Introdução à Robótica / Visão Geral / TendênciasIntrodução à Robótica / Visão Geral / Tendências
Introdução à Robótica / Visão Geral / TendênciasFernando Passold
 
Augusto loureiro sistemas microprocessados
Augusto loureiro   sistemas microprocessadosAugusto loureiro   sistemas microprocessados
Augusto loureiro sistemas microprocessadosLorena Barreto
 
01 definicoes em_controle_automatico_teoria_isa_curitiba
01 definicoes em_controle_automatico_teoria_isa_curitiba01 definicoes em_controle_automatico_teoria_isa_curitiba
01 definicoes em_controle_automatico_teoria_isa_curitibaJeferson Carmo
 
Sistemas supervisórios e sdcd
Sistemas supervisórios e sdcdSistemas supervisórios e sdcd
Sistemas supervisórios e sdcdFabiano Sales
 
Comandos eletro hidráulicos eletro pneumáticos (1)
Comandos eletro hidráulicos eletro pneumáticos (1)Comandos eletro hidráulicos eletro pneumáticos (1)
Comandos eletro hidráulicos eletro pneumáticos (1)fabinholook
 
Apostila pneumática shp 2º sem 2013 anhanguera primeiro
Apostila pneumática shp 2º sem 2013    anhanguera primeiroApostila pneumática shp 2º sem 2013    anhanguera primeiro
Apostila pneumática shp 2º sem 2013 anhanguera primeiroHelton Assunção
 
Apostila clp (conceitos básicos)
Apostila clp (conceitos básicos)Apostila clp (conceitos básicos)
Apostila clp (conceitos básicos)jastro1984
 
Apostila de Instrumentação
Apostila de InstrumentaçãoApostila de Instrumentação
Apostila de InstrumentaçãoTalitha Ferreira
 
Automação hidráulica e pneumática
Automação hidráulica e pneumáticaAutomação hidráulica e pneumática
Automação hidráulica e pneumáticaGleyson Cardoso
 
Controle de Processos Industriais Aplicados
Controle de Processos Industriais AplicadosControle de Processos Industriais Aplicados
Controle de Processos Industriais AplicadosAlysson Domingos
 
Acionamentos hidráulicos e pneumáticos senai mg
Acionamentos hidráulicos e pneumáticos   senai mgAcionamentos hidráulicos e pneumáticos   senai mg
Acionamentos hidráulicos e pneumáticos senai mgemelchiors
 
Apostila de-instrumentacao-industrial
Apostila de-instrumentacao-industrialApostila de-instrumentacao-industrial
Apostila de-instrumentacao-industrialtabVlae
 
Hidráulica e pneumática
Hidráulica e pneumáticaHidráulica e pneumática
Hidráulica e pneumáticaJúnior Pessoa
 
Apostila pneumática SENAI
Apostila pneumática SENAIApostila pneumática SENAI
Apostila pneumática SENAIMichel S. Silva
 
Controle de processo senai
Controle de processo   senaiControle de processo   senai
Controle de processo senaiDanilo004
 

Andere mochten auch (19)

Karel – Autonomous Robot for Enhancing Learning
Karel – Autonomous Robot for Enhancing LearningKarel – Autonomous Robot for Enhancing Learning
Karel – Autonomous Robot for Enhancing Learning
 
Introdução à Robótica / Visão Geral / Tendências
Introdução à Robótica / Visão Geral / TendênciasIntrodução à Robótica / Visão Geral / Tendências
Introdução à Robótica / Visão Geral / Tendências
 
Augusto loureiro sistemas microprocessados
Augusto loureiro   sistemas microprocessadosAugusto loureiro   sistemas microprocessados
Augusto loureiro sistemas microprocessados
 
01 definicoes em_controle_automatico_teoria_isa_curitiba
01 definicoes em_controle_automatico_teoria_isa_curitiba01 definicoes em_controle_automatico_teoria_isa_curitiba
01 definicoes em_controle_automatico_teoria_isa_curitiba
 
Sistemas supervisórios e sdcd
Sistemas supervisórios e sdcdSistemas supervisórios e sdcd
Sistemas supervisórios e sdcd
 
Comandos eletro hidráulicos eletro pneumáticos (1)
Comandos eletro hidráulicos eletro pneumáticos (1)Comandos eletro hidráulicos eletro pneumáticos (1)
Comandos eletro hidráulicos eletro pneumáticos (1)
 
Apostila pneumática shp 2º sem 2013 anhanguera primeiro
Apostila pneumática shp 2º sem 2013    anhanguera primeiroApostila pneumática shp 2º sem 2013    anhanguera primeiro
Apostila pneumática shp 2º sem 2013 anhanguera primeiro
 
Automação industrial
Automação industrialAutomação industrial
Automação industrial
 
Apostila clp (conceitos básicos)
Apostila clp (conceitos básicos)Apostila clp (conceitos básicos)
Apostila clp (conceitos básicos)
 
Apostila de Instrumentação
Apostila de InstrumentaçãoApostila de Instrumentação
Apostila de Instrumentação
 
Automação hidráulica e pneumática
Automação hidráulica e pneumáticaAutomação hidráulica e pneumática
Automação hidráulica e pneumática
 
Controle de Processos Industriais Aplicados
Controle de Processos Industriais AplicadosControle de Processos Industriais Aplicados
Controle de Processos Industriais Aplicados
 
Acionamentos hidráulicos e pneumáticos senai mg
Acionamentos hidráulicos e pneumáticos   senai mgAcionamentos hidráulicos e pneumáticos   senai mg
Acionamentos hidráulicos e pneumáticos senai mg
 
8.controle de-processo
8.controle de-processo8.controle de-processo
8.controle de-processo
 
Apostila de-instrumentacao-industrial
Apostila de-instrumentacao-industrialApostila de-instrumentacao-industrial
Apostila de-instrumentacao-industrial
 
Hidráulica e pneumática
Hidráulica e pneumáticaHidráulica e pneumática
Hidráulica e pneumática
 
Introdução à pneumática
Introdução à pneumáticaIntrodução à pneumática
Introdução à pneumática
 
Apostila pneumática SENAI
Apostila pneumática SENAIApostila pneumática SENAI
Apostila pneumática SENAI
 
Controle de processo senai
Controle de processo   senaiControle de processo   senai
Controle de processo senai
 

Ähnlich wie Introdução aos Sistemas Microprocessados

Ap curso+de+linguagem+c
Ap   curso+de+linguagem+cAp   curso+de+linguagem+c
Ap curso+de+linguagem+cariferreira3
 
Apostilade vb.net
Apostilade vb.netApostilade vb.net
Apostilade vb.netRafael Ora
 
Apostila de vb.net
Apostila de vb.netApostila de vb.net
Apostila de vb.netlricx
 
Guia de-aplicação-de-inversores-de-frequência-weg-3ª-edição
Guia de-aplicação-de-inversores-de-frequência-weg-3ª-ediçãoGuia de-aplicação-de-inversores-de-frequência-weg-3ª-edição
Guia de-aplicação-de-inversores-de-frequência-weg-3ª-ediçãoDiego Rodrigo do Prado
 
Ferramentas e acessórios
Ferramentas e acessóriosFerramentas e acessórios
Ferramentas e acessóriosRenaldo Adriano
 
Ficha teorica tratamento de dados
Ficha teorica tratamento de dadosFicha teorica tratamento de dados
Ficha teorica tratamento de dadosDiogo Ana
 
Guia de aplicacao_de_inversores_de_frequencia
Guia de aplicacao_de_inversores_de_frequenciaGuia de aplicacao_de_inversores_de_frequencia
Guia de aplicacao_de_inversores_de_frequenciaEdilton Neres dos Santos
 
Metrologia
MetrologiaMetrologia
MetrologiaITD
 
Modelos de requerimentos
Modelos de requerimentosModelos de requerimentos
Modelos de requerimentosJoas Rodrigues
 
Elementos de máquinas 2
Elementos de máquinas 2Elementos de máquinas 2
Elementos de máquinas 2Tiago Ferreira
 
Cst mecânica ferramentas e seus acessórios
Cst mecânica ferramentas e seus acessóriosCst mecânica ferramentas e seus acessórios
Cst mecânica ferramentas e seus acessóriosPaulo Henrique
 
Mecânica - Ferramentas e Acessórios
Mecânica - Ferramentas e AcessóriosMecânica - Ferramentas e Acessórios
Mecânica - Ferramentas e AcessóriosJean Brito
 

Ähnlich wie Introdução aos Sistemas Microprocessados (20)

Ap curso+de+linguagem+c
Ap   curso+de+linguagem+cAp   curso+de+linguagem+c
Ap curso+de+linguagem+c
 
Apostilade vb.net
Apostilade vb.netApostilade vb.net
Apostilade vb.net
 
Apostila de vb.net
Apostila de vb.netApostila de vb.net
Apostila de vb.net
 
Manual_G4_VZ & VH - 1.1.4.pdf
Manual_G4_VZ & VH - 1.1.4.pdfManual_G4_VZ & VH - 1.1.4.pdf
Manual_G4_VZ & VH - 1.1.4.pdf
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Cópia de 03_checklist-iii-pcmat.doc
Cópia de 03_checklist-iii-pcmat.docCópia de 03_checklist-iii-pcmat.doc
Cópia de 03_checklist-iii-pcmat.doc
 
Exercício de CNC
Exercício de CNCExercício de CNC
Exercício de CNC
 
Desenho tecnico
Desenho tecnicoDesenho tecnico
Desenho tecnico
 
Guia de-aplicação-de-inversores-de-frequência-weg-3ª-edição
Guia de-aplicação-de-inversores-de-frequência-weg-3ª-ediçãoGuia de-aplicação-de-inversores-de-frequência-weg-3ª-edição
Guia de-aplicação-de-inversores-de-frequência-weg-3ª-edição
 
Ferramentas e acessórios
Ferramentas e acessóriosFerramentas e acessórios
Ferramentas e acessórios
 
Ctc m1 a_v2_t
Ctc m1 a_v2_tCtc m1 a_v2_t
Ctc m1 a_v2_t
 
Ficha teorica tratamento de dados
Ficha teorica tratamento de dadosFicha teorica tratamento de dados
Ficha teorica tratamento de dados
 
Guia de aplicacao_de_inversores_de_frequencia
Guia de aplicacao_de_inversores_de_frequenciaGuia de aplicacao_de_inversores_de_frequencia
Guia de aplicacao_de_inversores_de_frequencia
 
Metrologia
MetrologiaMetrologia
Metrologia
 
Curso de programação de PLC Omron
Curso de programação de PLC OmronCurso de programação de PLC Omron
Curso de programação de PLC Omron
 
Modelos de requerimentos
Modelos de requerimentosModelos de requerimentos
Modelos de requerimentos
 
Elementos de máquinas 2
Elementos de máquinas 2Elementos de máquinas 2
Elementos de máquinas 2
 
Cst mecânica ferramentas e seus acessórios
Cst mecânica ferramentas e seus acessóriosCst mecânica ferramentas e seus acessórios
Cst mecânica ferramentas e seus acessórios
 
Ferramentas
FerramentasFerramentas
Ferramentas
 
Mecânica - Ferramentas e Acessórios
Mecânica - Ferramentas e AcessóriosMecânica - Ferramentas e Acessórios
Mecânica - Ferramentas e Acessórios
 

Kürzlich hochgeladen

DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholacleanelima11
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......suporte24hcamin
 
AULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobreAULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobremaryalouhannedelimao
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoGentil Eronides
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 

Kürzlich hochgeladen (20)

DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanholaSLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
SLIDE DE Revolução Mexicana 1910 da disciplina cultura espanhola
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......Introdução a Caminhada do Interior......
Introdução a Caminhada do Interior......
 
AULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobreAULA DE CARIOLOGIA TSB introdução tudo sobre
AULA DE CARIOLOGIA TSB introdução tudo sobre
 
BNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimentoBNCC Geografia.docx objeto de conhecimento
BNCC Geografia.docx objeto de conhecimento
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 

Introdução aos Sistemas Microprocessados

  • 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órica Junho/2007 Prof. Denny Daniel Collina denny@deii.cefetmg.br
  • 2.
  • 3. Índice Analítico 1. 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._______________________________________________________________ 17 2. 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._____________________________________________________________ 33 3. 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
  • 4. 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._______________________________________________________ 79 A. O Código ASCII. ______________________________________________________________________ 81 B. 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. _______________________________________ 90 C. Referências Bibliográficas._____________________________________________________________ 91 Índice II
  • 5. Í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
  • 6.
  • 7. 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, fossem elas automáticas ou manuais. Tal preocupação tinha como objetivo minimizar esforços, o desgaste do agente humano 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ão na 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 mesmas tarefas que um humano pode executar, mas os compu- tadores podem fazê-lo com muito maior velocidade e precisão. Isto devido ao fato de os computadores reali- zarem todos os seus cálculos e operações um passo por vez e de demandar uma pequena fração de tempo para executar cada passo. Ao contrário dos humanos, um computador não pensa! Um computador necessita de um jogo completo de instruções que lhe informem exatamente o que fazer a cada passo para desenvolver suas tarefas. Este con- junto de instruções, chamado de programa, é preparado por 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 na unidade 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, um por vez, interpreta-os e executa a operação correspon- dente. Seria impossível listar todas as aplicações dos computadores. 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 complexas e devem ser calculadas para muitos valores diferentes das variáveis do sistema. Um computador pode calcular estas 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 processar dados comerciais ou realizar cálculos de engenharia, no sentido de que os resultados não têm necessidade imediata (isto é, dentro de alguns milisegundos ou segundos). Os computadores são, muitas vezes, usados em aplicaçõ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 no controle 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
  • 8. 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 de pesquisa, e em aplicações comerciais para pequenos negócios. Seu uso ainda ocorre, mas está recebendo boa 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 mainframes variam da resolução de problemas científicos de engenharia complexos até aplicações comerciais orientadas para 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: a unidade central de processamento, a unidade de memória e as unidades de entrada e saída. A interligação destas 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 e finais das várias operações. Dentro desta unidade podemos destacar três subgrupos: memórias da família RAM, da família ROM, e registradores. A Unidade de Entrada é composta por todos os dispositivos utilizados para receber informações e dados que são externos ao computador, e introduzi-los nas unidades de memória ou na ULA. Alguns dispositivos de entrada 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 do computador 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.
  • 9. 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
  • 10. 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 - a pastilha do microprocessador. Como sabemos, o μP funciona como a unidade central de processamento do microcomputador. Em essência, o μP é o coração do microcomputador, pois suas características definem as características do microcomputador. Sua velocidade determina a velocidade máxima do microcomputador, e seus 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 que uma 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 demais componentes. 8 Capítulo 1.
  • 11. 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 de entrada e saída, e as memórias RAM e ROM. Os pinos do chip dão acesso apenas aos dispositivos de E/S e a alguns 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) e secundá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ções armazenadas 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
  • 12. 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 armazenadas são denominadas memórias de leitura e escrita (RWM), que são mais conhecidas por outra sigla (RAM). As que 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, ou entã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 com a 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, enquanto alguns, 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 outra caracterí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.
  • 13. DRAM (Dynamic RAM): Cada célula desta memória é construída por apenas um transistor MOS e de um pequeno capacitor, veja a Figura 1-11. O armazenamento dos níveis lógicos de um bit ocorre sob a forma de níveis diferentes de carga do capacitor intrínseco ao circuito. A vantagem deste tipo de memória reside no fato de ter o número reduzido de componentes por célula, o que traz um grau de integração bastante elevado, além de 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 ele nã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 de uma 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. Todas as ROMs são não voláteis, isto quer dizer que o padrão de bits gravados na memória é permanente, não pode ser 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 de memória só é adquirido através de encomenda direta ao fabricante e os lotes mínimos são de alguns milhares de 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ão pode ser apagada e poder ser considerada como uma ROM. Normalmente é utilizada em equipamentos cujo programa já foi testado e aprovado, mas que não têm um volume de produção para justificar a encomenda de ROM 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, diferente da ROM e da PROM, tem a vantagem de poder ser apagada, se necessário. Isto se faz através da exposição da 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 se expor o chip à luz, o encapsulamento de uma EPROM é construído em cerâmica e dotado de uma janela de quartzo. Estes dois materiais colaboram para o seu alto custo. EEPROM (Electrically Erasable PROM): Este tipo de memória foi desenvolvida para suplantar algumas desvantagens das EPROMs: necessidade da retirada do chip do circuito para o apagamento completo para permitir 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 seu custo é 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
  • 14. Memória Flash: Ou flash E2PROM, é uma variante da E2PROM, sua principal diferença refere-se ao fato de que ela não permite o apagamento de uma palavra apenas. Deve-se apagar todo o chip, ou um setor, para que se possa regrava-lo. Apesar deste inconveniente, as memórias flash que têm a vantagem de possuírem células com estrutura mais simples que as E2PROMs e permitem um maior nível de integração o que permite a reduçã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 quer dizer 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 que comanda 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 da unidade de entrada, os valores intermediários gerados durante o processamento, os valores finais que vão ser enviados 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 nome de 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 os meios 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 de se preencher todo o mapa de memória. Utiliza-se a quantidade de memória necessária para o funcionamento adequado do equipamento. Outro ponto a observar é que não existe a obrigatoriedade do segmento de programa estar posicionado na memória “antes” do segmento de dados. Estes segmentos podem ser alocados na memória em qualquer ordem 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.
  • 15. 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 que tem 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 o microprocessador 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 de forma 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 os dados 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 uma linguagem que chamamos de linguagem de máquina ou código objeto. Na Figura 1-13 podemos observar um pequeno 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 76h Figura 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 ser humano. Evidentemente os primeiros computadores eram programados em linguagem de máquina, entretanto esta linguagem possui uma série de inconvenientes, tais como: os programas são muitos longos, cansativos de serem 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 programa Introdução aos Computadores. 13
  • 16. 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ção completa. O μP Z80 dispõe de instruções que ocupam 1, 2, 3 e até 4 bytes, portanto, ao se traduzir uma linha de 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 da instruçã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 na Figura 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,“. Esta instruçã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 entendimento do 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 em muitas 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. Se ao invés de utilizar como operando da instrução de desvio condicional, um número, fosse utilizado um label que rotulasse a instrução para onde o salto deveria ser executado, alterações no programa não exigiriam alterações no 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 a ser 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.
  • 17. É neste contexto que se inserem as linguagens de alto Início nível ou linguagens automáticas que foram responsáveis pela Etapa 1 crescente difusão dos computadores provocando a sua utili- Programa: editor de texto zação em massa, pois o usuário passou a não ter mais a ne- Função: edição do arquivo fonte cessidade de conhecer a fundo a máquina e nem sua lingua- Resultado: programa fonte ".asm" gem assembly. Bastam conhecimentos matemáticos ou es- Etapa 2 pecíficos de sua área e o conhecimento dos detalhes da lin- Programa: assembler guagem de alto nível. Outra razão é que o usuário tem a Função: tradução para código objeto possibilidade de usar programas prontos, desenvolvidos por Resultado: arquivo objeto ".obj" outros, e que não dependem do equipamento que ele possui, Etapa 3 crescendo rapidamente o número de pacotes de programas Programa: linker disponíveis. Função: montagem e geração do código executável Resultado: arquivo executável ".hex" Etapa 4 Programa: simulador 1.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 correta da 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 N variável, pois a programação possui uma ampla variedade de execução real alternativas 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 pelo de trabalho, sem a qual, torna-se impossível fazer uma pro- microprocessador utilizando E/S real ou simulada gramaçã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 ser alcançados e exatamente que tarefa deve ser realizada. Se este programa for processado em um equipamento já disponível, verificar sua capacidade de execução do programa, sua capacidade de memória, seus periféricos e 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ídas que 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ções que 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 digrama visto 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 fundamental para a sua correção (depuração). Introdução aos Computadores. 15
  • 18. 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 mais fá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 em linguagens de baixo nível, devido ao fato que cada instrução possui um código de máquina correspondente. No entanto, este processo é lento, tedioso e suscetível a erros. Na prática, utilizam-se programas para a tradução do 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 que nã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 programas tradutores. 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 linguagem assembly, para um programa objeto em linguagem de máquina. Existem diversos tipos de assemblers, pois como 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 de compiladores, 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 ainda convertê-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 da memó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 na memó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 encadeamento de 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.
  • 19. 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 do que teríamos ao executá-lo diretamente no equipamento real. Informações como conteúdo de registradores e o estado 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 executada mais 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 o hardware do equipamento, sua simulação deixa a desejar. Este é o caso, por exemplo, da necessidade de ler dados 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 problemas de 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ção de proclamar a infalibilidade desta ferramenta. É interessante salientar que a ferramenta da simulação deve ser encarada 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 mais reais 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
  • 20.
  • 21. 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ção do 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 que utilizaremos. 2.1 Elaboração do fluxograma. Para efeito de padronização, iniciaremos apresentando o formato de alguns dos blocos mais usados na elaboraçã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
  • 22. 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ínuo sem 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 entra em 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. Na Figura 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 e 20 Capítulo 2.