Baixe o app para aproveitar ainda mais
Prévia do material em texto
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 (Programa) Registradores e Controle Memória (Dados) 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 Endereço Instrução Significado 0 1 LDA 128 acumulador recebe o 1o valor 2 3 ADD 129 soma-se o 2o valor ao acumulador 4 5 STA 130 gravar resultado na posição 130 6 HLT 128 87 A 129 34 B 130 R Programa Programa - FLuxograma Endereço Instrução 0 1 LDA 128 2 3 ADD 129 4 5 STA 130 6 HLT 128 87 129 34 130 LDA A ADD B 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 posição: 129: variável N posição: 130: variável P SE A < 0 ENTÃO N := A SENÃO P := A LDA A JN STA PSTA N N(NEGATIVO) P0(POSITIVO OU IGUAL A ZERO) 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 posição: 129: variável N posição: 130: variável P SE A < 0 ENTÃO N := A SENÃO P := A LDA A JN STA PSTA N N(NEGATIVO) P0(POSITIVO OU IGUAL A ZERO) HLT Comparação – Exemplo 1 LDA A JN STA PSTA N N(NEGATIVO) P0(POSITIVO OU IGUAL A ZERO) HLT Endereço Dado Mnemônico Endereço 0 32 LDA 128 1 128 2 144 JN 7 3 7 4 16 STA 130 5 130 6 240 HLT 7 16 STA 129 8 129 9 240 HLT 128 130 129 0 130 0 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 SE A-B < 0 SE A+(-B) < 0 LDA 129 Exemplo Comparação SE A < B SE A-B < 0 SE A+(-B) < 0 LDA 129 NOT ADD 132 (1) Exemplo Comparação SE A < B SE A-B < 0 SE A+(-B) < 0 LDA 129 NOT ADD 132 (1) ADD 128 Exemplo Comparação SE A < B SE A-B < 0 SE A+(-B) < 0 LDA 129 NOT ADD 132 (1) ADD 128 JN END (então) (senão) Exemplo Comparação SE A < B SE A-B < 0 SE A+(-B) < 0 0 - LDA 129 1 - NOT 2 - ADD 132 (1) 3 - ADD 128 4 - JN END (então) 5 - (senão) 6 - ...
Compartilhar