Escolar Documentos
Profissional Documentos
Cultura Documentos
4 3
Cdigo
0
No utilizados
endereo direto
Nota:
Os 4 bits de mais baixa ordem do primeiro byte so reservados para futuras expanses.
Existem tambm dois cdigos que no tm instrues associadas.
'NOP' cdigo 0
O 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.
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 endereo 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 podem tambm 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:
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 determinado 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.
3
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:
30
Binrio:
00110000b
Hexadecimal: 30h
Obs: Nmeros hexadecimais maiores que 7Fh devem ser precedidos por um zero, p. ex.
0F3h
Tabela de Instrues
Cdigo
binrio
0000
0001
0010
0011
0100
0101
0110
1000
1001
1010
1011
1100
1101
1110
1111
Instruo
NOP
STA ender
LDA ender
ADD ender
OR ender
AND ender
NOT
JMP ender
JN ender
JZ ender
Instruo
Descrio
NOP
STA ender
LDA ender
ADD ender
OR ender
AND ender
NOT
JMP ender
JN ender
JZ ender
JNZ ender
IN ender
OUT ender
LDI imed
HLT
nenhuma operao
armazena acumulador (store)
carrega acumulador (load)
Soma
operao lgica ou
operao lgica e
inverte (complementa) acumulador
desvio incondicional (jump)
desvio condicional (jump on negative)
desvio condicional (jump on zero)
desvio condicional (jump on not zero)
operao de entrada no dispositivo ender
operao de sada no dispositivo ender
carrega o valor imediato imed no acumulador
trmino da execuo (halt)
Comentrio
nenhuma operao
MEM(ender) AC
AC MEM(ender)
AC AC + MEM(ender)
AC AC or MEM(ender)
AC AC and MEM(ender)
AC NOT AC
PC ender
if N = 1 then PC ender
if Z = 1 then PC ender
4
JNZ ender
IN ender
OUT ender
LDI imed
HALT
if Z = 0 then PC ender
AC IN (ender)
OUT(ender) AC
AC imed
halt
Cdigos de condio:
N (negativo): sinal do resultado
1 resultado negativo
0 resultado no negativo
Z (zero): indica resultado igual a zero
1 resultado igual a zero
0 resultado diferente de zero
As instrues lgicas e aritmticas (ADD, NOT, AND, OR) e a instruo de transferncia
LDA afetam os cdigos de condio N e Z. As demais instrues (STA, JMP, JN, JZ, JNZ,
IN, OUT, LDI, NOP e HLT) no alteram os cdigos de condio.
Ciclo de busca da instruo:
RI MEM(PC)
PC PC + 1
Seqncia de operaes para execuo da instruo:
Instruo:
NOP
Ciclo
Busca
Execuo
STA
Busca
Execuo
LDA
Busca
Execuo
operaes
RI MEM(PC)
PC PC + 1
nenhuma
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC PC + 1
MEM(ender) AC
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC PC + 1
AC MEM(ender)
ADD
Busca
Execuo
OR
Busca
Execuo
AND
Busca
Execuo
NOT
Busca
Execuo
JMP
Busca
Execuo
JN caso N = 1
Busca
Execuo
JN caso N = 0
Busca
Execuo
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC PC + 1
AC AC + MEM(ender)
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC PC + 1
AC AC or MEM(ender)
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC PC + 1
AC AC and MEM(ender)
RI MEM(PC)
PC PC + 1
AC not AC
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC ender
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC ender
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC PC + 1
JZ caso Z = 1
Busca
Execuo
JZ caso Z = 0
Busca
Execuo
JNZ caso Z = 1
Busca
Execuo
JNZ caso Z = 0
Busca
Execuo
IN ender
Busca
Execuo
OU ender
Busca
Execuo
LDI imed
Busca
Execuo
HLT
Busca
Execuo
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC ender
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC PC + 1
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC PC + 1
RI MEM(PC)
PC PC + 1
ender MEM(PC)
PC ender
RI MEM(PC)
PC PC + 1
ender MEM(PC)
IN (ender)
RI MEM(PC)
PC PC + 1
ender MEM(PC)
OUT (ender)
RI MEM(PC)
PC PC + 1
ender MEM(PC)
AC ender
RI MEM(PC)
PC PC + 1
parar o processamento
Ciclo
Busca
Execuo
STA
Busca
Execuo
LDA
Busca
Execuo
ADD
Busca
Execuo
Operaes
REM PC
Read; PC PC + 1
RI RDM
Nenhuma
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read; PC PC + 1
REM RDM
RDM AC
write
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read; PC PC + 1
REM RDM
read
AC RDM; atualiza N e Z
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read; PC PC + 1
REM RDM
read
AC AC + RDM; atualiza N e Z
OR
Busca
Execuo
AND
Busca
Execuo
NOT
Busca
Execuo
JMP
Busca
Execuo
JN caso N = 1
Busca
Execuo
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read; PC PC + 1
REM RDM
read
AC AC or RDM; atualiza N e Z
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read; PC PC + 1
REM RDM
read
AC AC and RDM; atualiza N e Z
REM PC
Read; PC PC + 1
RI RDM
AC not AC
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read;
PC RDM
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read;
PC RDM
JN caso N = 0
Busca
JZ caso Z = 1
Execuo
Busca
Execuo
JZ caso Z = 0
Busca
JNZ caso Z = 1
Execuo
Busca
JNZ caso Z = 0
Execuo
Busca
Execuo
IN
Busca
Execuo
OUT
Busca
Execuo
LDI
Busca
Execuo
REM PC
Read; PC PC + 1
RI RDM
PC PC + 1
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read;
PC RDM
REM PC
Read; PC PC + 1
RI RDM
PC PC + 1
REM PC
Read; PC PC + 1
RI RDM
PC PC + 1
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read;
PC RDM
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read; PC PC + 1
REM RDM
input
AC RDM; atualiza N e Z
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read; PC PC + 1
REM RDM
RDM AC;
output
REM PC
Read; PC PC + 1
RI RDM
REM PC
Read; PC PC + 1
AC RDM; atualiza N e Z
1
HLT
Busca
Execuo
REM PC
Read; PC PC + 1
RI RDM
Parar o processamento
Exemplos de programao
Vamos considerar, como exemplo, um programa que realiza a soma de 3 posies
consecutivas da memria e armazena o resultado numa quarta posio. Inicialmente,
devem ser escolhidas a rea de dados e a rea de programa, ou seja, a localizao das
instrues e dados na memria. No existem critrios para essa escolha, mas deve ser
observado que rea de programa no pode invadir a rea de dados e vice-versa. Ou seja,
para esse programa, foi escolhida uma alocao de memria de tal forma que o programa
ocupe a metade inferior da memria e os dados a metade superior, como segue:
rea de programa
rea de dados
O programa seria:
Simblico
Comentrios
X EQU
Y EQU
W EQU
Z EQU
ORG
LDA
ADD
ADD
STA
HLT
0
X
Y
W
Z
128
129
130
131
Concluso
NEANDER um computador muito simples, desenvolvido apenas para fins didticos.
Processadores modernos so muito mais complexos que NEANDER. Entretanto, mesmo
processadores utilizados nas mais sofisticadas estaes de trabalho so baseados nos
conceitos elementares que voc aprendeu com NEANDER.
O NEANDERWIN estende o conjunto de instrues do NEANDER e oferece uma
interface de programao amigvel, com a entrada do cdigo em representao
simblica, com diversas facilidades para o programador, que tornam muito mais fcil o
uso do processador NEANDER como ferramenta de ensino. Esto disponveis verses
tanto para o sistema operacional Windows e Linux. O cdigo fonte est disponvel
mediante solicitao.
1