Buscar

AC 8 Processadores xComputer 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Processadores 
 
Estudo de Caso: xComputer 
Simulador do xComputer 
Unidade de Controle 
ULA 
CPU 
1023 
0 
1 
2 
3 
Memória 
16 bits 
16 bits 16 bits 
16 bits 
16 bits 
10 bits 10 bits 
4 bits 
1 
PC ADDR 
IR 
AC 
Y X 
COUNT 
Flag 
Dados 
Endereço 
Conjunto de instruções completo do xComputer 
Binário Mnemônico Significado 
010000XXXXXXXXXX ADD-C X Adiciona o número X ao AC 
000000XXXXXXXXXX ADD X Adiciona o conteúdo do endereço X ao AC 
010001XXXXXXXXXX SUB-C X Subtrai o número X de AC 
000001XXXXXXXXXX SUB X Subtrai o conteúdo do endereço X de AC 
0001110000000000 INC Incrementa AC 
011001XXXXXXXXXX LOD-C X Carrega o número X no AC 
001001XXXXXXXXXX LOD X Carrega o conteúdo de X no AC 
101001XXXXXXXXXX LOD-I X Carrega o conteúdo do endereço m[X] no AC 
001010XXXXXXXXXX STO X Armazena o conteúdo de AC no endereço X 
001010XXXXXXXXXX STO-I X Armazena o conteúdo de AC no endereço m[X] 
001100XXXXXXXXXX JMP X Desvia controle para o endereço X 
001101XXXXXXXXXX JMZ X Desvia para o endereço X se AC for zero 
001110XXXXXXXXXX JMN X Desvia para o endereço X se AC for negativo 
0010110000000000 HLT Finaliza processamento 
Principais instruções do xComputer 
Binário Mnemônic
o 
Significado 
010000XXXXXXXXXX ADD-C X Adiciona o número X ao AC 
000000XXXXXXXXXX ADD X Adiciona o conteúdo do endereço X ao AC 
010001XXXXXXXXXX SUB-C X Subtrai o número X de AC 
000001XXXXXXXXXX SUB X Subtrai o conteúdo do endereço X de AC 
0001110000000000 INC Incrementa AC 
011001XXXXXXXXXX LOD-C X Carrega o número X no AC 
001001XXXXXXXXXX LOD X Carrega o conteúdo de X no AC 
101001XXXXXXXXXX LOD-I X Carrega o conteúdo do endereço m[X] no AC 
001010XXXXXXXXXX STO X Armazena o conteúdo de AC no endereço X 
001010XXXXXXXXXX STO-I X Armazena o conteúdo de AC no endereço m[X] 
001100XXXXXXXXXX JMP X Desvia controle para o endereço X 
001101XXXXXXXXXX JMZ X Desvia para o endereço X se AC for zero 
001110XXXXXXXXXX JMN X Desvia para o endereço X se AC for negativo 
0010110000000000 HLT Finaliza processamento 
0 LOD-C 105 
1 ADD-C 17 
2 STO 5 
3 HLT 
4 
5 
Binário Mnemônic
o 
Significado 
010000XXXXXXXXXX ADD-C X Adiciona o número X ao AC 
000000XXXXXXXXXX ADD X Adiciona o conteúdo do endereço X ao AC 
010001XXXXXXXXXX SUB-C X Subtrai o número X de AC 
000001XXXXXXXXXX SUB X Subtrai o conteúdo do endereço X de AC 
0001110000000000 INC Incrementa AC 
011001XXXXXXXXXX LOD-C X Carrega o número X no AC 
001001XXXXXXXXXX LOD X Carrega o conteúdo de X no AC 
101001XXXXXXXXXX LOD-I X Carrega o conteúdo do endereço m[X] no AC 
001010XXXXXXXXXX STO X Armazena o conteúdo de AC no endereço X 
001010XXXXXXXXXX STO-I X Armazena o conteúdo de AC no endereço m[X] 
001100XXXXXXXXXX JMP X Desvia controle para o endereço X 
001101XXXXXXXXXX JMZ X Desvia para o endereço X se AC for zero 
001110XXXXXXXXXX JMN X Desvia para o endereço X se AC for negativo 
0010110000000000 HLT Finaliza processamento 
0 LOD-C 1 
1 STO 12 
2 LOD 12 
3 INC 
4 STO 12 
5 JMP 2 
xComputer Assembly 
; Este é um programa simples para contar 1, 2, 3, e assim por diante. 
; O valor do contador é armazenado na posição 12. 
; Este programa ilustra o uso de rótulos (ex. Laco e Cont). O símbolo @N 
; é usado para indicar que a posição N será referenciada pelo rótulo 
; declarado na linha seguinte (ex. @12 => Cont referencia a posição 12). 
 
 LOD-C 1 ; Faz Count igual a 1 
 STO Cont 
 
