AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e...

24
AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ORGANIZAÇÃO DE COMPUTADORES PROF. ADÃO DE MELO NETO

Transcript of AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e...

Page 1: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

AEDB

CURSO DE SISTEMAS DE INFORMAÇÃO

APOSTILA DE ORGANIZAÇÃO DE COMPUTADORES

PROF. ADÃO DE MELO NETO

Page 2: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

2Organização de Computadores

Prof. Adão de Melo Neto

PREFÁCIO

Esta apostila não tem a pretensão de ser uma obra inédita no assunto. Constitui-se de umacompilação resumida dos melhores títulos bibliográficos sobre Organização de Computadores.Desta forma, o mérito da produção dos textos é reconhecido aos autores destas obras. Esta apostila éapenas um documento de apoio à disciplina de Organização de Computadores nas instituições deensino superior.

Prof. Adão de Melo Neto

Page 3: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

1 INTRODUÇÃO, SISTEMAS DE COMPUTAÇÃO, HISTÓRICO

Um computador digital é uma combinação de circuitos e dispositivos digirais que podemrealizar uma seqüência programada de operações com mínima intervenção humana. Es ta seqüênciade operações é chamada de programa. O programa é um conjunto de instruções codificadas que éarmazenada na memória interna do computador juntamente com todos os dados de que o programanecessita.

1.1 Organização de um computador Básico

Todos os computadores contém cinco elementos ou unidades essenciais: a unidade 1ógica earitmética (UIA). a unidade de memória, a unidade de controle, a unidade de entrada e a unidadede saída. A interconexão básica destas unidades é apresentada na Figura 1. As setas mais largasrepresentam dados ou informações na verdade consistem em um número relativamente grande delinhas paralelas. As setas mais estreitas, por sua vez , representam sinais de controle quenormalmente consistem em uma ou poucas linhas.

Fig. 1 – Organização Básica de um Computador

Unidade Logica e Aritmetica

A ULA e a área do computador na qual as operacões lógicas e aritmeticas são realizadas sobre osdados. 0 tipo de operação realizada édeterminado pelos sinais da unidade de controle (seta 1). Os dados aserem operados pela ULA podem ser oriundos da unidade de memória (seta 2) ou da unidade de entrada(seta 3). Os resultados das operações realizadas na ULA podem ser transferidos tanto para a unidade dememória para armazenamento (seta 4) como para a unidade de saída (seta 5)

Page 4: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

2

Unidade de MemoriaA memória armazena grupos de dígitos binarios (palavras) que podem representar instruções

(programa), que o computador vai executar, e os dados que serãoo manipulados pelo programa . Amemória tambem serve para o armazenamento de resultados intermediários ou finais das operaçõesaritméticas (Seta 4). A operação da memória é controlada pela unidade de controle (seta 6), que sinalizauma operacão de leitura ou uma operação de escrita. Uma determinada posição de memória é acessadapela unidadede controle que fornece o código de endereço apropriado (seta 7). Informações oriundas daULA ou da unidade de entrada (seta 8) podem serem escritas na memória, também sob o controle daunidade de controle. Informações podem ser lidas da memória para a ULA (seta 2) ou para a unidade desaída (seta 9).

Unidade de EntradaA unidade de entrada consiste em todos os dispositivos utilizados para obter informações e dados

externos ao computador e colocá-los na unidade de memória (seta 8) ou na ULA (seta 3). A unidade decontrole determina para onde a informação de entrada é enviada (seta 10). A unidade de entrada é utilizadapara colocar programas e dados na unidade de memória antes de iniciar o pro- cessamento. Esta unidadetambém é usada para a entrada dados de dispositivos externos na ULA durante a cxecução de umprograma . Alguns dispositivos de entrada .comuns sao: teclados, modems, unidades de disco magnético.

Unidade de SaidaA unidade de saída consiste em dispositivos utilizados para transferir dados e informações do

computador para o "mundo exterior". Os dispositivos de saída são acionados sob o comando da unidade decontrole (seta 12) e podem receber dados da memória (seta 9) ou da ULA (seta 5). Exemplos dedispositivos de saída comuns sao: displays a LEDs, lâmpadas indicadoras. impressoras, unida des de fitaou disco, monitores de vídeo e conversores D/A.

lnterfaceamentoInterfaceamento em computadores é definido como a transmissão digital de informacão entre um

computador e seus periféricos de modo compatível e sincronizado. Muitos dispositivos de entrada/saidanão são diretamente compatíveis com o computador devido a diferença em carac rerísticas comovelocidade de operação, formação dos dados (por exemplo: BCD. ASCII. binario). modo de transmissãodos dados (por exemplo: serial, paralelo) e nível 1ógico dos sinais. Estes dispositivos de E/S requisitamcircuitos especiais de interface que lhes permitam comunicarem-se com as áreas de controle, memória eULA do sistema computacional.

Unidade de ControleEla comanda a operaão de todas as outras unidades fornecendo sinais de controle e temporização.

De um certo modo a unidade de controle é como o maestro que e responsável por manter cada um dosmembros da orquestra em sincronismo. Esta unidade contém circuitos lógicos e de temporização quegeram os sinais apropriados necessários para executar cada instrução em um programa.

A unidade de controle busca uma instrução da memória enviando um endereco (seta 7) e umcomando de leitura (Seta 6) para a unidade de memória. A palavra da instrução armazenada na posiçâo dememória é entao transferida para a unidade de controle (seta 11). Esta palavra da instrucão esta emalguma forma de código binário e é então decodificada pelos circuiros lógicos na unidade decontrole para determinar que instrução esta sendo invocada. A unidade de controle utiliza estainformação para enviar os sinais apropriados para as unidades restantes de modo a executar a operaçãoespecífica.

