0% acharam este documento útil (0 voto)
94 visualizações34 páginas

Arquitetura do Computador Neander

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
94 visualizações34 páginas

Arquitetura do Computador Neander

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PPTX, PDF, TXT ou leia on-line no Scribd

2020-1

Prof. Fernanda Lima Kastensmidt


fglima@[Link]

INF01107 – Introdução à Arquitetura e


Organização de Computadores

Título do capítulo
Neander
O Computador Neander

Máquina hipotética inspirada no computador IAS


(desenvolvido de 1946 a 1952 no Institute for
Advanced Studies da Universidade de Princeton, em
New Jersey, USA – ver slides sobre arquiteturas de
1 endereço). Ele foi batizado em homenagem ao
homem de Neanderthal, precursor do Homo Sapiens.
Neander

O computador Neander tem as seguintes


caracteristicas:

•Largura de dados e de endereços de 8 bits


•Dados representados em complemento de 2
•1 acumulador de 8 bits (AC)
•1 apontador de programa (Program counter) de
8 bits (PC)
•1 registrador de estado (RST) com 2 códigos de
condição: negativo (N) e zero (Z).
Memória

0
unidade central
00001111 in
00010001 control
00110001 RI PC

address
00110011 RST

ALU
out
255

ACUM
Características gerais

registradores • dados e endereços de 8 bits


7 0 • UAL processa dados em
acumulador complemento de dois
7 0
apontador de instruções(*) 7 memória 0

256 posições (0 a 255)


Códigos de condição

N Z

• acumulador de 8 bits (AC);


• contador de programa de 8 bits (PC);
• registrador de estado com 2 códigos
de condição:
negativo (N) e zero (Z)
(*) outra denominação para o “PC”
Modo de Endereçamento

• Possui apenas um modo de endereçamento,


denominado direto ou absoluto (inst. jump).
• Modo de endereçamento DIRETO o segundo byte da
instrução contém o número da posição de memória
(endereço) onde está o operando.
• Modo de endereçamento ABSOLUTO o segundo byte é
o numero a ser usado.

e operação memória
0
e+1 endereço 1
e+2 ... 2
3
. operando
.
.
.
O conjunto de instruções

Código Instrução Comentário


0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end “ou” lógico
0101 AND end “e” lógico
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 término de execução - (halt)
O conjunto de instruções

Código Instrução Comentário


0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end “ou” lógico
0101 AND end “e” lógico
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 término de execução - (halt)
O conjunto de instruções

Código Instrução Comentário


0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end “ou” lógico
0101 AND end “e” lógico
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 término de execução - (halt)
O conjunto de instruções

Código Instrução Comentário


0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end “ou” lógico
0101 AND end “e” lógico
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 término de execução - (halt)
O conjunto de instruções

Código Instrução Comentário


0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end “ou” lógico
0101 AND end “e” lógico
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 término de execução - (halt)
O conjunto de instruções

Código Instrução Comentário


0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end “ou” lógico
0101 AND end “e” lógico
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 término de execução - (halt)
O conjunto de instruções

Código Instrução Comentário


0000 NOP nenhuma operação
0001 STA end armazena acumulador - (store)
0010 LDA end carrega acumulador - (load)
0011 ADD end soma
0100 OR end “ou” lógico
0101 AND end “e” lógico
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 término de execução - (halt)
Arquitetura do Conjunto de Instruções
O Registrador de Estado

• conjunto de “códigos de condição”)

registradores Instruções que alteram


7 0 os códigos de condição:
acumulador
7 0
•LDA end
Apontador de instruções •ADD end
Códigos de condição •OR end
N Z •AND end
•NOT
O Registrador de Estado

• conjunto de “códigos de condição”)

• LDA end
• ADD end
• OR end
• AND end
• NOT
Instruções Neander
Exemplo 1: programa no Neander
• Programa que realiza a soma de 3 dados Memória
armazenados em 3 posições 0
consecutivas da memória e armazena o
resultado na quarta posição.
Instruções
(programa)
Inicio do programa: posição 0 (0H)

127
Área de dados:
Primeira parcela posição 128 (80H) 128 00001111
129 00010001
Segunda parcela posição 129 (81H)
130 00110001
Terceira parcela posição 130 (82H) 131 00000000
Resultado posição 131 (83H) …

255

*os numeros 128, 129, 130 e 131 estão em decimal


Exemplo 1: programa no Neander
• Programa que realiza a soma de 3 Memória
dados armazenados em 3 posições 0
consecutivas da memória e
armazena o resultado na quarta Instruções
posição. (programa)

LDA 128 : AC <- mem(128) 127

ADD 129 AC <- AC + mem(129) 128 00001111


ADD 130 AC <- AC + mem(130) 129 00010001
130 00110001
STA 131 mem(131) <- AC 131 00000000
HLT …

255

*os numeros 128, 129, 130 e 131 estão em decimal


Como este programa Ex1 fica em binário / Hex

LDA 128 : AC <- mem(128) Memória


ADD 129 AC <- AC + mem(129) 0
ADD 130 AC <- AC + mem(130)
STA 131 mem(131) <- AC Instruções
(programa)
HLT

127
20.80
30 81 128 00001111
129 00010001
30 82
130 00110001
10 83 131 00000000
F0 …

255
Como este programa Ex1 fica em binário / Hex

LDA 128 : AC <- mem(128) Memória


