dicasneanderwin
TRANSCRIPT
-
7/24/2019 DicasNeanderWin
1/3
NEANDERWIN - Resumo operacional-------------------------------
O NeanderWin um simulador da mquina Neander, definida no livrodo Raul F. Weber (UFRGS), Fundamentos de Arquitetura de Computadores,Ed. Sagra Luzzatto. A mquina original foi extendida aqui para incluiralgumas instrues extras, incluindo a carga de dados imediatosno acumulador e operaes de entrada e saida de dados. Em nossosimulador esto mapeados apenas dois dispositivos: um teclado e um visor.
1) Listagem geral das instrues
Todas as instrues so de 8 bits, sendo que algumas possuem umoperando de 8 bits adicional. Em ambos os casos o primeiro bytecontm o cdigo da operao nos 4 bits de mais alta ordem. Nasinstrues com um operando, este ocupa o segundo byte.
Nota: Os 4 bits de mais baixa ordem do primeiro byte so reservadospara futuras expanses.
'NOP' cdigo 0O comando NOP usado apenas para gastar tempo.
'STA ender' cdigo 1
O comando STA guarda o acumulador na posio de memria indicada pelo operando ender.
'LDA ender' cdigo 2 O comando LDA atribui ao acumulador o contedo da posio de memria indicada pelo operando ender.
'ADD ender' cdigo 3 O comando ADD soma ao acumulador o contedo de uma posio de memria indicada pelo operando ender.
'SUB ender' cdigo 4 O comando ADD soma ao acumulador o contedo de uma posio de
memria indicada pelo operando ender.
'OR ender' cdigo 5 O comando OR realiza um "ou" lgico entre o acumulador e o contedo de uma posio de memria indicada pelo operando ender.
'AND ender' cdigo 6 O comando AND realiza um "e" lgico entre o acumulador e o contedo de uma posio de memria indicada pelo operando ender.
'NOT ender' cdigo 7
O comando NOT inverte os bits do acumulador ender.
'JMP edner' cdigo 8 O comando JMP (jump) desvia a execuo do programa para o endereo indicado pelo operando ender.
'JN ender' cdigo 9 O comando JN (jump if negative) desvia a execuo do programa para o endereo indicado pelo operando ender, apenas quando a ltima operao realizada produziu um valor com o bit 7 ligado
-
7/24/2019 DicasNeanderWin
2/3
(negativo).
'JZ ender' cdigo 10 O comando JZ (jump if zero) desvia a execuo do programa para o endereo indicado pelo operando ender, apenas quando a ltima operao realizada produziu um valor zero.
'JNZ ender' cdigo 11 O comando JNZ (jump if not zero) desvia a execuo do programa para o endereo indicado pelo operando ender, apenas quando a ltima operao realizada produziu um valor diferente de zero.
'IN ender' cdigo 12 O comando IN (input) traz para o acumulador o valor lido num dispositivo externo indicado pelo operando ender.
Em nosso simulador os dispositivos so: chaves (endereo 0) e o status de "dado disponvel" das chaves (endereo 1). Para escrever no banner uma letra direita usa-se o endereo 2 e o dado colocado no ACC. Para limpar o banner, usa-se o endereo 3.
'OUT ender' cdigo 13 O comando OUT (output) descarrega o contedo do acumulador em
um dispositivo externo indicado pelo operando ender. Em nosso simulador os nico dispositivos disponveis so um visor (endereo 0) e um banner (endereo 2 para escrever o dado do ACC e 3 para limpar).
'LDI imed' cdigo 14 O comando LDI (load immediate) carrega no acumulador o valor dado pelo operando imed.
'HLT' cdigo 15 O comando HLT (halt) para a mquina.
Modos de Endereamento:
- imediato O segundo byte da instruo o operando. A nica instruo que usa este modo de endereamento a LDI.- direto O segundo byte da instruo o endereo de memria do
operando.- indireto O segundo byte da instruo contm o endereo de memria onde est o eo do operando (ou seja, o segundo byte da instruo o endereo do ponteiro para o operando).
Para indicar que um operando indireto, deve-se preced-lo pela letra "@" (arrba)
2) Comentrios no programa Os comentrios so comeados por ponto e vrgula, e podemtambm ocorrer no final das linhas de instrues.
3) Rtulos Um rtulo um nome dado prxima posio de memria. O nome seguido por dois pontos.
4) Pseudo Instrues:
-
7/24/2019 DicasNeanderWin
3/3
ORG ender A pseudo-instruo ORG (origin) indica ao montador que a prxima instruo ser colocado na posio ender de memria.
var EQU imed A pseudo-instruo EQU (equate) atribui um nome (rtulo) a um
certo valor. Esse comando frequentemente usado para especificar variveis que so posicionadas em um endereo especfico de memria.
Por exemplo para posicionar a varivel x no endereo 100 use: X EQU 100
END ender A pseudo-instruo END indica que o programa fonte acabou. O operando ender usado para pr-carregar o PC com o endereo inicial de execuo do programa.
DS imed A pseudo-instruo DS (define storage) reserva um nmero de palavras na memria definido pelo valor imed.
DB imed
A pseudo-instruo DB (define bytes) carrega esta palavra com o valor dado pelo operando imed.
5) Exemplos de representao de nmeros
Decimal: 30Binrio: 00110000bHexadecimal: 30h
Nota: Nmeros hexadecimais maiores que 7fh devem ser precedidos por um zero, p. ex. 0f3h