Page 5: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

3

Esta sequencia repetitiva de busca/execução continua até que o computador seja desligado ou queo RESET seja acionado. 0 REET sempre faz o computador buscar sua primeira instrução no programa,normalmente no endereço 0000.

Unidade Central de Processamento (CPU)Na figura 1. a ULA e a unidade de controle são mostradas combinadas em uma unidade chamada

unidade central de processamento (CPU -central processing unit). Isto comumente é feito para separar océrebro real do computador das outras unidades. Em um microcomputador, a CPU usualmente éimplementada em um único chip, o microprocessador. A CPU também contém um conjunto de:registradores que realiza funções especiais. Estes rcgistradores também podem fornecer armazenamentotemporário para os dados dentro da CPU sem a necessidade de acessar a memória externa.

1.2 ELEMENTOS BASICOS DE UM MICROCOMPUTADOR (µC)

Um microcomputador contém muitos elementos, e o mais importante é o microprocessador. 0microprocessador tipicamente e um único CI (circuito integrado) que contém todos os circuitos dasunidades de controle e 1ógica e aritmética, em outras palavras, a CPU. É comum chamar omicroprocessador de CPU(microprocessor unit - unidade microprocessadora), jé que ele e a CPU domicrocomputador. Isto e ilustrado na Fig. 2, onde os elementos basicos de um microcomputador estaomostrados.

A unidade de memoria mostra dispositivos RAM e ROM.

A seção RAM é utilizada para armazenar programas e dados que serão frequentemente alteradosdurance a operação. Também é usada como armazenamento para resultados intermediarios ou finais dasoperações realizadas durante a execução de um programa.

A seção ROM armazena instruções e dados que não mudam e não devem ser perdidosquando o sistema for desligado. Por exemplo, ela armazena o programa de carga inicial que omicrocomputador executa ao ser ligado.

As seções de entrada e saéda contém os circuitos de interface necessários para permitirque os periféricos se comuniquem adequadamente com o restante do computador.

Em muitas aplicações de controle dedicado, todos os elementos básicos de um micro- computadorsao integrados em um unico CI, o microcomputador em um único chjp

Page 6: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

4

Fig. 2 – Elementos Básicos de um Computador

0 Microprocessador (MPU)A 1ógica interna da CPU pode ser imaginada como sendo composta de três seções básicas: a seção

de controle e temporização, a seção de registradores e a ULA (Fig. 3).

A principal função da seção de temporização e controle é buscar e decodificar (interpretar)códigos de instruções da memória de programa e então gerar os sinais de controle necessários requisitadospelas outras secões da CPUde modo a realizar a execução das instruções. Esta seção também gera os sinaisde temporização e controle (por exemplo: R/W, clock) que são necessários pela RAM e ROM externas epelos dispositivos de E/S.

A seção de rcgistradores contém vários registradores (internos a CPU), e cada um deles realizauma função especial.

O mais importante é o program counter (PC), que arrnazena os endereços dos códigos dasinstrucões a medida que sao buscados da memoria..

Outros registradores da CPU são usados para realizar funções tais como armazenamento decodigos de instrução a medida que vão sendo decodificados (registrador de instrução, IR na Fig. 3),manutenção do dado sendo operado pela ULA (A), armazenamento de endereços de dados a serem lidosda memória (data pointer - ponteiro de dados, DPTR). e muitas funções de armazenamento e contagem(R0-R7).

Todos os microprocessadores tem um registrador em especial que é muito utilizado chamado deacumulador ou registrador A. Ele armazena um operando para qualquer instrução 1ógica ou matemática, eo resultado é armazenado no acumulador depois de a instrução ser executada. Algumas vezes ele éabreviado como Acc.

A ULA realiza uma diversidade de operações 1ógicas e a aritméticas sobre os dados. Estasoperações sempre incluem adição, subtração, AND, OR, EX-OR. deslocamento, incremento e decremento.

Page 7: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

5

As CPUs mais avançadas possuem ULAs que podem multiplicar e dividir. Durante a operação de ummicrocompucador, as operações que uma ULA deve realizar estão sob o controle da seção detemporização e controle, que, naturalmente. faz o que é informado pelos códigos de instrução que ela lê damemória.

Fig. 3 – Principais Áreas Funcionais de um microprocessador1.3 PALAVRAS

A principal unidade de informação em um computador é um grupo de bits denominado palavra. 0número de bits que forma uma palavra é o tamanho da palavra do computador. Computadoresfrequentemente são descritos em termos do seu tamanho de palavra tal como um computador de 8 bits, umcompurador de 16 bits e assim por diante. Por exemplo. um computador de 16 bits é um computador noqual instruções e dados são armazenados na memória como unidades de 16 bits e são processadas pelaCPlJ em unidades de 16 bits. 0 tamanho tamanho da palavra também indica o tamanho do barramento dedados que carrega dados entre a CPU e a memória e entre a CPU e os dispositivos de E/S.

Os computadores de maior porte apresentam tamanhos de palavras na faixa de 32 a 64 bits. De ummodo geral, um computador com um tamanho de palavra maior pode executar programas numa taxa maiselevada porque mais dados e mais instruções estão presentes em uma palavra.

Como sabemos, um grupo de 8 bits e chamado um byte. Pode-se dizer que um computador de 8bits (16 bits) tem uma palavra de l byte (2 bytes).

Tipos de PalavrasUma palavra armazenada na memória de um computador pode conter dois tipos de informações:

instruções ou dados. Os dados podem ser infomações numéricas ou caracteres que devem ser processadospor um programa que a CPU está executando.

Segue um exemplo de como o valor numerico +8610 será armazenado numa palavra de 8 bits:

01010110

A seguir é apresentado como o código ASCII para o caracter “V” seria armazenado numa palavrade 8 bits:

01010110

É responsabilidade do programador saber o tipo de dados que está sendo armazenado e garantir que oprograma interprete e processe os dados adequadamenre .1.4 INSTRUÇÕES

Para a maioria dos computadores, as palavras de instrução sao formadas por duas unidades basicasde informação: a operação a ser executada e o endereço do operando que deve ser usado na operação.

Page 8: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

6

A Fig. 4 mostra um exemplo de uma palavra de instrução de endereço único para o 8051. Os oitobits da palavra de instrução estão divididos em duas partess. A primeira parte da palavra (bits 7 a 3)contém os cinco bits do código de operação (opcode). 0 opcode representa a operação que o computadoresta sendo instruído a executar, como por exemplo adição, subtração ou transferência de dados. A segundaparte (bits 2 a 0) contém o endereço do operando. que indica a localização na memória onde o operandoesta armazenado .

Fig. 4 – Típica palavra de instrução de endereço único

Neste caso (5 bits de opcode e 3 bits de endereço), o numero total de instruções possiveis(opcodes) seria 25 = 32. 0 numero total de regiscradores ou posições na memória seria 23 = 8.

Como um exemplo, a instruçao do 8051 ".MOVE para o acumulador os dados do registrador 3" écodificada da seguince maneira:

11101 011

opcode endereço do rcgistrador

0 opcode representa mover um byte de dados de um registrador para o A (acumulador). Os ultimastres bits especificam que o byte de dados que deve ser transferido está no registrador 3 (0112 ).

Esta instrução poderia ser armazenada na memória de um computador juntamente com um certonúmero de instruções que formariam um programa. Em um instante apropriado. esta instrução seria lida damemória e depois executada. 0 resultado de sua execuçãoseria:

“A palavra de dados de 8 bits contida no registrador R3 é transferida (na verdade copiada) para oacumulador. 0 conteudo original do acumulador e perdido.”

Instruções de Multiplos Bytes

A instrução da Fig. 4 é uma instrução de um byte. Outras instruções de um byte não temnecessidade de um operando. Um exemplo é a instrução para limpar o acumulador (CLR A), que instrui ocompilador a limpar todos os flip-flops do acumulador. Para esta instrução, todos os oito bits sãoconsiderados parte do opcode.

Em uma instrução de dois bytes, o primeiro byte sempre contém o opcode. 0 propósito do segundobyte (operando) e especificar os dados que serão utilizados na instrução. Existem vários métodos deespecificar estes dados (modos de endereçamento), tais como o endereçamento direto e endereçamentoimediato.

No primeiro o operando representa o endereço que indica ao computador onde os dados estãoarmazenados. No segundo o operando é o proprio valor em vez do endereço do valor.

Page 9: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

7

Uma instrução de três bytes é necessária quando o operando deva ser um numero de 16 bits.

Fig. 5 – Formatos de instruções usadas em microcomputadores de 8 bits

Para estas instruções que possuem mais de um byte, eles devem estar armazenados em posições dememória sucessivas. Isto é ilustrado na Tabela 1 para uma instrucao de três bytes.

A coluna a esquerda relaciona as posições de memória onde cada byte (palavra) e armazenado.Estes endereços são fomecidos em código hexadecimal. A segunda coluna fornece a palavra, emrepresentação binária, que está armazenada na memória, e a terceira coluna apresenta o equivalente emhexadecimal desta palavra .

Por exemplo, considere a instrução que comanda o computador a fazer um desvio para a primeirainstrucao e iniciar o programa novamente. Esta instrução e mostrada na Tabela 1 do mesmo modocomo ela apareceria na memória. 0 primeiro byte é o opcode (02) que diz ao computador que ele devedesviar. Este opcode também informa a unidade de controle que é de três bytes, e, para que ela possasaber para onde desviar , ela deve buscar na memória os dois próximos bytes. Juntos, estes bytes formam oendereço de 16 bits da próxima instrução ao a ser buscada na memória. Lembre-se de que o contador deprograma sempre contém o endereço da próxima instrução.

Quando o contador de programa tiver avançado para 2377. o computador irá buscar na rnemória oopcode 02. Ele então busca os próximos dois bytes (20 e 50) e os carrega no contador de programa.. 0novo endereço do contador de programa significa que a próxima instrução será buscada no endereço2050, em vez de 237A.

Page 10: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

8

Tab. 1 – Instruções de um programa armazenadas na memória

1.5 EXECUTANDO UM PROGRAMA EM LINGUAGEM DE MAOUINAAs palavras de instrução apresentadas até agora são chamadas de instruções em linguagem de

máquina porque elas são represencadas por 0s e ls, a única linguagem que uma máquina (computador)compreende. Muitas outras linguagens são usadas para programar computadores como por exemploBASIC ou C. Estas linguagens de alto nível são projetadas para facilitar a elaboração de um programa .

Tab. 2 Algumas instruções do 8051

Estes programas de alto nível devem ser convertidos em instruções em linguagem de máquina(através de um programa chamado compilador) e colocadas na memória do computador antes que elepossa executá-las.

Para ilustrar com o um microcomputador executa um programa em linguagem de máquina,usaremos as instruções descritas na Tabela 2

Cada instrução é acompanha por seu mnemônico, que é mais fácil de lembrar do que o opcode.