Laco: LOD Cont ; Adiciona 1 a Count 
 INC 
 STO Cont 
 JMP Laco ; Volte para o início do laço 
 
 @12 
Cont: data ; Posição usada pelo contador 
Binário Mnemônico Significado 
010000XXXXXXXXXX ADD-C X Adiciona o número X ao AC 
000000XXXXXXXXXX ADD X Adiciona o conteúdo do endereço X ao AC 
010001XXXXXXXXXX SUB-C X Subtrai o número X de AC 
000001XXXXXXXXXX SUB X Subtrai o conteúdo do endereço X de AC 
0001110000000000 INC Incrementa AC 
011001XXXXXXXXXX LOD-C X Carrega o número X no AC 
001001XXXXXXXXXX LOD X Carrega o conteúdo de X no AC 
101001XXXXXXXXXX LOD-I X Carrega o conteúdo do endereço m[X] no AC 
001010XXXXXXXXXX STO X Armazena o conteúdo de AC no endereço X 
001010XXXXXXXXXX STO-I X Armazena o conteúdo de AC no endereço m[X] 
001100XXXXXXXXXX JMP X Desvia controle para o endereço X 
001101XXXXXXXXXX JMZ X Desvia para o endereço X se AC for zero 
001110XXXXXXXXXX JMN X Desvia para o endereço X se AC for negativo 
0010110000000000 HLT Finaliza processamento 
0 LOD-C 0 
1 STO 15 
2 STO 16 
3 LOD 15 
4 INC 
5 STO 15 
6 ADD 16 
7 STO 16 
8 LOD 15 
9 SUB 17 
10 JMZ 12 
11 JMP 3 
12 HLT 
… … 
15 
16 
17 5 
; soma n primeiros numeros naturais 
 
 lod-c 0 
 sto num 
 sto sum 
volta: lod num 
 inc 
 sto num 
 add sum 
 sto sum 
 lod num 
 sub max 
 jmz fim 
 jmp volta 
fim: hlt 
 
 @15 
num: data 
sum: data 
max: 5 
 
Binário Mnemônico Significado 
010000XXXXXXXXXX ADD-C X Adiciona o número X ao AC 
000000XXXXXXXXXX ADD X Adiciona o conteúdo do endereço X ao AC 
010001XXXXXXXXXX SUB-C X Subtrai o número X de AC 
000001XXXXXXXXXX SUB X Subtrai o conteúdo do endereço X de AC 
0001110000000000 INC Incrementa AC 
011001XXXXXXXXXX LOD-C X Carrega o número X no AC 
001001XXXXXXXXXX LOD X Carrega o conteúdo de X no AC 
101001XXXXXXXXXX LOD-I X Carrega o conteúdo do endereço m[X] no AC 
001010XXXXXXXXXX STO X Armazena o conteúdo de AC no endereço X 
001010XXXXXXXXXX STO-I X Armazena o conteúdo de AC no endereço m[X] 
001100XXXXXXXXXX JMP X Desvia controle para o endereço X 
001101XXXXXXXXXX JMZ X Desvia para o endereço X se AC for zero 
001110XXXXXXXXXX JMN X Desvia para o endereço X se AC for negativo 
0010110000000000 HLT Finaliza processamento 
0 LOD-I 15 
1 JMZ 8 
2 OR-C 32 
3 STO-I 15 
4 LOD 15 
5 INC 
6 STO 15 
7 JMP 0 
8 HLT 
… … 
15 16 
16 A 
17 B 
18 C 
19 0 
; converte string para letra minúscula	
	
loop: lod-i ptr	
 jmz stop	
 or-c 32	
 sto-i ptr	
 lod ptr	
 inc	
 sto ptr	
 jmp loop	
stop: hlt	
	
 @15	
