Seus burros
Computador HIPO Para introduzirmos as nopes b ” sicas de como funciona um computador, empregaremos um modelo imagin ‘ rio (hipot’ tico) que denominaremos de computador hipo. O funcionaa mento desse modelo tem as caracter Micas b’ sicas do funcionamento de um computador real embora seja muito ar 17 to view nut*ge Introdu. -o Inicialmente vamos apresentar as unidades fundamentais de um computador: • Unidade Central de Processamento ou CPU: ‘ a unidade que controla o funcionamento do computador e executa as instru, -es. Ela cont • m o apontador de instrua -es eo acumulador, que ser -o explicados adiante. m ‘ ria (chamada “registrador) particular da CPU. Como quale quer outra posicao de mem ‘ ria, o acumulador pode conter um inteiro. • Instrus-o: uma “opera,ao b • sica” que o computador capaz de executar. Uma instru,ao descreve uma asao a ser executada pela CPU. Cada instru. -o ” codificada de forma a ser representada por um inteiro. • Apontador de Instru,-o: • utilizado para indicar a CPU qual o endereao da pr’ xima instru. ao a ser executada. eclado: ‘ a unidade que recebe dados do exterior do computador e os transmite CRU. ?? Impressora: como o nome diz, no papel; esses dados s -o fornecidos pela CPLJ. unidade que imprime dados • Programa: uma seq ncia de instru, PAGF70F17 es armazenada na mem precisamos carregar um programa na mem ‘ ria e fazer com que o apontador de instrusoes aponte para a primeira instru,ao do programa. Observa. -o: “carregar” um programa significa colocar cada instrua-o do mesmo em uma posi,ao de mem ria. Feito isso, podemos acionar a CPI_J fazendo com que ela siga as regras b’ sicas e execute o programa dado. Pergunta: o que aconteceria se troc ‘ ssemos as regras 2 e 3 de lugar?
Codificas -o de Instru,oes Infelizmente o HIPO n -o reconhece frases do tipo “copie o conte do do Acumulador para o Endere. 0 30”. Por isso precisamos escrever numa linguagem que este possa entender, i. e. em linguagem de m quina. Para este computador, uma instru,ao ser’ codificada por um listamos os c digos de todas as instruaoes do HIPO. O c’ digo da instrua-o “copie o conte ‘ do do acumulador no endereso EE” o n’ mero 12. Os dois ultimos algarismos do c digo correspondem ao endere,o de uma posi,ao de mem ‘ ria, que neste caso ‘ 0 30.
Logo a instruaao acima codificada, em linguagem de m’ quina, como +1230 Vamos a um outro exemplo: A instrucao Acumulador for menor que ero, desvie para o ender 17 “Se o conte ‘ do do maneira: +11EE Onde II EE ‘ o endereso o c’ digo de uma das instru,oes abaixo, e ao qual ela se refere (00 EE 99). A seguir, [EEI indica o conte ‘ do de EE, [AQ indica o conte ‘ do do acumulador, Al indica o apontador de instrucao e (XXX) indica o c ‘ digo simb lico abreviado. 1 1 : (CEA) Copie o conte do do endere,o no acumulador. (AC recebe LEE]). 12: (CAE) Copie o conte ‘ do do acumulador no enderep EE. EE recebe [AC]) 21 : (SOM) Some o conte ‘ do do endereao EE com o conte • do do acumulador e guarde o resultado no acumulador. AC recebe [AC] + CEE]) 22: (SIJB) Subtraia o conte do do endereso EE do conte do do resultado no acumulador. PAGF C] – LEE]) 50: (NOP) Nenhuma opera, -o ‘ efetuada. 51 : (DES) Desvie a execusao para o endereso EE, i. e. Al recebe EE. 52: (DPO) Se o conte do do acumulador for maior do que zero, desvie a execu,-o para o endere,o EE. (se [AC] > O, Al recebe EE). 53: (DPZ) Se o conte ‘ do do acumulador for maior ou igual a zero, desvie a execu,-o para o endere,o EE. (se [AC] O, Al recebe EE). 4: (DNE) Se o conte do do acumulador for menor do que zero, desvie a execu. -o para o endere,o EE. Se [AC] < O, Al recebe EE. ) 55: (DNZ) Se o conte ' do do acumulador for menor ou igual a zero, desvie a execu,ao para o endereao EE. (Se [AC] 0, Al recebe EE). 56: (DDZ) Se o conte ' do do acumulador for diferente de zero, desvie a execu,ao para o 61 : (ADE) Desloque os digitos do acumulador uma posi,ao a esquerda, desprezando o digito mais significativo. 62: (ADD) Desloque os digitas do acumulador uma posisao a direita, desprezando o digito menos significativo. 70: (PAR) Pare a execu,-o do programa. OBS. : ser executada para encerrar a execu. o do programa. 4 PROBLEMA 1 Esta instru,ao deve Dada uma seq ncia de n' meros inteiros n -o negativos, imprimir a sua soma. A seq' -ncia seguida de um n mero negativo. Exemplo de sequ"ncia de entrada: +0100, + 0015, +0000, *0007, -0002. Programa 1: conte ' do do endere,0 40 pare Linguagem Endere. o de m' quina do hipo 01 +1 130 simb lica (de montagem) CEA zero 02 +1240 CAE soma 03 +3150 leia: LER num 04 +4150 +1 150 LER num IMP num os 06 CEA num DNE fim 07 08 09 CEA soma SOM num IO DES leia sim fim 12 30 40 so mem ' na em seq ficaria assim . Encia, por exemplo : "CARLOS" = +0003, +0001, +0018, +0012, +0015, +0019 7. Overflow Vamos agora discutir alguns detalhes adicionais sobre a representas -o de n ' meros inteiros. Em primeiro lugar notemos que h duas maneiras poss ' veis de representar o n' mero zero, a saber: +0000 e -0000. Por convensao, fica estabelecido que zero representado por +0000. Em segundo lugar falta estabelecer o resultado de uma opera,ao aritm ' tica entre dois inteiros cujo resultado n-o pode ser expresso como um inteiro. Por exemplo se somarmos +9991 e +0010, o "resultado" (10001) n -o mals represent como um inteiro (pois inteiros sendo constitu Idos de um sinal e 4 algari s' podem representar n