0 conjunto completo de mnemônicos para o conjunro de instruções de um computador é chamadode sua linguagem de montagem (assembly ).

Usaremos algumas das instruções da Tabela 13-2 para escrever um programa em linguagem demáquina que começa no endereço 000011 e faça o seguinte:

Page 11: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

9

1. Desvie para o endereço correto para iniciar o programa.

2. Decida se o rregistrador acumulador (A) está com valor 0.

3. Se A ≠ 0, mostre o valor do acumulador na porta 1.

4. Aguarde l segundo.

5. Decremente o valor do acumulador de 1.

6. Repita o passo 3 até que o valor do acumulador seja 0.

Na Tabela 3 as duas primeiras colunas são o programa em linguagem de máquina: as outras foramincluídas para auxiliar a descrição.

A primeira coluna relaciona os endereços em hexadecimal de cada posicao de memória que estasendo usada pelo programa.

A segunda coluna fornece o equivalente em hexadecimal da palavra armazenada em cada posicaode memória.

A terceira coluna mostra os mnemônicos da linguagem assembly e o endereço do operando (seexisrir algum) associado com cada instrução.

A última coluna coluna descreve a operação realizada pela instrução. Por exemplo. a primeirainstrução do programa possui três bytes. 0 primeiro byte armazenado na posição de memória 0000H éopcode 02. 0 segundo e terceiro bytes armazenados nos endereços 0001H e 0002H formam o endereço dooperando 0100H. 0 mnemônico para esta instrução é LJMP 0100H. LJMP é a abreviação para umaoperação de desvio (Long Jump - grande salto) e l00H é o endereço de desvio.

0 programa começa a ser executado no endereço 0000 quando a alimentação é ligada, o que fazcom que o sistema seja ressetado. A instrução que geralmente está armazenada no endereço de reset éuma instrução de desvio, que faz com que o micro vá para o programa principal. 0 programa principalneste caso começa em 0100 onde se toma a decisão de ir cxecutar o resto do programa em 010A ou deexecutar as instruções de 0102 a 0109. Qualquer que seja o caso.o micro em algum momento executará oresto do programa, a partir de 010A.

A Execução do ProgramaEste programa simples ilustra os diversos tipos de operações que acontecem quando um

computador executa um programa em linguagem de máquina

A operação inicia quando o operador ativa o pino de RESET ligando a alimentação. lsso vaiinicializar o contador de programa (PC) para uma contagem inicial de 0000. Como foi mencionado antes,o PC é um contador da unidade de controle que guarda os endereços do programa a medida que ocompucador vai executando este progra ma.

1. A unidade de controle busca o prirneiro byte no endereço 0000 conforme é determinado pelocontador de programa (PC). Este byte é 02H, que é o opcode da primeira instrução. Oscircuitos na unidade de controle determinam que este opcode pede que o programa deva serdesviado, e os dois próximos bytes (01 e 00) formam o endereço de desvio. Então, a unidade decontrole busca a parte alta e depois a parte baixa do endereço de destino.

2. Para executar a instrução os 16 bits do endereço de destino (0100H) são carregados nocontador de programa . A próxima instrução a ser executada estará no endereço 0100H.

3. 0 opcode 60H é buscado em 0100H é decodificado como um desvio condicional (JZ). Aunidade de controle também sabe que esta instrução possui dois bytes e então busca também oseu operando (O8H). Ele indica para a unidade de controle de quanto deve ser o desvio caso ascondições para que ele ocorra sejam alcançadas. 0 desvio deverá ocorrer apenas se o valor doacumulador for zero. A unidade de controle examina o acumulador, e se Acc = 0, ela avança ocontador de programa para o endereço 010AH. Se Acc ≠ 0. a unidade de controle vai buscar opróximo código de operação, neste caso. no endereço 0102H (considere que um determinado

Page 12: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

valor foi colocado em A).

4. A execução da instrução JZ simplesmente avança o contador de programa para o endereço0102H uma vez que Acc ≠ 0.

5. Um outro opcode é lido em 0l02H. A instrução F5 diz a seção de controle para transferir ovalor que está no acumulador. Para saber para onde ele deve ser transferido. o próximo byte dememória deve ser lido. Neste caso, o endereço (90H) significa que o valor deve ser escriro naporta # l.

6. 6. A execução desta instrução copia o conteudo do acumulador para o registrador da porta desaída. Este valor é escrito na porta de saída, que poderia estar conectada a um circuito quepemitisse ao usuario visualizar o número.

7. 0 PC é incrementado para 0104H, e um novo ciclo de busca é realizado. Esta instrução é umachamada para uma sub-rotina. Isto significa que o micro deve deixar esta parte do programa eir execucar algumas instruções que estão armazenadas em outro lugar na memória. Os doispróximos bytes (28H e 55H) dizem a CPU onde a sub-rotina está localizada.

8. Para executar um instrução de chamada de subrotina, a CPU deve guardar o lugar no programaao qual ela deve retornar após esta sub-rotina (endereço 0107H), e então carregar o PC com oendereço 2855H . Neste endereço. ela encontra a primeira instrução de um programa de esperade l segundo . A última instrução na sub-rotina seria um RET que faz com que o PC retorne aoendereço 0107H l segundo depois.

9. 0 opcode no endereço 0107H é lido e decodlificado como um comando de decrememo doacumulador. Esta é uma instrução de apenas um byte, e portanro nenhum operando é necessário. A execução da instrução ocorre dentro da CPU, e o número armazenado no acumulador édiminuído de 1. 0 PC é incrementado para apontar para a próxima instrução no endereço0108H.

