Você está na página 1de 22

NEANDER

NEANDER - Organização
Neander - características
Largura de dados e endereços 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 códigos de
condição: negativo (N) e zero (Z)
NEANDER
Memória Memória
(Programa) (Dados)

Registradores e
Controle
Instruções do Neander
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)
Exemplo - Soma

Somar duas variáveis de 8 bits: faça


um programa para somar duas
variáveis em complemento de 2. As
variáveis e o resultado estão dispostos
segundo o mapa de memória abaixo:
posição: 128: variável A
posição: 129: variável B
posição: 130: resultado R
Programa
Endereço Instrução Significado
0 LDA acumulador recebe o 1o valor
1 128
2 ADD soma-se o 2o valor ao acumulador
3 129
4 STA gravar resultado na posição 130
5 130
6 HLT
128 87 A
129 34 B
130 R
Programa - FLuxograma
Endereço Instrução LDA A
0 LDA
1 128
2 ADD
3 129
4 STA ADD B
5 130
6 HLT
128 87
129 34
130 STA R

LDA A
Exercício
Considerando o exemplo anterior faça
agora a subtração de duas variáveis e
crie também o fluxograma do programa
Comparação – Exemplo 1
Determine uma variável A é positiva ou negativa.
Armazene-a em 129 de for negativa e em 130 se for
positiva ou igual a zero.
posição: 128: variável A
posição: 129: variável N
posição: 130: variável P

SE A < 0
ENTÃO
N := A
SENÃO
P := A
Comparação – Exemplo 1
Determine uma variável A é positiva ou negativa.
Armazene-a em 129 de for negativa e em 130 se for
positiva ou igual a zero.
posição: 128: variável A LDA A
posição: 129: variável N
posição: 130: variável P
N(NEGATIVO)
JN
SE A < 0 P0(POSITIVO
OU IGUAL A ZERO)
ENTÃO
N := A STA N STA P
SENÃO
P := A

HLT
Comparação – Exemplo 1
Determine uma variável A é positiva ou negativa.
Armazene-a em 129 de for negativa e em 130 se for
positiva ou igual a zero.
posição: 128: variável A LDA A
posição: 129: variável N
posição: 130: variável P
N(NEGATIVO)
JN
SE A < 0 P0(POSITIVO
OU IGUAL A ZERO)
ENTÃO
N := A STA N STA P
SENÃO
P := A

HLT
Comparação – Exemplo 1
Endereço Dado Mnemônico Endereço
0 32 LDA 128
1 128
2 144 JN 7
3 7 LDA A
4 16 STA 130
5 130
6 240 HLT N(NEGATIVO)
7 16 STA 129 JN
8 129 P0(POSITIVO
9 240 HLT OU IGUAL A ZERO

128 130 STA N STA P


129 0
130 0

HLT
Comparação – Exemplo 2
Determine qual a maior de 3 variáveis positivas de 8
bits, representadas em complemento de dois e
armazenar em posições consecutivas da memória. O
resultado (ou seja, a maior variável), deve aparecer
na posição de memória consecutiva às ocupadas
pelas variáveis na área reserva aos dados.
posição: 128: variável A
posição: 129: variável B
posição: 130: variável C
posição: 131: resultado R: maior das variáveis
Comparação – Exemplo 2
SE A < B
ENTÃO SE B < C
ENTÃO C
SENÃO B
SENÃO SE A < C
ENTÃO C
SENÃO A
Exemplo Comparação
SE A < B
Exemplo Comparação
SE A < B

SE A-B < 0

SE A+(-B) < 0
Exemplo Comparação
SE A < B LDA 129

SE A-B < 0

SE A+(-B) < 0
Exemplo Comparação
SE A < B LDA 129
NOT
ADD 132 (1)
SE A-B < 0

SE A+(-B) < 0
Exemplo Comparação
SE A < B LDA 129
NOT
ADD 132 (1)
ADD 128
SE A-B < 0

SE A+(-B) < 0
Exemplo Comparação
SE A < B LDA 129
NOT
ADD 132 (1)
ADD 128
SE A-B < 0 JN END (então)
(senão)

SE A+(-B) < 0
Exemplo Comparação
SE A < B 0 - LDA 129
1 - NOT
2 - ADD 132 (1)
3 - ADD 128
SE A-B < 0 4 - JN END (então)
5 - (senão)
6 - ...
SE A+(-B) < 0