Você está na página 1de 0

4-1

Captulo
QUATRO
Computador hipottico Neander
O computador NEANDER foi criado com intenes didticas
1
e extremamente simples.
To simples que voc, sem muito esforo, pode projet-lo. Experimente!
4. 1 Caractersticas
O computador NEANDER tem as seguintes caractersticas:
Largura de dados e endereos de 8 bits
Dados representados em complemento de dois
1 acumulador de 8 bits (AC)
1 apontador de programa de 8 bits (PC)
1 registrador de estado com 2 cdigos de condio: negativo (N) e zero (Z)
4. 2 Modos de endereamento
O NEANDER s possui um modo de endereamento: o modo direto (muitas vezes tambm
chamado de absoluto).
No modo de endereamento direto (Figura 4.1), a palavra que segue o cdigo da instruo
contm, nas instrues de manipulao de dados, o endereo de memria do operando.
Nas instrues de desvio, o endereo contido na instruo corresponde posio de
memria onde est uma instruo a ser executada.
endere
memria
operando
Figura 4.1- Modo de endereamento direto

1
Esta pseudo-mquina foi criada pelos Profs. Raul Weber e Taisy Weber para a antiga disciplina CPD148 -
Arquitetura de Computadores I. Possui simulador e depurador associados, que podem ser vistos no apndice A.
4-2
4. 3 Conjunto de instrues
O conjunto de instrues de NEANDER compreende 11 instrues, codificadas atravs dos
quatro bits mais significativos da palavra que contm o cdigo da instruo (Tabela 4.1):
Cdigo Instruo Comentrio
0000 NOP nenhuma operao
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end ou lgico
0101 AND end e lgico
0110 NOT inverte (complementa) acumulador
1000 JMP end desvio incondicional - (jump)
1001 JN end desvio condicional - (jump on negative)
1010 JZ end desvio condicional - (jump on zero)
1111 HLT trmino de execuo - (halt)
Tabela 4.1 - Conjunto de instrues do NEANDER
Na Tabela 4.1, end significa endereo direto. Nas instrues STA, LDA, ADD, OR e AND,
end corresponde ao endereo de operando. Nas instrues JMP, JN e JZ, end corresponde
ao endereo de desvio. As aes efetuadas por cada uma das instrues da Tabela 4.1 podem
ser vistas na Tabela 4.2, a seguir:
Instruo Comentrio
NOP nenhuma operao
STA end MEM(end) AC
LDA end AC MEM(end)
ADD end AC MEM(end) + AC
OR end AC MEM(end) OR AC
AND end AC MEM(end) AND AC
NOT AC NOT AC
JMP end PC end
JN end IF N=1 THEN PC end
JZ end IF Z=1 THEN PC end
Tabela 4.2 - Aes executadas
Na Tabela 4.2 AC o acumulador, MEM(end) significa contedo da posio end de
memria, N e Z so os cdigos de condio e representa uma atribuio.
4. 4 Cdigos de condio
A unidade lgica e aritmtica de NEANDER fornece os seguintes cdigos de condio, que
so usados pelas instrues JN e JZ (vide Tabela 4.2):
N - (negativo) : sinal do resultado
1 - resultado negativo
0 - resultado positivo
Z - (zero) : indica resultado igual a zero
1 - resultado igual a zero
0 - resultado diferente de zero
4-3
As instrues lgicas e aritmticas (ADD, NOT, AND, OR) e a instruo de transferncia LDA
afetam os cdigos de condio N e Z. As demais instrues (STA, JMP, JN, JZ, NOP e HLT)
no alteram os cdigos de condio.
4. 5 Formato das instrues
As instrues de NEANDER so formadas por um ou dois bytes, ou seja, ocupam uma ou
duas posies na memria (Figura 4.2).
cdigo don't care
endereo direto
7 3 4 0
Figura 4.2 - Formato de instruo no NEANDER
Nas instrues de um byte, os 4 bits mais significativos contm o cdigo da instruo. Nas
instrues de dois bytes, o primeiro byte contm o cdigo (tambm nos 4 bits mais
significativos) e o segundo byte contm um endereo. Instrues de dois bytes, no
NEANDER, so aquelas instrues que fazem referncia memria.
4. 6 Exemplo de programao
Vamos considerar, como exemplo, um programa que realiza a soma de 3 posies
consecutivas da memria e armazena o resultado numa quarta posio. Inicialmente, devem
ser escolhidas a rea de dados e a rea de programa, ou seja, a localizao das instrues e
dados na memria. No existem critrios para essa escolha, mas deve ser observado que a
rea de programa no pode invadir a rea de dados e vice-versa. Seja, para esse programa,
escolhida uma alocao de memria de tal forma que o programa ocupe a metade inferior da
memria e os dados a metade superior, como segue:
rea de programa
incio do programa posio 0 (0H)
rea de dados
primeira parcela posio 128 (80H)
segunda parcela posio 129 (81H)
terceira parcela posio 130 (82H)
resultado posio 131 (83H)
O programa seria:
Simblico Comentrios
LDA 128 % acumulador A recebe contedo da posio 128
ADD 129 % contedo de A somado ao contedo da posio 129
ADD 130 % contedo de A somado ao contedo da posio 130
STA 31 % contedo de A copiado na posio 131
HLT % processador para
4-4
Esse programa pode ser editado em linguagem de mquina (tanto em hexa como em
decimal), depurado e executado usando o simulador/depurador NEANDER, cujos comandos
foram apresentados no captulo respectivo. A codificao em linguagem de mquina
correspondente a cada uma das instrues mostradas acima seria:
Simblico Hexa Decimal
LDA 128 20 80 32 128
ADD 129 30 81 48 129
ADD 130 30 82 48 130
STA 131 10 83 16 131
HLT F0 240
4. 7 Concluso
NEANDER um computador muito simples, desenvolvido apenas para fins didticos.
Processadores modernos so muito mais complexos que NEANDER. Entretanto, mesmo
processadores utilizados nas mais sofisticadas estaes de trabalho so baseados nos
conceitos elementares que voc aprendeu com NEANDER.
4. 8 Exerccios de programao usando o NEANDER
Os exerccios apresentados aqui so apenas uma amostra do que pode ser programado com
NEANDER. Na definio de novos problemas, o nico cuidado que deve ser tomado com
a memria disponvel para programa e dados, que compreende apenas 256 posies. Exceto
onde explicitado, todos os nmeros e endereos so representados na base decimal.
Para todos os programas sugeridos, vale a seguinte conveno:
incio do programa - posio 0 (0H)
incio da rea de dados - posio 128 (80H)
Essa conveno adotada apenas para facilitar a correo dos programas.
1. Limpar o acumulador: faa 4 programas diferentes que zerem o acumulador.
2. Somar duas variveis de 8 bits: faa um programa para somar duas variveis
representadas em complemento de dois. As variveis e o resultado esto dispostos
segundo o mapa de memria abaixo:
posio 128: primeira varivel
posio 129: segunda varivel
posio 130: resultado
3. Subtrair duas variveis: faa um programa para subtrair duas variveis de 8 bits
representadas em complemento de dois. O resultado deve aparecer na posio de memria
consecutiva s ocupadas pelas variveis.
posio 128: minuendo
posio 129: subtraendo
posio 130: resultado
4. Comparao: determine qual a maior de 3 variveis positivas de 8 bits armazenadas em
posies consecutivas de memria. O resultado (ou seja, a maior varivel), deve aparecer
na primeira posio livre de memria na rea reservada aos dados.
5. Determinao de overflow na soma: faa um programa que determine a ocorrncia de
overflow na soma de duas variveis. As variveis so de 8 bits em complemento de dois e
esto armazenadas em posies consecutivas de memria. O resultado da soma, tambm
4-5
em 8 bits, deve aparecer na primeira posio livre e overflow deve ser indicado da
seguinte forma:
posio 130: contedo = 0H quando no ocorreu overflow
contedo = FFH quando ocorreu overflow
6. Limpeza de uma rea de memria: faa um programa para zerar 32 posies consecutivas
na memria.

Você também pode gostar