10. No endereco 0108H, o opcode da próxima instrução (70H) é lido. A unidade de controlereconhece o opcode como sendo um JNZ (salte, se nao for zero), e ela sabe que deve tomaruma decisão baseada no conteúdo do acumulador.

11. Se o valor do acumulador chegar a zero, enãoo a CPU deve continuar executando o resto doprograma, fazendo um ciclo de busca no endereço 010AH.

12. Se o valor em A ainda for maior do que 00H, queremos repetir o laço e decrementar ossegundos até que o valor em A seja 0. Isto significa que devemos retornar ao endereço 0102H.Para saber de quanto é o desvio, um ciclo de busca deve ser realizado para pegar o operandoque esta no endereço 0109H. Este valor é combinado com o valor atual do PC para que o novoconteúdo do PC seja 0102H.

Page 13: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

Tab. 3 – Um programa simples em linguagem de máquina

13·9 ESTRUTURA TÍPICA DE UM MICROCOMPUTADOR0 microcomputador tem três barramentos que conduzem todas as informações e sinais necessários

a operação do sistema. Estes barramentos conectam o microprocessador (CPU) a cada um dos elementosde memória e de E/S, de modo que dados e informações possam ser trocados entre a CPU e qualquer umdestes elementos.

Em um microcomputador, todas as transferências de informacao são referenciadas a CPU. Quandoa CPU esta enviando dados para outro elemento do computador, isto é chamado de uma operação deescrita e a CPU esta escrevendo no elememo selecionado.

Quando a CPU está recebendo dados de um outro elemento isto é chamado de operação de leitura ea CPU está lendo o elemento selecionado. É muito importante perceber que os termos "leitura" e "escrita"sempre se referem a operações realizadas pela CPU.

Os barramentos envolvidos em todas as transferências de dados tem suas funções descritas aseguir:

Barramento de Endereço

Este barramento é unidirecional, porque a informação flui apenas em uma direção, da CPU para amemória ou para os elementos E/S. A CPU pode colocar níveis lógicos nas linhas de ende- reço eportanto gerar 216=65.536 endereços diferentes possíveis. Cada um destes endereços corresponde a umaposição de memória ou a um elemento de E/S.

Quando a CPU quer se comunicar com (ler de ou escrever em) uma certa posição de memória oudispositivo de E/S , ela coloca um código de endereço de 16 bits nos pinos de saída A0 a A15, e nobarramento de endereços. Estes bits de endereços são decodificados para selecionar a posição de memóriaou o dispositivo de E/S desejado. Este processo de decodificação geralmente necessita de circuitos dedecodificação que não são mostrados neste diagrama.

Barramento de Dados

Este é um barramenco bidirecional porque os dados podem ir para ou vir da CPU. Os oito pinos dedados da CPU, pinos D0 a D7. podem ser tanto entradas quanto saídas, dependendo se a CPU estarealizando uma operação de leitura ou de escrita. Durante uma operação de leitura, eles agem comoentradas e recebem dados que foram colocados no barramento pela memória ou por um dispositivo de E/Sselecionado pelo endereço colocado no barramento de endereço. Durante uma operação de escrita, os

Page 14: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

pinos de dados da CPU agem como saídas e colocam os dados no barra- menco de dados. que sãoenviados para a memória ou elemento de E/S selecionado.

Barramento de Controle

Este conjunto de sinais é usado para sincronizar as atividades dos elementos do mi-crocomputador. Alguns destes sinais de controle tais como ALE, /PSEN, /RD e /WR são enviados pelaCPU para outros elementos para informar a eles que tipo de operação esta sendo executada .

O sinal ALE (Address Latch Enable - habilitador do latch de endereço) está em nível ALTOenquanto a CPU está colocando a parte baixa do endereço em AD0 a AD7.. Este sinal habilita o latch deendereço a armazenar a parte baixa do endereço durante este intervalo.

O sinal /PSEN (Program Store Enable - habilitador da memória de programa) é BAIXO quando aCPU quer que a memória de programa coloque uma instrução no barramenro de dados.

0 sinal RD está em BAIXO quando a CPU quer que a memória de dados ou uma porta de entradaexterna coloque byte de dados no barramento de dados.

0 sinal /WR esta em BAIXO quando a CPU está colocando um byte de dados no barramento dedados que ela quer escrever na memória de dados ou em uma porta de saída externa.

Os elementos de E/S podem enviar sinais de controle para a CPU. Um exemplo é a entrada deRESET (RST) da CPU, que quando em nível ALTO faz com que a CPU vá para um estado inicial. Umouto exemplo é a entrada de interrupção (INTO), usada pe!os dispositivos de E/S para chamar a atençãoCPU quando ela está executando outras tarefas.

Portas de E/S0 programa pode tamhém fazer com que a CPU leia um dos dispositivos de entrada ou escreva em

um dos dispositivos de saída. Cada disposilivo de E/S é normalmente conectado ao sistema de barramentosdo microcomputador por meio de algum tipo de circuito de interface. A função deste circuito de interface éfazer o microcomputador e o dispositivo compatíveis de modo que dados possam ser facilmente trocadosentre eles. Um circuito de interface é necessário sempre que o dispositivo de E/S utilizar níveis detemporização ou formato de sinais diferentes daqueles do microcomputador.

Um dispositivo de E/S tem a capacidade de interromper a CPU enquanto ela estiver executando umprograma. Isto significa que um dispositivo de E/S pode enviar um sinal para a entrada de interrupção daCPU (INTO) para indicar que ele deseja se comunicar com a CPU. A CPU então irá suspender a execuçãodo programa que está sendo executado e irá realizar a operação esperada com o dispositivo de E/S que oestá interrompendo. As memórias do tipo RAM e ROM geralmente não possuem esta capacidade.