ADD 129 AC <- AC + mem(129) 0 00100000
10000000
ADD 130 AC <- AC + mem(130) 00110000
10000001
STA 131 mem(131) <- AC 00110000
HLT 10000010
*vermelho são os opcodes 00010000
(codigos das 5 instruções) 10000011
127 11110000
20.80 *verde são os endereços

30 81 128 00001111
129 00010001
30 82
130 00110001
10 83 131 00000000
F0 …

255
Exemplo 2: programa Neander

• Limpar o acumulador (carregar zero para o accumulador


Exemplo 2: programa Neander
Solução se tem zero na memória
LDA 128 0 20
LDA 128 0 20 NOT 1. 80
HLT 1. 80 HLT 2. 60
2 FF 3 FF
… …
80 00 80 FF

LDA 128 0 20
AND 129 1. 80
HLT 2. 50
3. 81
4 FF

80. FF
81. 00
Exemplo 2: programa Neander
Solução geral
0 10
STA 128 1. 80
NOT 2 60
AND 128 3. 50
HLT 4 80
5 F0

80 XX
Exercicios

1. Somar dois números de 8 bits em


complemento de 2 armazenados na memória
nos endereços 128 e 129, respectivamente.
Armazenar resultado no endereço 130.
End conteudo da mem
0 00100000
1 10000000
LDA 128 2 00110000
ADD 129 3.10000001
STA 130 4.00010000
HLT 5.10000010
6.11110000

128 dado1
129 dado2
130 result
131
Exercicios

1. Determinar se um numero em complemento


de 2 é negativo ou não. O numero está
armazenado no endereço 128 e a resposta
deve ser 11111111 no endereço 130 se for
negativo e 00000000 no endereço 130 se for
positivo. End conteudo da mem
0 00100000
LDA 128 1.10000000
JN 9 2.10010000
3.00001001
LDA 131 4.00100000
STA 130 5.10000011
HLT 6.00010000 1 byte = 8 bits
End: LDA 132 7.10000010 em cada
8.11110000
STA 130 endereço
9.00100000
HLT armazena 1 byte
128 dado1
129
130 result
131. 00000000
132 11111111
Exercicios

1. Determinar se um numero em complemento


de 2 é negativo ou não. O numero está
armazenado no endereço 128 e a resposta
deve ser 11111111 no endereço 130 se for
negativo e 00000000 no endereço 130 se for
positivo. End conteudo da mem
LDA 128
JN 8
LDA 131
JMP 10
End: LDA 132
Fim: STA 130 1 byte = 8 bits
em cada
HLT endereço
armazena 1 byte
128 dado1
129
130 result
131. 00000000
132 11111111
Exercicios

1. Subtrair dois números de 8 bits em complemento de 2


armazenados na memória nos endereços 128 e 129,
respectivamente. Armazenar resultado no endereço
130.
A-B
A + (-B) End conteudo da mem

LDA 129
NOT
ADD 132
ADD 128
STA 130
HLT 128 dado1
129 dado2
130 result
131. 00000000
132. 00000001
133 -dado2
Exercicios

1. Determinar o bit(3) do numero em


complemento de 2 no endereço 128 é 1 ou 0.
Se for 1 escrever 00000001 no endereço 130
e se for 0 escrever 00000010 no endereço
130. End conteudo da mem
0 LDA 128
2 AND 133 acc <= 0000B000
4 JZ 10
6 LDA 132
8 JMP 12
10 LDA 131
12 STA 130
14 HLT 128 XXXXXXXX
129
130 result
131. 00000010
132. 00000001
133 00001000
Exercicios
1. Determinar o maior número de 3 valores
positivos armazenados nos endereços 128,
129 e 130, respectivamente. Armazenar o
resultado no endereço 131.
0 LDA 129 End conteudo da mem
2 NOT
3 ADD 132
5 ADD 128 acc <= dado1-dado2
7 JN 13
9 LDA 128
11 JMP 15
13 LDA 129
15 STA 133 mem(133) <= maiortemp dado1-dado2 =? neg
17 LDA 130
19 NOT
20 ADD 132 128 dado1
22 ADD 133 ac <= maiortemp – dado3
129 dado2
24 JN 30
26 LDA 133
130 dado3
28 JMP 32 131. resultado
30 LDA 130 132. 00000001
32 STA 131 133 Maior temp
34 HLT
Exercicios

1. Somar dois números de 8 bits em sinal


magnitude armazenados na memória nos
endereços 128 e 129, respectivamente.
Armazenar resultado no endereço 130.
End conteudo da mem
0 xxxx
2
4
6
8
10
12
14
128 dado1
129 dado2
130 result
131. xx
132. xx
133 xxxxxxxxx
Exercicios

1. Determine se houve overflow na soma de


dois numeros de 8 bits em complemento de
2. Os numeros estão nos endereços 128 e
129. O resultado da soma deve ser gravado
no endereço 130 e no endereço 131 deve
ser gravao FF se houve overflow e 00 se não
houve.
Exercicios

1. Limpeza de uma área de memória: faça um


programa que zere 32 posições
consecutivas da memória. O endereço
inicial da área a ser limpa está no endereço
128. O endereço inicial é garantido em estar
entre 130 e 220.
Exercícios

• Projete os programas no papel e depois use o simulador


Neander para verificar o funcionamento e o resultado.

Você também pode gostar