Anda di halaman 1dari 5

ICC

Linguagem de Mquina e Programas J sabemos que um programa uma seqncia de instrues que dirigem a CPU na execuo de algum clculo/tarefa. Os dados e as instrues de um programa, para serem manipulados ou executados pelo processador, precisam chegar a ele sob a forma de linguagem de mquina impulsos eltricos codificados num sistema binrio pois as operaes internas de um processador manipulam somente dois sinais eltricos (tem corrente , no tem corrente). Para facilitar a compreenso, representamos a presena de corrente (voltagem) pelo dgito 1 e a ausncia de corrente (voltagem) pelo dgito 0. Os dgitos 0 e 1 so conhecidos por bits. Para ilustrar e facilitar o entendimento da operao de uma CPU, vamos apresentar um programa simples em linguagem de mquina e a ao de uma CPU ao executar as instrues contidas em tal programa. Vamos considerar uma CPU simples, com uma linguagem de mquina primitiva. De forma geral, qualquer linguagem nada mais do que um conjunto de regras que especificam como as coisas devem ser expressas para serem compreendidas. No caso da linguagem da nossa mquina em particular, consideraremos um tamanho de 8 bits para cada instruo, dividindo-a em duas partes: um cdigo de operao de 3 bits que especifica a operao a ser executada, mais um operando de 5 bits que indica o endereo do dado sobre o qual a operao ser realizada. Tambm admitiremos a existncia de um acumulador na unidade de aritmtica e lgica no qual as operaes aritmticas so executadas. A tabela a seguir define o conjunto de instrues desta nossa CPU simples (isto significa que a CPU tem circuitos eletrnicos que executam diretamente cada uma destas instrues em particular).
Cdigo de Operao 001 010 011 100 101 110 111 Significado Carregue: copie no acumulador o contedo da palavra (clula) endereada Armazene: copie na palavra endereada o valor do acumulador Some: substitua o contedo atual do acumulador pela soma de seu contedo com o contedo da palavra (clula) endereada Subtraia: substitua o contedo atual do acumulador pelo resultado obtido da subtrao entre este contedo e o contedo da palavra (clula) endereada Desvie: salte para a instruo indicada pela palavra (clula) endereada Desvie se diferente de zero: salte para a instruo na palavra (clula) endereada se o valor contido no acumulador for diferente de zero Pare: encerre a execuo

Figura 1 Exemplo de um conjunto de instrues

-1-

Vamos supor que nosso pequeno programa tenha sido carregado nas 10 primeiras palavras (clulas) da memria principal. Alm das dez palavras indicadas, outras tambm receberam valores. A figura abaixo mostra o contedo completo da memria no incio da execuo do programa.
Palavra Endereo em binrio e o correspondente em decimal
00000 (0) 00001 (1) 00010 (2) 00011 (3)

00101010
00100 (4)

01001100
00101 (5)

00101110
00110 (6)

01101011
00111 (7)

01001110
01000 (8)

00101100
01001 (9)

10001101
01010 (10)

01001100
01011 (11)

11000010
01100 (12)

11100000
01101 (13)

00000011
01110 (14)

00000100
01111 (15)

00000000

00000001

00000000

00000000

Figura 2 Contedo de memria do programa e seus dados


Para facilitar a compreenso, o cdigo de operao e o operando de cada instruo do programa carregado na memria so mostrados na tabela abaixo, em separado, apesar de estarem justapostos na memria, formando uma cadeia de 8 bits.

Endereo da Instruo (binrio) 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001

Cdigo de Operao 001 010 001 011 010 001 100 010 110 111

Operando 01010 01100 01110 01011 01110 01100 01101 01100 00010 00000

Figura 3 Endereo de memria, cdigo e operando de cada instruo do programa


Vamos admitir que a execuo comece no endereo 00000, com a instruo 00101010, e que as instrues sejam executadas na ordem em que aparecem, exceto meno em contrrio. Com base na tabela da Figura 1, verificamos que a primeira instruo CARREGUE (cdigo de operao 001) a qual est ordenando CPU que copie no seu acumulador o contedo do endereo 01010 (endereo 10 em decimal). Assim, de acordo com a instruo, o contedo 00000011 (3 em decimal) colocado no acumulador. O fato desta operao ser apenas copiar significa que o contedo do endereo 01010 permanece inalterado. Entretanto, o contedo do acumulador foi substitudo e se perdeu. A prxima instruo a ser executada, dentro da seqncia, est contida no endereo 00001. Esta segunda instruo ARMAZENE (cdigo de operao 010) a qual est ordenando CPU que copie na palavra 01100 (12 em

-2-

decimal) o valor 00000011 (valor que est no acumulador), substituindo o anterior que ali se encontrava. A terceira instruo novamente CARREGUE (cdigo 001). O contedo atual da palavra com endereo 01110 (14 em decimal) copiado no acumulador. O valor copiado 00000000. A quarta instruo SOME (cdigo 011). O contedo (00000100, 4 em decimal) do endereo 01011 somado ao contedo atual (00000000) do acumulador. A soma realizada em binrio no acumulador, resultando 00000100 (4 em decimal). Este valor substitui o contedo anterior do acumulador. A quinta instruo ARMAZENE. Esta instruo faz com que o resultado da adio realizada anteriormente seja copiado do acumulador para o endereo 01110, substituindo o contedo anterior deste endereo. A sexta instruo , novamente, CARREGUE. Agora o contedo da palavra de endereo 01100 (12 em decimal) copiado no acumulador. Este valor aquele armazenado pela Segunda instruo, ou seja, 00000011 (3 em decimal). A stima instruo SUBTRAIA (cdigo 100). O contedo (00000001) do endereo 01101 (endereo 13) subtrado do contedo do acumulador (00000011, 3 em decimal). A subtrao realizada em binrio no acumulador, resultando o valor 00000010 (2 em decimal). A oitava instruo (010) , novamente, ARMAZENE. O resultado obtido (00000010, valor 2 em decimal que est no acumulador) armazenado na palavra com endereo 01100 (endereo 12). Neste ponto, vamos fazer uma pausa na computao para analisar o que aconteceu at aqui. O estado atual da memria e do acumulador est ilustrado na Figura 4. Comparando-se com o estado inicial da memria (Figura 2), nota-se que ocorreram alteraes de contedos. As palavras afetadas foram as de endereos 01100 e 01110 (em cinza). De fato, devemos observar estas duas palavras medida que a computao prossegue.
00000 (0) 00001 (1) 00010 (2) 00011 (3)