Temporização

Page 15: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

0 8051 contém um oscilador no próprio chip que gera o sinalde clock principal para

Fig. 6 – Estrutura Típica de um microcomputador de 8 bits

temporizar todas as suas operações. Um cristal externo é conectado a X1 e X2 para produzir umafrequência de clock precisa e estável (veja Fig. 6). Se soubernos que frequência é esta, podemos prevercom precisão quanto tempo cada instrução demora para ser executada. Para o 8051. a freqüência do cristalé geralmente próxima a 12 MHz. Todas as operações do sistema, tais como busca e execução deinstruções, leitura e escrita de dados, acontecem em períodos chamados de ciclos de máquina. Cada ciclode máquina é composto de 12 ciclos de clock. Praticamenre todas as instruções do 8051 necessitam de umou dois ciclos de máquina para serem executadas.

A execução da maioria das instruções envolve operações internas a CPU como por exemplo atransferencia de dados entre registradores, soma de números e assim por diante. Entretanto, três tipos deciclos de barramento distintos podem ser observados no Sistema de barramento externo, como mostra aTabela 4..

Durante um ciclo de máquina (12 periodos do clock), existe tempo suficiente para realizar duasbuscas ou para executar um ciclo de barramento de leitura de dados ou um ciclo de barramento de escritade dados. Cada ciclo de barramento é uma seqüência de eventos previsíveis:

1. A CPU coloca um endereço estável no barramemo de endereço (ALE esta ALTO).

2. A CPU ativa os sinais de controle para sinalizar uma transferência de dados (/PSEN, /RD ou/WR em BAIXO).

Você, ao olhar para esses quatro sinais de temporização e controle pode saber que tipo de ciclo debarramento está acontecendo, o que a informação presente no barramento significa e de onde veio estainformação.

0 diagrama de tempo da Fig. 7 mostra duas instruções sendo buscadas e executadas.

A primeira instrução carrega o número 3000H no registrador DPTR. A segunda instrução escreve o

Page 16: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

conteúdo do acumulador no endereço de memória externo especificado por DPTR.

Sempre que o sinal de controle ALE está em ALTO, existe um endereço no barramento de dados (AD0-AD7).

Sempre que /PSEN está em BAIXO, existe um byte de instrução nas linhas AD0-AD7.

Sempre que /WR esta em BAIXO. existe um valor de dados válido que a CPU colocou em AD0-AD7 para escrever na memória externa .

Neste exemplo, nada está sendo lido da memória externa de dados, e portanto /RD nunca vai paranível BAIXO.

Fig. 7 – Diagrama de Tempo para execução de duas instruções do 8051

Tab 4 – Ciclos de Barramento do 8051

Page 17: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

SISTEMAS DE NUMERAÇÃO

2 INTRODUÇÃO

Quando mencionamos sistemas de numeração estamos nos referindo à utilização de umsistema para representar uma numeração, ou seja, uma quantidade. Sistematizar algo seria organizar,colocar em ordem, submeter à determinadas regras. Um sistema de numeração seria uma forma deorganizar a representação de um número. Exemplo: Quando contamos algo ou expressamos algumvalor, utilizamos no dia a dia um sistema de numeração, que é o sistema decimal. Para isto seguimos aorganização dos números, pois eles obedecem à uma certa ordem, e uma das regras é utilizar somente oscaracteres 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 combinados, obedecendo à ordenação, para formar dos números.

Mas existem inúmeros sistemas de numeração, pois existem diversas formas de serepresentar um número. Um chinês que tem dois carros, para transmitir a informação de que o númerode carros que ele possui é dois, se expressa de um modo diferente de um americano que tenha osmesmos dois carros mas as formas que ambos utilizam para representar a quantidade de carros tempontos em comum: são dois sistemas de numeração.

A representação de um número em um sistema de numeração diferente muda, para um mesmovalor, assim como as operações com números nestes novos sistemas devem ser readequadas. Estasdiferenças entre os sistemas de numeração são utilizadas como ferramenta de cálculo e projeto emdiversas áreas, como a computação.

Quando desejamos registrar um valor de tensão igual a trinta e quatro vírgula cinquenta e doisvolts, usamos os caracteres 3, 4, 5, e 2 dispostos numa certa ordem: 34,52 volts. Esta representação éconhecida como notação posicional do valor observado, onde a importância de cada caracter dependeda sua posição em relação aos demais caracteres. Os caracteres tem maior significação no sentido dadireita para a esquerda. No caso, os caracteres 3 e 2 são, respectivamente, o de maior e menorsignificação.

2.1 BaseOs sistemas de numeração foram criados pelo homem com o objetivo de quantificar as

grandezas relacionadas às suas observações. Tais sistemas foram desenvolvidos através de símbolos,caracteres e do estabelecimento de regras para a sua representação gráfica. Ao conjunto destessímbolos ou caracteres chamamos de base ou raiz do sistema, “r”.

A base de um sistema de numeração é geralmente é o número de caracteres diferentesutilizados para compor o sistema.

O sistema decimal é dito de base 10 por utilizar somente 10 caracteres diferentes pararepresentar os números (os dígitos de 0 à 9) e a quantidade real representada pelos números temcomo base o valor 10.

Cada posição ocupada por um caractere no número possui um “peso” diferente, como no exemploabaixo:

3004 = 3 x 103 + 0 x 102 + 0 x 101 + 4 x 100

Page 18: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

