Tabela de conversao
Upcoming SlideShare
Loading in...5
×
 

Tabela de conversao

on

  • 21,609 views

 

Statistics

Views

Total Views
21,609
Views on SlideShare
21,609
Embed Views
0

Actions

Likes
3
Downloads
307
Comments
1

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Excelente material. Será de grande utilidade no planejamento de minhas aulas.
    Obrigado
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Tabela de conversao Tabela de conversao Document Transcript

  • M IN I ST É RI O D A E DU C AÇ ÃO UN I VE R SI D AD E A B ER T A DO B RA S IL – U A B INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE MATO GROSSO – IF - MT DIRETORIA DE ENSINOCURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET MODALIDADE A DISTÂNCIA - TSIAD DISCIPLINA: Algoritmos Professor Autor: Evandro César Freiberger João Paulo Delgado Preti 2009/1
  • Unidade II – Representação da Informação no Computador APRESENTAÇÃO 3 2. REPRESENTAÇÃO DA INFORMAÇÃO NO COMPUTADOR 3 2.1 REPRESENTAÇÃO DE VALORES NUMÉRICOS 3 2.1.1 BASE HEXADECIMAL 5 2.2 TABELA DE CONVERSÃO 7 2.2.1 AGRUPAMENTOS DE BITS CONHECIDOS 7 2.3 REPRESENTAÇÃO DE CARACTERES 7 2.4 REPRESENTAÇÃO DE VALORES LÓGICOS 8 2.5 REPRESENTAÇÃO DE CORES 8 2.6 REPRESENTAÇÕES NUMÉRICAS COM SINAL 8 2.6.1 VALORES INTEIROS COM SINAL 9 2.6.2 VALORES NÃO INTEIROS 10 2.6.3 INSTRUÇÕES DE MÁQUINA 11 BIBLIOGRAFIA 16Algoritmos 2
  • APRESENTAÇÃO Utilizaremos os ícones abaixo para que você facilmente localize aspectosimportantes do conteúdo: Utilizado para apresentar uma definição. Utilizado para apresentar uma dúvida pertinente ao contexto. Utilizado para indicar um aviso. Utilizado para indicar um ponto crítico ou problema a ser considerado. Utilizado para indicar uma referência na Internet. 2. Representação da Informação no Computador Como foi apresentado anteriormente, os computadores digitais usam a base bináriana representação e processamento de todas as informações manipuladas. Entender a base binária nos ajudará entender como funcionam as principais tarefasde um computador. 2.1 Representação de Valores Numéricos Nessa seção iremos entender como são representadas as informações nocomputador digital. Iniciaremos com a representação de valores numéricos (valoresinteiros sem sinal, valores inteiros com sinal e valores não inteiros), depois vamosconhecer outras representações, tais como: caracteres, cores e instruções de máquina. Para facilitar a compreensão da base binária primeiro faremos uma revisão nabase numérica decimal, a base usada no nosso cotidiano para representação denúmeros. É formada por 10 dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Por ser a base do nosso diaa dia, a maioria de nós nos esquecemos de como os valores são obtidos a partir de umconjunto de dígitos decimais, por exemplo, porque a junção dos dígitos “1” com “0” com“0” formam o valor 100 (cem). Vejamos: 100 = 1²0¹0º = 1 x 10² + 0 x 10¹ + 0 x 10º Assim temos: 100 + 0 + 0 = 100 Obs: os índices iniciam em zero na extremidade direita e crescem para aextremidade esquerda; o valor dez é decorrente da base decimal. 123 = 1²2¹3º = 1 x 10² + 2 x 10¹ + 3 x 10º Assim temos: 100 + 20 + 3 = 123 1235 = 1³2²3¹5º = 1 x 10³ + 2 x 10² + 3 x 10¹ + 5 x 10º Assim temos: 1000 + 200 + 30 + 5 = 1235 Agora vamos entender como funciona a base binária que é formada por apenasdois dígitos: 0 e 1, com esses dois dígitos são representadas todas as informações quesão manipuladas pelo computador. Para facilitar nós iremos analisar a representação deAlgoritmos 3
  • números inteiros positivos primeiramente. Analogamente à base decimal, os valores sãoobtidos de uma cadeia de zeros e uns binários. Veja exemplos: A cadeia “10” (lê-se: um zero e não dez, lembre-se!), qual será o valornumérico (base decimal) representado pela seqüência binária? 10 = 1¹0º = 1 x 2¹ + 0 x 2º = 1 x 2 + 0 x 1 = 2 na base decimal A cadeia “11” (lê-se um um e não onze). 11 = 1¹1º = 1 x 2¹ +1 x 2º = 1 x 2 + 1 x 1 = 3 na base decimal A cadeia “1000” (lê-se um zero zero zero e não mil). 1000 = 1³0²0¹0º = 1 x 2³ + 0 x 2² + 0 x 2¹ + 0 x 2º =1x8+0x4+0x2+0x1 = 8 na base decimal A cadeia “1000” (lê-se um zero zero um e não mil e um). 1001 = 1³ 0² 2¹ 1º = 1 X 2³ + 0 X 2² + 0 X 2¹ + 1 X 2º = 1 x 8 + 0 x 4 + 0 x 2 + 1 x 1 = 9 na base decimal Nos exemplos acima estávamos preocupados em obter um valor decimal (basecotidiana) a partir de uma seqüência de dígitos binários. Agora vamos obter dígitosbinários a partir de um valor decimal. Para isso vamos usar a operação de divisão,dividiremos o valor decimal por dois (base binária) varias vezes até obtermos a seqüênciacompleta. Uma observação importante é que usaremos a divisão inteira e não a divisãofracionada. Por exemplo: 5 / 2 = 2,5 na divisão fracionada 5 / 2 = 2 com resto 1 na divisão inteira Resultado = 101 (lê-se um zero um) Vamos entender o que foi feito. A primeira divisão, dividiu o valor 5 por 2 (divisãointeira), o resultado foi 2 e resto 1. A segunda divisão tomou o resultado da primeira, nocaso 2 e dividiu por 2, o resultado foi 1 e resto 0. A terceira divisão, tomou o resultado dasegunda, no caso 1 e dividiu por 2, o resultado foi 0, visto que não é possível realizar essadivisão inteira, então o resultado é 0 e resto 1. Por ultimo pega-se os restos das divisõesno sentido do ultimo resto para o primeiro e essa é a seqüência binária que representa ovalor 5 decimal. Vamos a outro exemplo. Assim a seqüência binária que representa o valor inteiro 13 é1101. Vamos verificar se o resultado está correto? Para isso temos quefazer a operação inversa, ou seja, transformar a seqüência binária emAlgoritmos 4
  • um número decimal, se obtivermos o valor 13 a nossa seqüência está correta. 1101 = 1³1²0¹1º = 1 x 2³ + 1 x 2² + 0 x 2¹ + 1 x 2º = 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1 = 8 + 4 + 0 + 1 = 13 2.1.1 Base Hexadecimal Outra base numérica muito usada na computação é a base hexadecimal. Essabase foi desenvolvida para que grandes cadeias de binários pudessem ser visualizadasde forma mais amigável. O computador manipula muito bem o binário, contudo o serhumano tem muita dificuldade, principalmente quando as cadeias de binários tornamextensas. Outra característica dos valores na base hexadecimal é que são facilmenteconvertidos para binários ou vice-versa, não necessitando fazer conversões para a basedecimal. Vamos conhecer as características dessa base numérica. Possui 16 símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F, onde: A = 10 B = 11 C = 12 D = 13 E = 14 F = 15, todos em valores decimal Dígitos Normais + 6 letras do alfabeto. As regras de conversão para a base decimal são as mesmas da base binária, oque muda é a base, veja exemplo abaixo: O valor 453 na base hexadecimal representa que valor decimal? 453 = 4²5¹3º = 4 x 16² + 5 x 16¹ + 3 x 16º = 4 x 256 + 5 x 16 + 3 x 1 = 1024 + 80 + 3 = 1107 na base decimal Agora vamos obter a representação hexadecimal de um valor expresso em basedecimal, ou seja, vamos converter um valor decimal para um valor hexadecimal. 170 / 16 = 10 resta 10 10 / 16 = 0 resta 10 Assim os restos são 10 e 10, como o valor 10 é representado pela letra A o símbolohexadecimal que representa o valor decimal 170 é AA. Outro exemplo: 180 / 16 = 11 e resto 4 11 / 16 = 0 e resto 11 Os restos obtidos na ordem inversa de calculo foram 11 e 4, como o valor 11 érepresentado pela letra B, o resultado da conversão é B4.Algoritmos 5
  • Anteriormente apresentamos a base hexadecimal como uma base opcional emvisualizações e grandes cadeias de binários, assim muitas interfaces de dispositivoseletrônicos, ao invés de serem configurados e/ou manipulados diretamente em binários,são manipulados em hexadecimal. Contudo os dispositivos continuam entendendobinários, o que vai existir é um conversor de hexadecimal para binário e um conversor debinário para hexadecimal. Vamos analisar o exemplo a seguir. Se tivermos uma cadeia hexadecimal e desejarmos convertê-la para binários, amaneira mais natural de fazermos isso é converter o hexadecimal para decimal e depois odecimal para binário. Veja exemplo: O valor AA em hexadecimal equivale 170 em decimal e a 10101010 em binário.Contudo foi desenvolvida uma técnica de conversão de hexadecimal para binário deforma direta, sem passar pelo decimal. Isso facilita a construção de dispositivos queembora funcionem em binários, possam ser manipulados através de hexadecimais. Acompanhe o seguinte raciocínio: 1 símbolo hexadecimal representa 16 valores decimais 4 símbolos binários representam 16 valores decimal 24 1 símbolo hexadecimal substitui 4 dígitos binários Assim, agrupamos os binários em grupos de quatro da direita para a esquerda,depois calculamos o valor de cada grupo separadamente e substituímos esse valor pelosímbolo hexadecimal correspondente. Outro exemplo: Foram inseridos dois zeros à esquerda do último grupo de binários para formar umgrupo de quatro, embora isso não afete o valor. 3EB = 3 x 162 + E x 161 + B x 160 => 768 + 224 + 11 = 1003 1111101011= 1 x 29 + 1 x 28 + 1 x 27 + 1 x 26 + 1 x 25 + 0 x 24 + 1 x 23 + 0 x 2 + 2 1 x 21 + 1 x 20 = 512 + 256 + 128 + 64 + 32 + 0 + 8 + 0 + 2 + 1 = 1003 A conversão de hexadecimal para binário é bastante simples, cada símbolohexadecimal produz um grupo de quatro binários que representam um valor entre 0 e 15. O valor B4 em hexadecimal equivale a 10110100 em binário, veja:Algoritmos 6
  • 1x27+0x26+1x25+1x24+0x23+1x22+0x21+0x20 => 128 + 0 + 32 + 16 + 0 + 4 + 0+ 0 = 180 Com da tabela de conversão abaixo é possível converter qualquer valorhexadecimal para binários ou vice-versa, sem fazer cálculos e também com baixaprobabilidade de erros. 2.2 Tabela de conversão Decimal Hexadecimal Binário 00 0 0000 01 1 0001 02 2 0010 03 3 0011 04 4 0100 05 5 0101 06 6 0110 07 7 0111 08 8 1000 09 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111 2.2.1 Agrupamentos de bits conhecidos Um dígito binário é chamado de bits – representa dois valores 2¹ 4 bits => nibble – representa 16 valores 24 8 bits => byte – representa 256 valores 28 1024 bytes => Um Kilobyte => 1KB = 210 = 1024 bytes 1024 Kilobytes => Um Megabyte => 1MB = 220 = 1.048.576 bytes 1024 Megabytes => Um Gigabyte => 1GB = 230 = 1.073.741.824 bytes 1024 Gigabytes => Um Terabyte => 1TB = 240 = 1.099.511.627.776 bytes Até agora usamos os bits para representarem números inteiros sem sinal, contudoos computadores usam os bits para representar todas as informações que ele manipula.O que se pode representar com N bits? 2N coisas. Quais coisas? Números! Caracteres! Pixeis! Valores Monetários! Posições! Instruções! ... Bits podem representar qualquer coisa! 2.3 Representação de Caracteres Um dos padrões mais conhecidos de representação de caracteres é o ASCII –American Standard Code for Information Interchange. Esse padrão usa um byte pararepresentar cada caractere e tem a possibilidade de representar 256 caracteres, visto queum byte permite 256 combinação de valores ( 0 a 255). Exemplos de codificações da tabela ASCII:Algoritmos 7
  • Caractere Dec. Hex. Binário Espaço 32 20 0010 0000 ! 33 21 0010 0001 " 34 22 0010 0010 # 35 23 0010 0011 ... ... ... ... 0 48 30 0011 0000 1 49 31 0011 0001 2 50 32 0011 0010 3 51 33 0011 0011 ... ... ... ... A 65 41 0100 0001 B 66 42 0100 0010 C 67 43 0100 0011 ... ... ... ... a 97 61 0110 0001 b 98 62 0110 0010 c 99 63 0110 0011 ... ... ... ... Outra codificação para caracteres é o padrão Unicode, que usa dois bytes pararepresentar cada caractere, isso possibilita 65536 símbolos. 2.4 Representação de Valores Lógicos Os valores lógicos serão muito usados nessa disciplina de algoritmo, elesrepresentam dois valores: verdadeiro e falso. Esses valores poderiam ser representadosapenas por um bit, contudo os computadores possuem uma quantidade mínima decombinação de bits, chamada de “palavra”. A palavra de um computador é a quantidadepadrão de bits que são envolvidas nas operações de processamento. Os computadoresusam no mínimo uma palavra ou uma combinação de várias palavras para representaremas informações envolvidas em suas operações. Assim os valores lógicos, apesar depoderem ser representados apenas com um bit, normalmente são representados com umbyte, que é o tamanho padrão de palavra para a maioria dos computadores. 2.5 Representação de Cores Assim como os caracteres, as cores podem ser representadas por vários padrões.Um dos mais conhecidos é o padrão RGB (Red, Green, Blue), que usa três bytes pararepresentar as cores primárias (Vermelho, Verde e Azul). Cada byte pode variar entre 0 a255, assim a combinação desses três bytes produzem uma mistura de cores primárias eresultam em cores derivadas. Normalmente os valores RGB’s são visualizados eminterfaces de software através de valores em hexadecimais. Por exemplo: A45B3E, assima intensidade da cor vermelho é A4, da cor verde é 5B e da cor azul é 3E. Outro exemplo:se definirmos 00 para as três cores, então teremos o preto, por outro lado, se definirmosFF (255) para as três cores teremos o branco. 2.6 Representações numéricas com sinalAlgoritmos 8
  • A representação numérica binária conhecida até agora não atende todas asnecessidades de representação de números. Além dos números naturais, precisamosrepresentar valores inteiros com sinal e valores não inteiros. Existem vários métodos derepresentação numérica, vamos ver alguns deles para que possamos entender de formageral, como os números são representados. 2.6.1 Valores Inteiros com Sinal Um dos métodos mais usados para representação de números inteiros com sinal éo complemento de dois. Nesse método o bit mais significativo sinaliza o sinal, se for zeroo número é positivo, se for um o número é negativo. É importante termos em mente queem função da representação de valores positivos e negativos, a faixa de valores de umapalavra muda. Veja o exemplo de uma palavra de oito bits, naturalmente ela representaria256 valores possíveis, se usarmos o valor numérico seria possível representar os valoresde 0 a 255. Quando precisamos representar valores negativos, esse mesmo byterepresentará valores entre -128 a 0 e de 0 a 127. Assim, para uma quantidade de N bits,teremos a possibilidade de expressar valores entre: -2(n-1) e 2(n-1) -1. Vamos aos passos do método: Inverta cada bit da cadeia de bits desejada, isso significa que onde tem zero fica um e onde tem um fica zero; Some um ao resultado obtido no passo anterior; Veja exemplo: O valor 10 expresso em um padrão binário de 8 bits: 00001010 Valor positivo 00001010 Inversão 11110101 Soma Um 00000001 Resultado 11110110 Assim, o valor -10 decimal expresso em binário usando o método de complementode dois é: 11110110. Outra maneira de usar o método complemento de dois é executar o seguinteprocedimento: Tome o padrão binário do número positivo; A partir do bit menos significativo para o mais significativo (da direita para a esquerda) copie os bits até encontrar o primeiro bit 1, inclusive ele. Depois para os demais inverta todos os bits que restarem a esquerda. Valor original 00001010 Cópia / Inversão 11110110 Resultado 11110110 Vamos encontrar o valor negativo do número 79:Algoritmos 9
  • Valorpositivo 01001111 Cópia / Inversão 10110001 Resultado 10110001 Agora, vamos fazer o inverso, dado um valor negativo, vamos obter o valorpositivo. Funciona da mesma maneira, copiamos os bits da direita para a esquerda atéencontrar o bit um, inclusive ele, os demais serão invertidos. Valor negativo 10110001 Cópia / Inversão 01001111 Resultado 01001111 2.6.2 Valores Não Inteiros Uma das notações mais utilizada para representação de números não inteiros é ade Ponto Flutuante, que divide cadeia de bits em três termos: Sinal Expoente Mantissa O sinal é representado por um bit, se zero o número é positivo, se um o número énegativo. O expoente estabelece a posição do ponto decimal binário e a mantissarepresenta o valor a ser representado. Vamos analisar um exemplo, para facilitarusaremos um byte apenas para representar números não inteiros, na prática oscomputadores usam grande cadeia de bits. Tomemos a seguinte cadeia de bits: 00101010 Sinal Expoente Mantissa 0 010 1010 Nesse exemplo estamos adotando três bits para o expoente e quatro para amantissa, contudo isso é definido em cada arquitetura de computador. Outro detalheimportante é que o expoente deve ser um valor inteiro com sinal, então também deve serdefinido o método de representação de inteiros com sinal, nós usaremos o métodocomplemento de dois, visto que já conhecemos. Vamos analisar os dados do exemplo: Sinal 0 significa que o número que está representado é positivo. O expoente 010resulta em um valor 2 positivo, isso significa que devemos deslocar o ponto decimal duascasas a direita da mantissa, se fosse negativo o deslocamento do ponto seria a esquerda. Vamos agora aplicar essas informações na mantissa. Obtenha a mantissa: 1010 Coloque o ponto decimal binário a esquerda da mantissa .1010 Desloque o ponto decimal segundo o expoente analisado, no nosso caso deslocaremos o ponto duas casas a direita, então vamos obter: 10.10 Agora vamos obter o valor decimal, para isso temos que considerar o seguinte aspecto:Algoritmos 10
  • 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 27 26 25 24 23 22 21 20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 128 64 32 16 8 4 2 1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 Assim se tivermos o padrão: 10.10, vamos obter o valor decimal da seguintemaneira: 128 64 32 16 8 4 2 1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1 0 1 0 2+0+½+¼ 2+¾ 2,75 Na verdade continuamos a fazer a conversão de binário para decimal da mesmamaneira que fizemos até agora, porém estamos considerando a parte menor que zero nosexpoentes, veja resolução abaixo: 1 x 21 + 0 x 20 + 1 x 2-1 + 0 x 2-2 = 2 + 0 + ½ + ¼ = 2,75 Se o padrão de bits fosse 10101010, faríamos o mesmo cálculo, porém no finalacrescentaríamos o sinal negativo ao resultado que seria: -2,75. 2.6.3 Instruções de Máquina Até agora nós vimos como as informações são representadas em um computador,mas será como elas são processadas? Como nós falamos para o computador o que eledeve fazer? Será que é necessário dizer ao computador o que fazer? Não pretendo responder essas questões, mas sim conduzir você a um raciocínioque o leve a respondê-las. Vejamos, no início dessa unidade iniciamos o texto dizendoque o grande diferencial dos computadores é a sua capacidade de serem programados ede sua extrema flexibilidade em resolver as mais diferentes tarefas. Vocês estãolembrados da idéia de Jacquard (tear configurado com cartões perfurados) eposteriormente o projeto de Babbage (o projeto da calculadora genérica)? Então o grandedesafio e inspiração desses projetos foi o de produzir máquinas genéricas, que nãoprecisavam ser reconstruídas para cada nova aplicabilidade desejada. Dessa mesmamaneira os computadores eletrônicos foram projetados. O modelo de arquiteturaformalizado por Von Newman tinha como princípio uma unidade de processamento, umaunidade de controle, uma unidade de armazenamento e dispositivos de entrada e saída,basicamente a mesma concepção de Babbage. Veja ilustração a seguir:Algoritmos 11
  • Figura 1.Representação de uma máquina computacional A Unidade Central de Processamento (CPU) é responsável pelo processamento econtrole das atividades que ocorrem no computador. É divida em duas subunidades: aUnidade de Controle (UC) e a Unidade Lógica e Aritmética (ULA). A UC é responsávelpelo controle das tarefas que ocorrem na CPU e a ULA é onde ocorrem os cálculos ecomparações de dados em processamento. Para que um programa possa ser executadono computador, este deve sercarregado para uma região dearmazenamento onde a UCpossa buscar as instruções quedevem ser executadas, essaregião de armazenamento édenominada de Memória Figura 2.Representação da Unidade Central de ProcessamentoPrincipal (MP), que usa atecnologia RAM (Memória de Acesso Aleatório). Além das instruções de um programa, osdados que são manipulados por esse programa, também ficam armazenados na MP. Ailustração a seguir, apesar de ser extremamente simplista, visto que na realidade asCPU’s atuais possuem inúmeros elementos que foram desconsiderados nessa figura,detalha um pouco melhor os elementos que compõem uma CPU. A ilustração anterior mostra que existem elementos tais como: CI (contador deinstruções), RI (registrador de instruções) e R0 ... RN (registradores de uso geral). Osregistradores de uma CPU são acumuladores de valores (alguns gerais outrosespecíficos) que são usados durante a execução de um programa. Cada processador é projetado e fabricado para reconhecer um conjunto deinstruções (comandos). A esse conjunto de instruções é dado o nome de Linguagem deMáquina, já que é particular para cada modelo de processador. Uma instrução demáquina é formada por um código, que a identifica, e os operandos da instrução.Osoperandos são informações adicionais que cada instrução necessita para suaexecução. Veja a seguir a estrutura genérica de uma instrução de máquina.Algoritmos 12
  • Código Operando 1 Operando 2 Operando 3 Como todas as informações que um computador reconhece são representadascom símbolos binários, as instruções de máquina também são. Os códigos das instruçõessão valores inteiros sem sinal, os operandos podem ser caracteres, valores inteiros,valores não inteiros, etc. Veja a seguir um exemplo de uma instrução de máquina. Código Operando1 Operando2 Operando3 Decimal 1 1 2 3 Binário 00000001 00000001 00000010 00000011 Para entendermos o significado de uma instrução de máquina, precisamos saberpreviamente alguns conceitos. O primeiro é o de programa armazenado, que diz respeitoàs instruções de máquina que são armazenados em um arquivo, que recebe o nome decódigo executável. Quando queremos executar um programa em um computador algunspassos devem acontecer. Não vamos nesse momento levar em consideração todos osaspectos da execução de um programa, e sim um conjunto mínimo que nos fará entendero significado de instruções de máquina. Vamos abstrair, por exemplo, as etapasrealizadas pelo Sistema Operacional, que são importantes, mas nesse momentoaumentaria a complexidade do nosso entendimento. Vamos aos passos de execução deum programa: 1. Carregar o programa para a memória principal; 2. Iniciar o registrador CI com o endereço de memória da primeira instrução do programa; 3. Repetir os passos seguintes até encontrar o fim do programa ou ocorrer um erro: a. Carregar a instrução de máquina (copiar) apontada pelo CI para o RI; b. Incrementar o CI para apontar para o próximo endereço da memória (próxima instrução); c. Decodificar (interpretar) a instrução que está no RI; d. Delegar a execução da instrução para a parte correspondente da ULA; Os sub-passos do passo 3, são denominados de ciclo de máquina, pois sãorepetidos para cada instrução. O ciclo de máquina é formado por três etapas: busca,decodificação e execução. Vamos conhecê-los em maiores detalhes: A busca de instrução é compreendida dos seguintes passos: A unidade de controle, através do registrador CI, requer da MP, a próxima instrução;Algoritmos 13
  • Quando a MP disponibiliza a instrução, essa é armazenada no registrador RI; Por último é incrementado o CI, para indicar a próxima instrução; A decodificação de instrução é dividida em dois passos: A UC identifica a instrução pelo campo código; A UC invoca os circuitos da ULA, passando os operandos; A execução da instrução é executada pela ULA através dos passos: Execução da instrução com os operandos (valores) recebidos da UC; Vamos agora adotar um conjunto de instruções de máquina (hipotético) comosendo uma linguagem de máquina, veja tabela a seguir: CódigoDec. CódigoBin. Operandos Interpretação 1 00000001 R1 R2 R3 R1= R2 + R3 2 00000010 R1 R2 Valor R1= R2 + Valor 3 00000011 R1 R2 R3 R1= R2–R3 4 00000100 R1 Endereço 0 R1= [Endereço] 5 00000101 R1 Endereço 0 [Endereço] =R1 6 00000110 R1 R2 NI Se R1= R2 CI =CI + 4 * NI 7 00000111 R1 R2 NI Se R1<>R2 CI = CI+4 * NI 8 00001000 Endereço 0 0 CI = Endereço 9 00001001 R1 R2 R3 R1= R2 * R3 10 00001010 R1 R2 R3 R1=R2 div R3(divisão inteira) 11 00001011 0 0 0 sair Exemplo de programa escrito com a linguagem de máquina acima, com valoresrepresentados em base decimal: Endereço Conteúdo da Memória 0000:0000 4 0 20 0 0000:0004 4 1 24 0 0000:0008 1 4 0 1 0000:0012 5 4 28 0 0000:0016 11 0 0 0 0000:0020 5 0000:0024 7 0000:0028 0000:0032 Exemplo de programa escrito com a linguagem de máquina acima, com valoresrepresentados em base hexadecimal (endereços) e base binária (instruções): Endereço Conteúdo da Memória 0000:0000 00000100 00000000 00010100 00000000 0000:0004 00000100 00000001 00011000 00000000 0000:0008 00000001 00000100 00000000 00000001 0000:000C 00000101 00000100 00011100 00000000 0000:0010 00001011 00000000 00000000 00000000 0000:0014 00000101 0000:0018 00000111 0000:001C 0000:0020 Vamos brincar de CPU. Para facilitar vamos usar para as representações deinformação (dados e endereços) a base decimal, mas sendo consciente que internamentea representação é binária.Algoritmos 14
  • Situação 01 – carga do programa para a memória principal Registradores Valores CI 0000:0000 RI · Inicia o valor de CI com o endereço da R0 primeira instrução do programa a ser R1 executado R2 R3 R4 Situação 02 – execução do primeiro ciclo de máquina Registradores Valores CI 0000:0004 · Carrega-se a instrução apontada pelo CI para o RI RI 4-0-20-0 · Incrementa CI para o novo endereço R0 5 · Decodifica a instrução: carregar o valor do endereço R1 de memória 20 para o registrador R0 (neste caso o R2 valor 5) R3 R4 Situação 03 – execução do segundo ciclo de máquina Registradores Valores CI 0000:0008 RI 4-1-24-0 · Carrega-se a instrução apontada pelo CI para o RI · Incrementa CI para o novo endereço R0 5 · Decodifica a instrução: carregar o valor do endereço de R1 7 memória 24 para o registrador R1 (neste caso o valor 7) R2 R3 R4 Situação 04 – execução do terceiro ciclo de máquina Registradores Valores CI 0000:0012 · Carrega-se a instrução apontada pelo CI para o RI RI 1-4-0-1 · Incrementa CI para o novo endereço R0 5 · Decodifica a instrução: somar o conteúdo do registrador R1 7 R0 com o conteúdo do registrador R1 e armazenar o R2 resultado no registrador R4 R3 R4 12 Situação 05 – execução do quarto ciclo de máquina Registradores Valores CI 0000:0016 · Carrega-se a instrução apontada pelo CI para o RI RI 5-4-28-0 · Incrementa CI para o novo endereço R0 5 · Decodifica a instrução: descarregar o conteúdo do R1 7 registrador R4 no endereço de memória 28 R2 R3 R4 12 Endereço Conteúdo da Memória 0000:0000 4 0 20 0 0000:0004 4 1 24 0 0000:0008 1 4 0 1 0000:0012 5 4 28 0 0000:0016 11 0 0 0 0000:0020 5 0000:0024 7 0000:0028 12 0000:0032Algoritmos 15
  • Situação 06 – execução do quinto ciclo de máquina Registradores Valores CI 0000:0024 RI 11-0-0-0 · Carrega-se a instrução apontada pelo CI para o RI R0 5 · Incrementa CI para o novo endereço R1 7 · Decodifica a instrução: encerrar o programa R2 R3 R4 12 [ Bibliografia ] BROOKSHEAR, J. Glenn. Ciência da Computação – Uma visão abrangente. 5. ed. Porto Alegre: Bookman, 2000. BARRETO, Jorge Muniz. Notas de aulas do mestrado em Ciência da Computação, 2000. CORTELAZZO, Iolanda B. C, link disponível na web: http://www.boaaula.com.br/iolanda/hic/hicsum.html, consultado em 20/12/2007. MANZANO, Jose Augusto Navarro Garcia.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: Lógica para o desenvolvimento de programação de computadores. Érica, 18ª ed.Algoritmos 16