Ir ao conteúdo
  • Cadastre-se
EduhMarques

Assembly calculadora com o Neander

Recommended Posts

Boa tarde, Gente, preciso fazer um calculadora com 4 operações com o novo neander, "NeanderWin", porém, estou muito perdido, não consigo encontrar nada na internet, alguém poderia me dar uma ideia de como começar, por favor? Não sei se eu não procurei direito ou esse novo neander é mais chatinho mesmo..  Desde já, agradeço.. 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@EduhMarques    o neander é um processador bem simples, ele tem apenas 256 bytes de memória  e 15 instruções que são essas :

   Instrução         Descrição
      NOP        nenhuma operação
      STA ender  armazena acumulador (store)
      LDA ender  carrega acumulador (load)
      ADD ender  Soma
      OR ender   operação lógica “ou”
      AND ender  operação lógica “e”
      NOT        Inverte (complementa) acumulador
      JMP ender  desvio incondicional (jump)
      JN ender   desvio condicional (jump on negative)
      JZ ender   desvio condicional (jump on zero)
      JNZ ender  desvio condicional (jump on not zero)
      IN ender   operação  de entrada no dispositivo “ender”
      OUT ender  operação de saída no dispositivo “ender”
      LDI imed   carrega o valor imediato imed no acumulador
      HLT        término da execução (halt)

    no editor do neander coloque a variável e em seguida coloca EQU e o endereço, que pode ser qualquer um de zero até 255, mas o melhor e mais comum é colocar a partir do endereço 128, pois a parte inicial é onde será colocado os códigos depois de compilados, pois o texto precisa ser compilado para funcionar, e para compilar clique no botão compilar, cada variável em um endereço, depois coloque o comando " ORG 0 " para organizar tudo, para entrar um valor use o teclado  ( um quadrado branco com oito bolinhas vermelhas )  que são bits de um byte, a seta  para cima é 1 e para baixo é zero, clicando no bit a setinha vira para cima ou para baixo, e no código coloque o comando IN 0  para que ele leia o valor, e o melhor para é clicando no botão passo a passo , pois se for em executar ele passa direto e não para e nem dá tempo para colocar o valor que se quer, e na hora que chegar no comando IN 0 vá no teclado e coloque o valor que quer e clique no botão ENTRAR e depois continue clicando no botão PASSO A PASSO,   para ver o resultado que está no acumulador " A " coloque o comando OUT 0 e irá aparecer no viso do programa, e para colocar um valor em uma variável, que é um endereço de memória, use o comando STA NOME_DA_VARIÁVEL, e para somar use o comando LDA NOME_DA_VARIÁVEL onde está o primeiro valor e depois coloque o comando ADD NOME_DA_VARIÁVEL onde está o segundo valor a ser somado, com isso o resultado estará armazenado no acumulador " A " e poderá ser visto no visor usando o comando OUT 0,  depois que fizer tudo o que precisar então finalize o programa usando o comando HLT.

      na janela do lado direito estão todos os conteúdos dos 256 bytes de memória do programa, e em cima dessa janela são mostrados os comados em mnemônicos do código que foi escrito, PC é o endereço em hexadecimal que a instrução está,

ACC é o valor que está no acumulador " A " ,  

Z é o FLAG  zero, na hora que fizer comparação se Z estiver setado é porque é igual, senão é porque não é igual,   N é igual ao Z  porém verifica se é maior ou menor. 

    e embaixo do lado direito no quadrado de endereço pode ser colocado um valor de zero ate 255, a partir de onde será  inserido os códigos do programa escrito, assim que clicar no botão compilar.
  aqui um texto de um código para exemplo, copie e cole no editor do neander depois vá clicando no botão passo a passo : 

;---------------------------------------------------
; Programa:  soma dois valores
; Autor:
; Data:   
;---------------------------------------------------
X EQU 128  ; Endereço da variável X definido como 128
Y EQU 129  ; Endereço da variável Y definido como 129

ORG 0   ; organiza tudo
IN 0    ; le o teclado, o zero não pode ser mudado e coloca o valor no acumulador A
STA X   ; guarda o valor que está no acumulador A na variável X
IN 0    ; le o teclado, o zero não pode ser mudado e coloca o valor no acumulador A
STA Y   ; guarda o valor que está no acumulador A na variável Y
LDA X   ; acumulador A recebe conteúdo de X
ADD Y   ; conteúdo de A é somado ao conteúdo de Y
OUT 0   ; mostra o resultado, que está no acumulador, no visor,não pode mudar o zero 
HLT     ; processador pára e finaliza o programa 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×