O mesmo artifício é utilizado em outros sistemas de numeração, ou seja, cada caractere quecompõe um número possui um “peso” de potências do valor da base e que variam de acordo com aposição ocupada pelo caractere no número, no caso do sistema decimal, potências de 10.

Daremos ênfase ao sistema de numeração binário (base 2). Quando utilizamos sistemas de numeração diferentes, procura-se adotar uma convenção

para a identificação de números com bases de numeração diferentes.

Exemplo: 111002 = 2810 → o número 11100 no sistema de base 2 é igual ao número 28 nosistema decimal.

2.2 O SISTEMA DECIMAL DE NUMERAÇÃOOs números decimais são os mais utilizados atualmente, de nosso conhecimento. Uma

representação posicional no sistema decimal pode ser desenvolvida numa forma polinomialque envolve um somatório de potências de 10. Como exemplo, o número três mil e quatro:

3004 = 3 x 103 + 0 x 102 + 0 x 101 + 4 x 100

É comum utilizarmos como índice, à direita do dígito menos significativo na representaçãoposicional, para identificar a base de representação. No caso da base decimal, este índice pode seromitido.

2.3 O SISTEMA BINÁRIO DE NUMERAÇÃO

O sistema de numeração de base 2 é chamado de sistema binário (dois), pois utilizasomente dois dígitos: 0 e 1. Todos os números são representados conforme o posicionamento e aquantidade destes dois dígitos.

A contagem segue o mesmo raciocínio utilizado no sistema decimal: após o último dígito,incrementa-se uma posição à esquerda e a posição à direita é zerada, repetindo-se toda aseqüência de números anterior:

1, 10, 11, 100, 101, 110,.....

Os números acima geralmente são chamados de números binários. Para evitar confusãocom o sistema de numeração decimal, lemos dígito por dígito no sistema binário:

10=hum,zero;1101=hum,hum,zero,hum.

Podemos expressar um número fracionário no sistema binário, utilizando a vírgula binária:

1,1001; 0,0001; 1101,0101,.....Este sistema pode ser utilizado para representar 2 estados de um elemento: uma

lâmpada (acesa ou apagada), uma chave (aberta ou fechada) pois nos cálculos teóricos, o sistemabinário é o mais utilizado para facilitar a manipulação dos dados.

Qualquer algarismo ou dígito de número binário é denominado de bit (binary digit).

Exemplo:

111011 → 6 bits.

Page 19: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

2.4 Conversão do sistema binário para o sistema decimal

Uma representação posicional no sistema binário pode ser desenvolvida numa formapolinomial que envolve um somatório de potências de 2. Assim, o equivalente decimal donúmero binário é obtido da representação polinomial do número na base 2, através doprocessamento da soma decimal.

Exemplo 1: Conversão do número binário 110010 para decimal:

O primeiro dígito da direita para a esquerda do número binário multiplica a potência de 20,o segundo dígito da direita para a esquerda multiplica 21, o terceiro dígito à direita multiplica 22, eassim por diante:

0 x 20 = 0 x 1 = 0

1 x 21 = 1 x 2 = 2

0 x 22 = 0 x 4 = 0

0 x 23 = 0 x 8 = 0

1 x 24 = 1 x 16 = 16

1 x 25 = 1 x 32 = 32

A soma destas multiplicações resulta no número decimal: 0 + 2 + 0 + 0 + 16 + 32 = 50

Assim: 1100102 = 5010

Exemplo 2:

101011101010012 = 1 x 213 + 0 x 212 + 1 x 211 + 0 x 210 + 1 x 29 + 1 x 28 + 1 x 27 + 0x 26 + 1 x 25 + 0 x 24 + 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20

101011101010012 = 8192 + 0 + 2048 + 0 + 512 + 256 +128 +0+32+0+8+0+0+ 1

101011101010012 = 1117710

Podemos representar um número decimal fracionário por um número binário, como noexemplo abaixo:

111,01012 = 1 x 22 + 1 x 21 + 1 x 20 + 0 x 2-1 + 1 x 2-2 + 0 x 2-3 + 1 x 2-4

111,01012 = 4 + 2 + 1 + 0 + 0,25 + 0 + 0,0625

111,01012 = 7,312510

Para a representação de números negativos pode-se utilizar o sinal “-”. Outro métodoutilizado na prática é o acréscimo de um dígito binário à esquerda do número para indicar estesinal, ou seja, para indicar se o número é negativo ou não. Os números binários compostos destamaneira são chamados números binários com sinal ou números de magnitude com sinal pois oprimeiro dígito representa o sinal e os dígitos restantes significam a magnitude do número.

Page 20: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

Geralmente o dígito 0 indica um número positivo e 1 indica um número negativo.

Exemplo: -32410 =110100

01002

dígito que indica um número negativo

2.5 Conversão do sistema decimal para o sistema binário

Efetua-se uma operação aproximadamente inversa à conversão de binário para decimal,utilizando o método das divisões sucessivas: divide-se sucessivamente o número decimal por 2até resultar em um número menor que 2 e os restos destas divisões juntamente com o últimoresultado formarão o número binário. Este mesmo método pode ser usado para outros sistemas denumeração de base diferente de 2, como o sistema hexadecimal, cuja base é 16.

Exemplo 1: Conversão do número decimal 1029 para o sistema binário.

• Divide-se o número por 2, que é a base do sistema binário. O resto destadivisão será o último dígito do número binário.

1029|2

1 514

• O resultado desta divisão é dividido novamente por 2, e o resto será openúltimo dígito do número binário. O resultado é dividido sucessivas vezes por 2, até aúltima divisão em que o resultado for 0 ou 1. O resultado da última divisão será oprimeiro dígito do número binário.

