Professional Documents
Culture Documents
Computador Visvel
Jorge Fernandes
Maio de 2004
Organizao Geral de um
Computador de von Neumann
Hardware
Processador
Dispositivo
de Entrada 1
Dispositivo
de Entrada 2
Memria
(RAM)
Dispositivo
de
Sada 1
Dispositivo
de Sada 2
Fluxo de dados
MEM-Memria com Posies Endereaveis
Fluxo de dados
OUTPUT_DEVICE
Organizao interna do
Processador (CPU)
Registradores
CPU
wr
rd
Unidade
de Controle
add
sub UAL
DADO:
934428213
509
500
?
7
ENDEREO:
1002
1000
10
11
5
4
0
rd
rd
rd
wr
wr
rd
wr
mem[0]
500
mem[4]
509
mem[8]
mem[1.000]
7
500
mem[1]
7
mem[5]
934428213
mem[9]
mem[1.001]
mem[2]
mem[3]
-1
mem[6]
0
mem[7]
0
mem[10]
mem[11]
0
7
0
7
mem[1.002]
...
...
O Cenrio de Execuo
Programa
que o usurio
deseja executar
INPUT_DEVICE
Usurio
MEMRIA RAM
mem[0]
mem[1]
mem[2]
mem[3]
mem[4]
mem[5]
mem[6]
mem[7]
CPU
Registradores
Reg.Dados Memria (MDR)
wr
Unidade
de Controle
(UC)
rd
INPUT_DEVICE
Fluxo de Controle
Fluxo de Dados
add/sub
UAL
Conjunto de Instrues de
LM_IO
STOP
Encerra a execuo do programa.
INPUT pos
Le o valor contido no dispositivo de entrada e armazena
este valor na posio de memria pos.
MEM[pos] <= INPUT_DEVICE
OUTPUT pos
Copia o valor contido na posio de memria pos para
o dispositivo de sada de dados.
OUTPUT_DEVICE <= MEM[pos].
LM_CALC : Conjunto de
Instrues
STORE pos
Copia para a posio de memria pos o valor contido no
acumulador. MEM[pos] <= ACC.
ADD pos
Calcula a soma entre o valor contido no acumulador e o valor
contido na posio de memria pos, armazenando o resultado no
Acumulador. ACC <= ACC + MEM[pos].
O Programa Carregado na
Memria RAM
Instrues
INPUT 7
MEM[0]
INPUT 8
MEM[1]
STORE 9
MEM[4]
MEM[2]
OUTPUT 9
MEM[5]
LOAD 7
ADD 8
MEM[3]
STOP
MEM[6]
A
MEM[7]
MEM[8]
MEM[9]
MEM[10]
MEM[12]
MEM[13]
MEM[14]
MEM[11]
MEM[15]
Dados (Variveis)
ACC valor
Armazena no acumulador o valor indicado
Exemplo ACC 500 armazena no acumulador o valor 500
Sumrio do Conjunto de
Instrues LM_1
INPUT x
MEM[x] <- INPUT_DEVICE
OUTPUT x
OUTPUT_DEVICE <- MEM[x]
STOP
Pra execuo do programa
LOAD x
ACC <- MEM[x]
STORE
MEM[x] <- ACC
ADD x
ACC <- ACC + MEM[x]
SUB
ACC <- ACC - MEM[x]
JMP
IP <- x
JNZ x
Se ACC == 0 ento IP <- x
JNEG x
Se ACC < 0 ento IP <- x
ACC x
ACC <- x
Exerccios
Construa, usando a linguagem LM_1, um
programa que Calcula a Multiplicao entre Dois
Nmeros atravs de somas sucessivas
Construa, usando a linguagem LM_1, um
programa que Calcula o Quadrado de um Nmero
Construa, usando a linguagem LM_1, um
programa que Calcula o Resto da Diviso entre
Dois Nmeros atravs do mtodo de subtraes
sucessivas