ptr: string	
string: 	 "A"	
 "B"	
 "C"	
 0 
Binário Mnemônic
o 
Significado 
010000XXXXXXXXXX ADD-C X Adiciona o número X ao AC 
000000XXXXXXXXXX ADD X Adiciona o conteúdo do endereço X ao AC 
010001XXXXXXXXXX SUB-C X Subtrai o número X de AC 
000001XXXXXXXXXX SUB X Subtrai o conteúdo do endereço X de AC 
0001110000000000 INC Incrementa AC 
011001XXXXXXXXXX LOD-C X Carrega o número X no AC 
001001XXXXXXXXXX LOD X Carrega o conteúdo de X no AC 
101001XXXXXXXXXX LOD-I X Carrega o conteúdo do endereço m[X] no AC 
001010XXXXXXXXXX STO X Armazena o conteúdo de AC no endereço X 
001010XXXXXXXXXX STO-I X Armazena o conteúdo de AC no endereço m[X] 
001100XXXXXXXXXX JMP X Desvia controle para o endereço X 
001101XXXXXXXXXX JMZ X Desvia para o endereço X se AC for zero 
001110XXXXXXXXXX JMN X Desvia para o endereço X se AC for negativo 
0010110000000000 HLT Finaliza processamento 
0 LOD-C 1 
1 STO 12 
2 LOD 12 
3 INC 
4 STO 13 
5 LOD 2 
6 INC 
7 STO 2 
8 LOD 4 
9 INC 
10 STO 4 
11 JMP 2 
; Preeche a memória com os números 1, 2, 3,..., 
; iniciando na posição 12. 
 
lod-c 1 ; Inicia com um 1 na posição 12 
sto 12 
lod 12 ; Esta instrução é armazenada na posição 2 
inc 
sto 13 ; Esta instrução é armazenadana posição 4 
lod 2 ; Adiciona 1 ao número na posição 2 
inc 
sto 2 
lod 4 ; Adiciona 1 ao número na posição 4 
inc 
sto 4 
jmp 2 ; Volta para a instrução na posição 2 
Binário Mnemônic
o 
Significado 
010000XXXXXXXXXX ADD-C X Adiciona o número X ao AC 
000000XXXXXXXXXX ADD X Adiciona o conteúdo do endereço X ao AC 
010001XXXXXXXXXX SUB-C X Subtrai o número X de AC 
000001XXXXXXXXXX SUB X Subtrai o conteúdo do endereço X de AC 
0001110000000000 INC Incrementa AC 
011001XXXXXXXXXX LOD-C X Carrega o número X no AC 
001001XXXXXXXXXX LOD X Carrega o conteúdo de X no AC 
101001XXXXXXXXXX LOD-I X Carrega o conteúdo do endereço m[X] no AC 
001010XXXXXXXXXX STO X Armazena o conteúdo de AC no endereço X 
001010XXXXXXXXXX STO-I X Armazena o conteúdo de AC no endereço m[X] 
001100XXXXXXXXXX JMP X Desvia controle para o endereço X 
001101XXXXXXXXXX JMZ X Desvia para o endereço X se AC for zero 
001110XXXXXXXXXX JMN X Desvia para o endereço X se AC for negativo 
0010110000000000 HLT Finaliza processamento 
0 LOD-C 0 
1 STO 13 
2 LOD-I 14 
3 JMZ 12 
4 SUB 13 
5 JMN 8 
6 LOD-I 14 
7 STO 13 
8 LOD 14 
9 INC 
10 STO 14 
11 JMP 2 
12 HLT 
13 0 
14 15 
15 12 
16 35 
17 5 
18 32 
19 18 
20 0 
; Acha o maior valor de um vetor e guarda na posição max (13)	
	
	lod-c 0	
 sto max	
loop: 	lod-i ptr	
 jmz stop	
 sub max	
 jmn next	
 lod-i ptr	
 sto max	
next: 	lod ptr	
 	inc	
 sto ptr	
 jmp loop	
stop: 	hlt	
max: 	0	
ptr: 	array	
array: 	12	
 35	
 5	
 32	
 18	
 0 