514|2

0 257 |2

1 128|2_

0 64|2_

0 32|2_

0 16|2_

0 8|2_

0 4|2

0 2 |2

0 1

restos das divisões

Page 21: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

1

sucessivas:10000000101 102910 =100000001012

Exemplo 2: Conversão do número 28374 decimal parabinário.

28374|2

0 14187|2

1 7093|2

1 3546|2

0 1773|2

1 886|2

0 443|2

1 221|2

1 110|2_

0 55|2_

1 27|2

1 13|2

1 6|2

0 3|2

1

restos das divisões sucessivas: 1101110110101102837410 = 1101110110101102

2.6 O Sistema Octal

O sistema de numeração de base 8 que utiliza os caracteres de 0 à 7 do sistema denumeração decimal, na respectiva ordem, é chamado de sistema octal. Este sistema é umasimplificação do sistema binário: 3 dígitos binários eram substituídos por 1 dígito no sistemaoctal, porque o valor máximo de um número de 3 dígitos binários é 111, ou seja, 7, que é onúmero máximo de caracteres diferentes utilizados pelo sistema octal (base 8).

2.7 O SISTEMA HEXADECIMAL DE NUMERAÇÃO

O sistema hexadecimal de numeração pode representar quatro bits do sistema binário por

Page 22: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

2

um dígito (o número máximo obtido com quatro dígitos binários é 1610, que é a base dosistema hexadecimal) utilizando os dígitos de 0 à 9 do sistema decimal e representando osnúmeros de 10 à 15 pelos caracteres A, B, C, D, E, F. A contagem no sistema hexadecimal seprocessa da seguinte forma:

1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A,1B,...

Exemplo de números binários: A16 = 101099F16 = 246310

BBC16 = 300410

2.8 Conversão do sistema hexadecimal para o sistema decimal

Uma representação posicional no sistema hexadecimal pode ser desenvolvida numaforma polinomial que envolve um somatório de potências de 16. Executa-se um processosemelhante à conversão dos números binários para decimal.

Exemplo 1: Conversão do número A01 hexadecimal para decimal.

• O primeiro dígito da direita para a esquerda do número hexadecimal multiplica apotência de 160, o segundo dígito da direita para a esquerda multiplica 161, o terceiro dígito àdireita multiplica 162, e assim por diante. Caso exista um dígito maior que 9, converte-lo paradecimal e mutiplicar normalmente:

1 x 160 = 1 x 1 = 10 x 161 = 0 x 16 = 0

A x 162 = A x 256 = 10 x 256 = 2560

• A soma destas multiplicações resulta no númerodecimal: 16 + 0 + 2560 = 2561

Assim:A0116 = 256110

Exemplo 2:BF2016 = B x 163 + F x 162 + 2 x 161 + 0 x 160

BF2016 = 11 x 4096 + 15 x 256 + 2 x 16 + 0 x 1

BF2016 = 45056 + 3840 + 32 + 0BF2016 = 4892810

Exemplo 3:600CD16 = 6 x 164 + 0 x 163 + 0 x 162 + C x 161 + D x 160

600CD16 = 6 x 65536 + 0 x 2998 + 0 x 256 + 12 x 16 + 13 x 1600CD16 = 39342110

2.9 Conversão do sistema decimal para o sistema hexadecimal

Page 23: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

2

Utiliza-se o método das divisões sucessivas: divide-se sucessivamente o número decimalpor 16 até resultar em um número menor que 16 e os restos destas divisões juntamente com oresultado da última divisão formarão o número hexadecimal.

Exemplo 1: Conversão do número decimal 4096 para hexadecimal.

4096|16

0 256|16

0 16|16

0 1409610 = 100016

Exemplo 2: Conversão do número 3748 decimal para hexadecimal.

3748|16

4 234|16

10 141410 = E161010 = A16374810 = EA416

2.10 Conversão do sistema binário para hexadecimal

A conversão de um número binário para hexadecimal pode ser feita de forma indiretapelos métodos de conversão anteriores: converte-se do sistema binário para o decimal edepois do decimal para o sistema hexadecimal. Porém, uma conversão direta do sistemabinário para o sistema hexadecimal pode ser efetuada substituindo-se quatro dígitos binários porum dígito hexadecimal, pois com quatro dígitos binários obtenho no máximo o número 16, que éa base do sistema hexadecimal.

Exemplo 1: Conversão do número 100101010 em binário para o sistema hexadecimal.10102 = 1010 = A1600102 = 216

12 = 116Portanto:1001010102 = 12A16

A conversão de hexadecimal para binário pode ser feita de forma indireta: converte-se dehexadecimal para decimal e de decimal para binário. Uma forma direta pode ser executada domodo contrário ao anterior: converte-se em quatro dígitos binários cada dígito hexadecimal. Oúltimo dígito do número hexadecimal fornece o valor dos quatro últimos dígitos do númerobinário.

Exemplo 3: Conversão do número CDF hexadecimal para o sistema binário.F16 = 1510 = 11112

Page 24: AEDB CURSO DE SISTEMAS DE INFORMAÇÃO APOSTILA DE ...adao/MICROTEXTO.pdf · programa interprete e processe os dados adequadamenre . 1.4 INSTRUÇÕES Para a maioria dos computadores,

2

D16 = 1310 = 11012C16 = 1210 = 11002Portanto:

CDF16 = 110011011112

Exemplo 4: Conversão do número 1002 hexadecimal para o sistema binário.216 = 00102016 = 00002016 = 00002116 = 00012

E00216 = 10000000000102