INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DE MATO GROSSO IF - MT DIRETORIA DE ENSINO
CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET
MODALIDADE A DISTNCIA - TSIAD
DISCIPLINA: Algoritmos
Professor Autor: Evandro Csar Freiberger Joo Paulo Delgado Preti
2009/1 Algoritmos 2
Unidade II Representao da Informao no Computador
APRESENTAO 3 2. REPRESENTAO DA INFORMAO NO COMPUTADOR 3 2.1 REPRESENTAO DE VALORES NUMRICOS 3 2.1.1 BASE HEXADECIMAL 5 2.2 TABELA DE CONVERSO 7 2.2.1 AGRUPAMENTOS DE BITS CONHECIDOS 7 2.3 REPRESENTAO DE CARACTERES 7 2.4 REPRESENTAO DE VALORES LGICOS 8 2.5 REPRESENTAO DE CORES 8 2.6 REPRESENTAES NUMRICAS COM SINAL 8 2.6.1 VALORES INTEIROS COM SINAL 9 2.6.2 VALORES NO INTEIROS 10 2.6.3 INSTRUES DE MQUINA 11 BIBLIOGRAFIA 16
Algoritmos 3 APRESENTAO Utilizaremos os cones abaixo para que voc facilmente localize aspectos importantes do contedo:
Utilizado para apresentar uma definio.
Utilizado para apresentar uma dvida pertinente ao contexto.
Utilizado para indicar um aviso.
Utilizado para indicar um ponto crtico ou problema a ser considerado.
Utilizado para indicar uma referncia na Internet. 2. Representao da Informao no Computador Como foi apresentado anteriormente, os computadores digitais usam a base binria na representao e processamento de todas as informaes manipuladas. Entender a base binria nos ajudar entender como funcionam as principais tarefas de um computador. 2.1 Representao de Valores Numricos Nessa seo iremos entender como so representadas as informaes no computador digital. Iniciaremos com a representao de valores numricos (valores inteiros sem sinal, valores inteiros com sinal e valores no inteiros), depois vamos conhecer outras representaes, tais como: caracteres, cores e instrues de mquina. Para facilitar a compreenso da base binria primeiro faremos uma reviso na base numrica decimal, a base usada no nosso cotidiano para representao de nmeros. formada por 10 dgitos: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Por ser a base do nosso dia a dia, a maioria de ns nos esquecemos de como os valores so obtidos a partir de um conjunto de dgitos decimais, por exemplo, porque a juno dos dgitos 1 com 0 com 0 formam o valor 100 (cem). Vejamos: 100 = 100 = 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 a extremidade esquerda; o valor dez decorrente da base decimal. 123 = 123 = 1 x 10 + 2 x 10 + 3 x 10 Assim temos: 100 + 20 + 3 = 123 1235 = 1235 = 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 binria que formada por apenas dois dgitos: 0 e 1, com esses dois dgitos so representadas todas as informaes que so manipuladas pelo computador. Para facilitar ns iremos analisar a representao de Algoritmos 4 nmeros inteiros positivos primeiramente. Analogamente base decimal, os valores so obtidos de uma cadeia de zeros e uns binrios. Veja exemplos: A cadeia 10 (l-se: um zero e no dez, lembre-se!), qual ser o valor numrico (base decimal) representado pela seqncia binria? 10 = 10 = 1 x 2 + 0 x 2 = 1 x 2 + 0 x 1 = 2 na base decimal A cadeia 11 (l-se um um e no onze). 11 = 11 = 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 no mil). 1000 = 1000 = 1 x 2 + 0 x 2 + 0 x 2 + 0 x 2 = 1 x 8 + 0 x 4 + 0 x 2 + 0 x 1 = 8 na base decimal A cadeia 1000 (l-se um zero zero um e no 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 estvamos preocupados em obter um valor decimal (base cotidiana) a partir de uma seqncia de dgitos binrios. Agora vamos obter dgitos binrios a partir de um valor decimal. Para isso vamos usar a operao de diviso, dividiremos o valor decimal por dois (base binria) varias vezes at obtermos a seqncia completa. Uma observao importante que usaremos a diviso inteira e no a diviso fracionada. Por exemplo: 5 / 2 = 2,5 na diviso fracionada 5 / 2 = 2 com resto 1 na diviso inteira Resultado = 101 (l-se um zero um) Vamos entender o que foi feito. A primeira diviso, dividiu o valor 5 por 2 (diviso inteira), o resultado foi 2 e resto 1. A segunda diviso tomou o resultado da primeira, no caso 2 e dividiu por 2, o resultado foi 1 e resto 0. A terceira diviso, tomou o resultado da segunda, no caso 1 e dividiu por 2, o resultado foi 0, visto que no possvel realizar essa diviso inteira, ento o resultado 0 e resto 1. Por ultimo pega-se os restos das divises no sentido do ultimo resto para o primeiro e essa a seqncia binria que representa o valor 5 decimal. Vamos a outro exemplo. Assim a seqncia binria que representa o valor inteiro 13 1101. Vamos verificar se o resultado est correto? Para isso temos que fazer a operao inversa, ou seja, transformar a seqncia binria em Algoritmos 5 um nmero decimal, se obtivermos o valor 13 a nossa seqncia est correta. 1101 = 1101 = 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 numrica muito usada na computao a base hexadecimal. Essa base foi desenvolvida para que grandes cadeias de binrios pudessem ser visualizadas de forma mais amigvel. O computador manipula muito bem o binrio, contudo o ser humano tem muita dificuldade, principalmente quando as cadeias de binrios tornam extensas. Outra caracterstica dos valores na base hexadecimal que so facilmente convertidos para binrios ou vice-versa, no necessitando fazer converses para a base decimal. Vamos conhecer as caractersticas dessa base numrica. Possui 16 smbolos: 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 Dgitos Normais + 6 letras do alfabeto. As regras de converso para a base decimal so as mesmas da base binria, o que muda a base, veja exemplo abaixo: O valor 453 na base hexadecimal representa que valor decimal? 453 = 453 = 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 representao hexadecimal de um valor expresso em base decimal, ou seja, vamos converter um valor decimal para um valor hexadecimal. 170 / 16 = 10 resta 10 10 / 16 = 0 resta 10 Assim os restos so 10 e 10, como o valor 10 representado pela letra A o smbolo hexadecimal 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 converso B4. Algoritmos 6 Anteriormente apresentamos a base hexadecimal como uma base opcional em visualizaes e grandes cadeias de binrios, assim muitas interfaces de dispositivos eletrnicos, ao invs de serem configurados e/ou manipulados diretamente em binrios, so manipulados em hexadecimal. Contudo os dispositivos continuam entendendo binrios, o que vai existir um conversor de hexadecimal para binrio e um conversor de binrio para hexadecimal. Vamos analisar o exemplo a seguir. Se tivermos uma cadeia hexadecimal e desejarmos convert-la para binrios, a maneira mais natural de fazermos isso converter o hexadecimal para decimal e depois o decimal para binrio. Veja exemplo: O valor AA em hexadecimal equivale 170 em decimal e a 10101010 em binrio. Contudo foi desenvolvida uma tcnica de converso de hexadecimal para binrio de forma direta, sem passar pelo decimal. Isso facilita a construo de dispositivos que embora funcionem em binrios, possam ser manipulados atravs de hexadecimais. Acompanhe o seguinte raciocnio: 1 smbolo hexadecimal representa 16 valores decimais 4 smbolos binrios representam 16 valores decimal 2 4
1 smbolo hexadecimal substitui 4 dgitos binrios Assim, agrupamos os binrios em grupos de quatro da direita para a esquerda, depois calculamos o valor de cada grupo separadamente e substitumos esse valor pelo smbolo hexadecimal correspondente.
Outro exemplo:
Foram inseridos dois zeros esquerda do ltimo grupo de binrios para formar um grupo de quatro, embora isso no afete o valor. 3EB = 3 x 16 2 + E x 16 1 + B x 16 0 => 768 + 224 + 11 = 1003 1111101011= 1 x 2 9 + 1 x 2 8 + 1 x 2 7 + 1 x 2 6 + 1 x 2 5 + 0 x 2 4 + 1 x 2 3 + 0 x 2 2 + 1 x 2 1 + 1 x 2 0
= 512 + 256 + 128 + 64 + 32 + 0 + 8 + 0 + 2 + 1 = 1003 A converso de hexadecimal para binrio bastante simples, cada smbolo hexadecimal produz um grupo de quatro binrios que representam um valor entre 0 e 15. O valor B4 em hexadecimal equivale a 10110100 em binrio, veja:
Algoritmos 7 1x2 7 +0x2 6 +1x2 5 +1x2 4 +0x2 3 +1x2 2 +0x2 1 +0x2 0 => 128 + 0 + 32 + 16 + 0 + 4 + 0 + 0 = 180 Com da tabela de converso abaixo possvel converter qualquer valor hexadecimal para binrios ou vice-versa, sem fazer clculos e tambm com baixa probabilidade de erros. 2.2 Tabela de converso Decimal Hexadecimal Binrio 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 dgito binrio chamado de bits representa dois valores 2 4 bits => nibble representa 16 valores 2 4
8 bits => byte representa 256 valores 2 8
1024 bytes => Um Kilobyte => 1KB = 2 10 = 1024 bytes 1024 Kilobytes => Um Megabyte => 1MB = 2 20 = 1.048.576 bytes 1024 Megabytes => Um Gigabyte => 1GB = 2 30 = 1.073.741.824 bytes 1024 Gigabytes => Um Terabyte => 1TB = 2 40 = 1.099.511.627.776 bytes At agora usamos os bits para representarem nmeros inteiros sem sinal, contudo os computadores usam os bits para representar todas as informaes que ele manipula. O que se pode representar com N bits? 2 N coisas. Quais coisas? Nmeros! Caracteres! Pixeis! Valores Monetrios! Posies! Instrues! ... Bits podem representar qualquer coisa! 2.3 Representao de Caracteres Um dos padres mais conhecidos de representao de caracteres o ASCII American Standard Code for Information Interchange. Esse padro usa um byte para representar cada caractere e tem a possibilidade de representar 256 caracteres, visto que um byte permite 256 combinao de valores ( 0 a 255). Exemplos de codificaes da tabela ASCII: Algoritmos 8 Caractere Dec. Hex. Binrio Espao 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 codificao para caracteres o padro Unicode, que usa dois bytes para representar cada caractere, isso possibilita 65536 smbolos. 2.4 Representao de Valores Lgicos Os valores lgicos sero muito usados nessa disciplina de algoritmo, eles representam dois valores: verdadeiro e falso. Esses valores poderiam ser representados apenas por um bit, contudo os computadores possuem uma quantidade mnima de combinao de bits, chamada de palavra. A palavra de um computador a quantidade padro de bits que so envolvidas nas operaes de processamento. Os computadores usam no mnimo uma palavra ou uma combinao de vrias palavras para representarem as informaes envolvidas em suas operaes. Assim os valores lgicos, apesar de poderem ser representados apenas com um bit, normalmente so representados com um byte, que o tamanho padro de palavra para a maioria dos computadores. 2.5 Representao de Cores Assim como os caracteres, as cores podem ser representadas por vrios padres. Um dos mais conhecidos o padro RGB (Red, Green, Blue), que usa trs bytes para representar as cores primrias (Vermelho, Verde e Azul). Cada byte pode variar entre 0 a 255, assim a combinao desses trs bytes produzem uma mistura de cores primrias e resultam em cores derivadas. Normalmente os valores RGBs so visualizados em interfaces de software atravs de valores em hexadecimais. Por exemplo: A45B3E, assim a intensidade da cor vermelho A4, da cor verde 5B e da cor azul 3E. Outro exemplo: se definirmos 00 para as trs cores, ento teremos o preto, por outro lado, se definirmos FF (255) para as trs cores teremos o branco. 2.6 Representaes numricas com sinal Algoritmos 9 A representao numrica binria conhecida at agora no atende todas as necessidades de representao de nmeros. Alm dos nmeros naturais, precisamos representar valores inteiros com sinal e valores no inteiros. Existem vrios mtodos de representao numrica, vamos ver alguns deles para que possamos entender de forma geral, como os nmeros so representados. 2.6.1 Valores Inteiros com Sinal Um dos mtodos mais usados para representao de nmeros inteiros com sinal o complemento de dois. Nesse mtodo o bit mais significativo sinaliza o sinal, se for zero o nmero positivo, se for um o nmero negativo. importante termos em mente que em funo da representao de valores positivos e negativos, a faixa de valores de uma palavra muda. Veja o exemplo de uma palavra de oito bits, naturalmente ela representaria 256 valores possveis, se usarmos o valor numrico seria possvel representar os valores de 0 a 255. Quando precisamos representar valores negativos, esse mesmo byte representar 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 mtodo: 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 padro binrio de 8 bits: 00001010 Valor positivo 00001010 Inverso 11110101 Soma Um 00000001 Resultado 11110110 Assim, o valor -10 decimal expresso em binrio usando o mtodo de complemento de dois : 11110110. Outra maneira de usar o mtodo complemento de dois executar o seguinte procedimento: Tome o padro binrio do nmero 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 Cpia / Inverso 11110110 Resultado 11110110 Vamos encontrar o valor negativo do nmero 79: Algoritmos 10 Valorpositivo 01001111 Cpia / Inverso 10110001 Resultado 10110001 Agora, vamos fazer o inverso, dado um valor negativo, vamos obter o valor positivo. Funciona da mesma maneira, copiamos os bits da direita para a esquerda at encontrar o bit um, inclusive ele, os demais sero invertidos. Valor negativo 10110001 Cpia / Inverso 01001111 Resultado 01001111 2.6.2 Valores No Inteiros Uma das notaes mais utilizada para representao de nmeros no inteiros a de Ponto Flutuante, que divide cadeia de bits em trs termos: Sinal Expoente Mantissa O sinal representado por um bit, se zero o nmero positivo, se um o nmero negativo. O expoente estabelece a posio do ponto decimal binrio e a mantissa representa o valor a ser representado. Vamos analisar um exemplo, para facilitar usaremos um byte apenas para representar nmeros no inteiros, na prtica os computadores usam grande cadeia de bits. Tomemos a seguinte cadeia de bits: 00101010 Sinal Expoente Mantissa 0 010 1010 Nesse exemplo estamos adotando trs bits para o expoente e quatro para a mantissa, contudo isso definido em cada arquitetura de computador. Outro detalhe importante que o expoente deve ser um valor inteiro com sinal, ento tambm deve ser definido o mtodo de representao de inteiros com sinal, ns usaremos o mtodo complemento de dois, visto que j conhecemos. Vamos analisar os dados do exemplo: Sinal 0 significa que o nmero que est representado positivo. O expoente 010 resulta em um valor 2 positivo, isso significa que devemos deslocar o ponto decimal duas casas a direita da mantissa, se fosse negativo o deslocamento do ponto seria a esquerda. Vamos agora aplicar essas informaes na mantissa. Obtenha a mantissa: 1010 Coloque o ponto decimal binrio a esquerda da mantissa .1010 Desloque o ponto decimal segundo o expoente analisado, no nosso caso deslocaremos o ponto duas casas a direita, ento vamos obter: 10.10 Agora vamos obter o valor decimal, para isso temos que considerar o seguinte aspecto: Algoritmos 11 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 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 padro: 10.10, vamos obter o valor decimal da seguinte maneira: 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 converso de binrio para decimal da mesma maneira que fizemos at agora, porm estamos considerando a parte menor que zero nos expoentes, veja resoluo abaixo: 1 x 21 + 0 x 20 + 1 x 2 -1 + 0 x 2 -2 = 2 + 0 + + = 2,75 Se o padro de bits fosse 10101010, faramos o mesmo clculo, porm no final acrescentaramos o sinal negativo ao resultado que seria: -2,75. 2.6.3 Instrues de Mquina At agora ns vimos como as informaes so representadas em um computador, mas ser como elas so processadas? Como ns falamos para o computador o que ele deve fazer? Ser que necessrio dizer ao computador o que fazer? No pretendo responder essas questes, mas sim conduzir voc a um raciocnio que o leve a respond-las. Vejamos, no incio dessa unidade iniciamos o texto dizendo que o grande diferencial dos computadores a sua capacidade de serem programados e de sua extrema flexibilidade em resolver as mais diferentes tarefas. Vocs esto lembrados da idia de Jacquard (tear configurado com cartes perfurados) e posteriormente o projeto de Babbage (o projeto da calculadora genrica)? Ento o grande desafio e inspirao desses projetos foi o de produzir mquinas genricas, que no precisavam ser reconstrudas para cada nova aplicabilidade desejada. Dessa mesma maneira os computadores eletrnicos foram projetados. O modelo de arquitetura formalizado por Von Newman tinha como princpio uma unidade de processamento, uma unidade de controle, uma unidade de armazenamento e dispositivos de entrada e sada, basicamente a mesma concepo de Babbage. Veja ilustrao a seguir: Algoritmos 12
Figura 1.Representao de uma mquina computacional A Unidade Central de Processamento (CPU) responsvel pelo processamento e controle das atividades que ocorrem no computador. divida em duas subunidades: a Unidade de Controle (UC) e a Unidade Lgica e Aritmtica (ULA). A UC responsvel pelo controle das tarefas que ocorrem na CPU e a ULA onde ocorrem os clculos e comparaes de dados em processamento. Para que um programa possa ser executado no computador, este deve ser carregado para uma regio de armazenamento onde a UC possa buscar as instrues que devem ser executadas, essa regio de armazenamento denominada de Memria Principal (MP), que usa a tecnologia RAM (Memria de Acesso Aleatrio). Alm das instrues de um programa, os dados que so manipulados por esse programa, tambm ficam armazenados na MP. A ilustrao a seguir, apesar de ser extremamente simplista, visto que na realidade as CPUs atuais possuem inmeros elementos que foram desconsiderados nessa figura, detalha um pouco melhor os elementos que compem uma CPU. A ilustrao anterior mostra que existem elementos tais como: CI (contador de instrues), RI (registrador de instrues) e R0 ... RN (registradores de uso geral). Os registradores de uma CPU so acumuladores de valores (alguns gerais outros especficos) que so usados durante a execuo de um programa. Cada processador projetado e fabricado para reconhecer um conjunto de instrues (comandos). A esse conjunto de instrues dado o nome de Linguagem de Mquina, j que particular para cada modelo de processador. Uma instruo de mquina formada por um cdigo, que a identifica, e os operandos da instruo. Osoperandos so informaes adicionais que cada instruo necessita para sua execuo. Veja a seguir a estrutura genrica de uma instruo de mquina.
Figura 2.Representao da Unidade Central de Processamento Algoritmos 13 Cdigo Operando 1 Operando 2 Operando 3 Como todas as informaes que um computador reconhece so representadas com smbolos binrios, as instrues de mquina tambm so. Os cdigos das instrues so valores inteiros sem sinal, os operandos podem ser caracteres, valores inteiros, valores no inteiros, etc. Veja a seguir um exemplo de uma instruo de mquina. Cdigo Operando1 Operando2 Operando3 Decimal 1 1 2 3 Binrio 00000001 00000001 00000010 00000011
Para entendermos o significado de uma instruo de mquina, precisamos saber previamente alguns conceitos. O primeiro o de programa armazenado, que diz respeito s instrues de mquina que so armazenados em um arquivo, que recebe o nome de cdigo executvel. Quando queremos executar um programa em um computador alguns passos devem acontecer. No vamos nesse momento levar em considerao todos os aspectos da execuo de um programa, e sim um conjunto mnimo que nos far entender o significado de instrues de mquina. Vamos abstrair, por exemplo, as etapas realizadas pelo Sistema Operacional, que so importantes, mas nesse momento aumentaria a complexidade do nosso entendimento. Vamos aos passos de execuo de um programa: 1. Carregar o programa para a memria principal; 2. Iniciar o registrador CI com o endereo de memria da primeira instruo do programa; 3. Repetir os passos seguintes at encontrar o fim do programa ou ocorrer um erro: a. Carregar a instruo de mquina (copiar) apontada pelo CI para o RI; b. Incrementar o CI para apontar para o prximo endereo da memria (prxima instruo); c. Decodificar (interpretar) a instruo que est no RI; d. Delegar a execuo da instruo para a parte correspondente da ULA; Os sub-passos do passo 3, so denominados de ciclo de mquina, pois so repetidos para cada instruo. O ciclo de mquina formado por trs etapas: busca, decodificao e execuo. Vamos conhec-los em maiores detalhes: A busca de instruo compreendida dos seguintes passos: A unidade de controle, atravs do registrador CI, requer da MP, a prxima instruo; Algoritmos 14 Quando a MP disponibiliza a instruo, essa armazenada no registrador RI; Por ltimo incrementado o CI, para indicar a prxima instruo; A decodificao de instruo dividida em dois passos: A UC identifica a instruo pelo campo cdigo; A UC invoca os circuitos da ULA, passando os operandos; A execuo da instruo executada pela ULA atravs dos passos: Execuo da instruo com os operandos (valores) recebidos da UC; Vamos agora adotar um conjunto de instrues de mquina (hipottico) como sendo uma linguagem de mquina, veja tabela a seguir: CdigoDec. CdigoBin. Operandos Interpretao 1 00000001 R1 R2 R3 R1= R2 + R3 2 00000010 R1 R2 Valor R1= R2 + Valor 3 00000011 R1 R2 R3 R1= R2R3 4 00000100 R1 Endereo 0 R1= [Endereo] 5 00000101 R1 Endereo 0 [Endereo] =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 Endereo 0 0 CI = Endereo 9 00001001 R1 R2 R3 R1= R2 * R3 10 00001010 R1 R2 R3 R1=R2 div R3(diviso inteira) 11 00001011 0 0 0 sair Exemplo de programa escrito com a linguagem de mquina acima, com valores representados em base decimal: Endereo Contedo da Memria 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 mquina acima, com valores representados em base hexadecimal (endereos) e base binria (instrues): Endereo Contedo da Memria 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 representaes de informao (dados e endereos) a base decimal, mas sendo consciente que internamente a representao binria. Algoritmos 15 Situao 01 carga do programa para a memria principal Registradores Valores CI 0000:0000 RI R0 R1 R2 R3 R4 Inicia o valor de CI com o endereo da primeira instruo do programa a ser executado
Situao 02 execuo do primeiro ciclo de mquina Registradores Valores CI 0000:0004 RI 4-0-20-0 R0 5 R1 R2 R3 R4 Carrega-se a instruo apontada pelo CI para o RI Incrementa CI para o novo endereo Decodifica a instruo: carregar o valor do endereo de memria 20 para o registrador R0 (neste caso o valor 5)
Situao 03 execuo do segundo ciclo de mquina Registradores Valores CI 0000:0008 RI 4-1-24-0 R0 5 R1 7 R2 R3 R4 Carrega-se a instruo apontada pelo CI para o RI Incrementa CI para o novo endereo Decodifica a instruo: carregar o valor do endereo de memria 24 para o registrador R1 (neste caso o valor 7)
Situao 04 execuo do terceiro ciclo de mquina Registradores Valores CI 0000:0012 RI 1-4-0-1 R0 5 R1 7 R2 R3 R4 12 Carrega-se a instruo apontada pelo CI para o RI Incrementa CI para o novo endereo Decodifica a instruo: somar o contedo do registrador R0 com o contedo do registrador R1 e armazenar o resultado no registrador R4
Situao 05 execuo do quarto ciclo de mquina Registradores Valores CI 0000:0016 RI 5-4-28-0 R0 5 R1 7 R2 R3 R4 12 Carrega-se a instruo apontada pelo CI para o RI Incrementa CI para o novo endereo Decodifica a instruo: descarregar o contedo do registrador R4 no endereo de memria 28
Situao 06 execuo do quinto ciclo de mquina Registradores Valores CI 0000:0024 RI 11-0-0-0 R0 5 R1 7 R2 R3 R4 12 Carrega-se a instruo apontada pelo CI para o RI Incrementa CI para o novo endereo Decodifica a instruo: encerrar o programa
[ Bibliografia ]
BROOKSHEAR, J. Glenn. Cincia da Computao Uma viso abrangente. 5. ed. Porto Alegre: Bookman, 2000. BARRETO, Jorge Muniz. Notas de aulas do mestrado em Cincia da Computao, 2000. CORTELAZZO, Iolanda B. C, link disponvel 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: Lgica para o desenvolvimento de programao de computadores. rica, 18 ed.
9.2 - Deflexão em Vigas, Deflexão Por Integração Da Força de Cisalhamento e Do Carregamento Do Livro Mecânica Dos Materiais, Gere, 7 Edição, Exercícios Resolvidos PDF