Microinstruções 
•  Select-Add 
•  Select-Subtract 
•  Select-AND 
•  Select-OR 
•  Select-NOT 
•  Select-Shift-Left 
•  Select-Shift-Right 
•  Load-Data-Into-Memory 
•  Load-X-From-AC 
•  Load-Y-From-Memory 
•  Load-Y-From-IR 
•  Load-AC-From-ALU 
•  Load-AC-From-Memory 
•  Load-AC-From-IR 
•  Increment-AC 
•  Decrement-AC 
•  Load-Flag-From-ALU 
•  Load-PC-From-Memory 
•  Load-PC-From-IR 
•  Increment-PC 
•  Load-IR-From-Memory 
•  Load-ADDR-From-IR 
•  Load-ADDR-From-Y 
•  Load-ADDR-From-PC 
•  Set-COUNT-To-Zero 
•  Stop-Clock 
ADD-C X 
1.  Load-ADDR-From-PC 
2.  Load-IR-From-Memory 
3.  Increment-PC 
4.  Load-X-From-AC; Load-Y-IR 
5.  Select-Add; Load-AC-From-ALU; Load-Flag-
From-ALU 
6.  Select-Add 
7.  Set-COUNT-To-Zero 
ADD-C X 
1.  Load-ADDR-From-PC 
2.  Load-IR-From-Memory 
3.  Increment-PC 
4.  Load-X-From-AC; Load-Y-IR 
5.  Select-Add; Load-AC-From-ALU; Load-Flag-
From-ALU 
6.  Select-Add 
7.  Set-COUNT-To-Zero 
ADD X 
1.  Load-ADDR-From-PC 
2.  Load-IR-From-Memory 
3.  Increment-PC 
4.  Load-ADDR-From-IR 
5.  Load-X-From-AC; Load-Y-From-Memory 
6.  Select-Add; Load-AC-From-ALU; Load-Flag-
From-ALU 
7.  Select-Add 
8.  Set-COUNT-To-Zero 
ADD-I X 
1.  Load-ADDR-From-PC 
2.  Load-IR-From-Memory 
3.  Increment-PC 
4.  Load-ADDR-From-IR 
5.  Load-Y-From-Memory 
6.  Load-ADDR-From-Y 
7.  Load-X-From-AC; Load-Y-From-Memory 
8.  Select-Add; Load-AC-From-ALU; Load-Flag-From-ALU 
9.  Select-Add 
10.  Set-COUNT-To-Zero 
Microinstruções por Macroinstrução 
ADD X 
ADD-C X 
ADD-I X 
SUB X 
SUB-C X 
SUB-I X 
AND X 
AND-C X 
AND-I X 
OR X 
OR-C X 
OR-I X 
NOT 
INC 
DEC 
8 
7 
10 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
SHL 
SHR 
LOD X 
LOD-C X 
LOD-I X 
STO X 
STO-I X 
JMP X 
JMP-I X 
JMZ X 
JMZ-I X 
JMN X 
JMN-I X 
JMF X 
JMF-I X 
HLT 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
? 
Microinstruções por Macroinstrução 
ADD X 
ADD-C X 
ADD-I X 
SUB X 
SUB-C X 
SUB-I X 
AND X 
AND-C X 
AND-I X 
OR X 
OR-C X 
OR-I X 
NOT 
INC 
DEC 
8 
7 
10 
8 
7 
10 
8 
7 
10 
8 
7 
10 
7 
5 
5 
SHL 
SHR 
LOD X 
LOD-C X 
LOD-I X 
STO X 
STO-I X 
JMP X 
JMP-I X 
JMZ X 
JMZ-I X 
JMN X 
JMN-I X 
JMF X 
JMF-I X 
HLT 
7 
7 
6 
5 
8 
6 
8 
5 
6 
5 
6 
5 
6 
5 
6 
5 
Microinstruções por Macroinstrução 
INC 5 
DEC 5 
LOD-C X 5 
JMP X 5 
JMZ X 5 
JMN X 5 
JMF X 5 
HLT 5 
LOD X 6 
STO X 6 
JMP-I X 6 
JMZ-I X 6 
JMN-I X 6 
JMF-I X 6 
ADD-C X 7 
SUB-C X 7 
AND-C X 7 
OR-C X 7 
NOT 7 
SHL 7 
SHR 7 
ADD X 8 
SUB X 8 
AND X 8 
OR X 8 
LOD-I X 8 
STO-I X 8 
ADD-I X 10 
SUB-I X 10 
AND-I X 10 
OR-I X 10

Outros materiais