00101010
00100 (4)

01001100
00101 (5)

00101110
00110 (6)

01101011
00111 (7)

01001110
01000 (8)

00101100
01001 (9)

10001101
01010 (10)

01001100
01011 (11)

11000010
01100 (12)

11100000
01101 (13)

00000011
01110 (14)

00000100
01111 (15)

00000010

00000001 00000010

00000100

00000000

Acumulador :

Figura 4 Contedo da memria e acumulador aps execuo de oito instrues.

-3-

Vamos passar agora para a nona instruo. A Figura 1 indica que esta instruo DESVIE SE DIFERENTE DE ZERO (cdigo 110). Esta instruo de um tipo diferente das que vinham sendo executadas at agora. Ela indica duas coisas. Primeiro, examine o contedo atual do acumulador. Se o valor contido no acumulador diferente de zero, o que verdade neste momento (00000010), ento desvie imediatamente para a instruo cujo endereo dado no operando (00010, vai executar a instruo nesta clula. Clula 2 em decimal). Esta ser a prxima instruo a ser executada. Se o contedo do acumulador igual a zero, ento, ao invs de desviar para a instruo do endereo 00010, deve-se prosseguir executando a prxima instruo dentro da seqncia, ou seja, a instruo localizada em 01001. Esta instruo chamada de Desvio Condicional. No caso acima, houve um desvio para a terceira instruo (endereo 00010 ou 2). Como de se esperar, as instrues de trs a oito sero executadas novamente. Este trabalho ficar como exerccio (lembre-se que voc dever iniciar agora da situao mostrada na Figura 4. Ao passar pela segunda vez por este grupo de instrues, voc dever obter a situao ilustrada na Figura 5, abaixo.
00000 (0) 00001 (1) 00010 (2) 00011 (3)

00101010
00100 (4)

01001100
00101 (5)

00101110
00110 (6)

01101011
00111 (7)

01001110
01000 (8)

00101100
01001 (9)

10001101
01010 (10)

01001100
01011 (11)

11000010
01100 (12)

11100000
01101 (13)

00000011
01110 (14)

00000100
01111 (15)

00000001

00000001 00000001

00001000

00000000

Acumulador:

Figura 5 Contedo da memria e acumulador aps a segunda execuo do lao.


Neste ponto, a instruo de desvio condicional encontrada pela segunda vez. Novamente, o contedo do acumulador no zero e o desvio executado uma outra vez. Este trabalho ficar como exerccio. Aps a terceira execuo da instruo oito, os contedos da memria e do acumulador so mostrados na Figura 6. Em particular, o contedo da palavra 01100 00000000, o da palavra 01110 00001100 (12 em decimal) e o contedo do acumulador 00000000.
00000 (0) 00001 (1) 00010 (2) 00011 (3)

00101010
00100 (4)

01001100
00101 (5)

00101110
00110 (6)

01101011
00111 (7)

01001110
01000 (8)

00101100
01001 (9)

10001101
01010 (10)

01001100
01011 (11)

11000010
01100 (12)

11100000
01101 (13)

00000011
01110 (14)

00000100
01111 (15)

00000000

00000001 00000000

00001100

00000000

Acumulador:

-4-

Figura 6 Contedo da memria e acumulador no final da execuo do programa.


Neste ponto, a instruo de desvio condicional encontrada pela terceira vez mas no executada, pois o contedo do acumulador 0. Conseqentemente, passamos para a instruo do endereo 01001, que a seguinte na seqncia. Esta uma instruo PARE (cdigo 111). Assim, a execuo do programa terminada. A partir da Figura 6, podemos verificar os resultados finais obtidos. Particularmente, o valor da palavra de endereo 01110 12 em decimal. Agora, voc poder refletir sobre o que aconteceu, dando ateno especial aos valores iniciais dados pela Figura 2, e tentar descobrir qual foi a finalidade deste programa.

Concluso A discusso anterior descreveu como um computador tpico opera. A linguagem de mquina utilizada no exemplo foi elaborada apenas a ttulo de ilustrao, entretanto, as linguagens reais de mquina tm propriedades semelhantes. O papel de um programa foi identificado como o de fornecer instrues particulares sob as quais o controle da CPU opera para executar algum clculo requerido. A tarefa de um programador produzir a seqncia apropriada de instrues para resolver algum problema em pauta.

-5-

Anda mungkin juga menyukai