Buscar

resp_lista_ex_ac_si_4

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

UNIVERSIDADE FEDERAL DE GOIÁS 
INSTITUTO DE INFORMÁTICA 
ARQUITETURA DE COMPUTADORES 
 
Exercícios – Lista 4 
 
1. Descreva a série de passos necessários para que uma CPU execute uma 
instrução. Qual o registrador que contém o endereço da próxima instrução a 
ser executada? Qual é assumidamente o endereço da próxima instrução a ser 
executada? Como uma instrução de desvio incondicional (ex. JMP 42) 
influencia neste processo? 
Reposta: 
Os passos são os seguinte: (1) busca instrução apontada por PC para o IR, 
(2) atualiza o PC para PC+1, (3) decodifica a instrução, (4) calcula endereço 
do(s) operando(o) – se necessário, (5) busca operando(s) – se necessário, 
(6) armazena resultado(s) em local(is) apropriado(s), (7) volta ao passo 1 
para a execução da próxima instrução. O PC contém o endereço da próxima 
instrução a ser executada. O valor do PC é sempre incrementado, 
apontando para a instrução seguinte na memória. Uma instrução de desvio 
incondicional faz com que o PC assuma o valor do operando da instrução, 
possibilitando assim um desvio na execução do programa. 
2. A memória representada na figura abaixo contém um programa para o 
computador xComputer. Liste as instruções, incluindo o valor dos operandos, 
que compõem este programa. Descreva o funcionamento de cada uma destas 
instruções e comente o que o programa faz ao ser executado a partir da 
posição de memória zero. 
0 0110010000000001 
1 0010100000000101 
2 0000000000000101 
3 0010100000000110 
4 0010110000000000 
Reposta: 
O programa é formado pelas instruções abaixo: 
 
0 LOD-C 1 
1 STO 5 
2 ADD 5 
3 STO 6 
4 HLT 
 
O programa carrega 1 no acumulador (AC), armazena este valor na posição 
de memória 5, faz a soma do valor atual de AC com o valor armazenado na 
posição 5 atribuindo o resultado ao registrador AC, armazena este valor na 
posição de memória 6, e interrompe a execução. Ou seja, o valor inicial 1 é 
armazenado na posição 5, somado com ele mesmo, e o resultado (2) 
armazenado na posição 6. 
 
3. Descreva, brevemente e pormenorizadamente, o que o programa abaixo faz. 
Qual o resultado produzido por este programa quando as posições 13 e 14 
contêm (a) 1 e 5, (b) 5 e 1, (c) 1 e 1, respectivamente. 
00: LOD 13 
01: SUB 14 
02: JMN 7 
03: JMZ 10 
04: LOD-C -1 
05: STO 15 
06: JMP 12 
07: LOD-C 1 
08: STO 15 
09: JMP 12 
10: LOD-C 0 
11: STO 15 
12: HLT 
13: 
14: 
15: 
Reposta: 
O programa verifica se o valor na posição 13 é menor, maior ou igual ao 
valor na posição 14; a posição 15 recebe 1 se for menor, -1 se for maior e 0 
se forem iguais. 
O valor da posição 13 é colocado em AC, este valor é subtraído do valor da 
posição 14, se o resultado der negativo acontece um desvio para a posição 
7, se o resultado der zero o desvio é para a posição 10, e se o resultado der 
positivo a constante -1 é armazenada na posição 15 e o programa é 
finalizado na posição 12. O desvio para a posição 7, carrega a constante 1 
em AC, armazena na posição 15 e salta para 12 onde encontra a instrução 
de parada. Já o desvio para a posição 10, carrega a constante 0 em AC, 
armazena na posição 15 e finaliza a execução. 
4. Escreva um programa para o xComputer que calcule a soma dos 20 primeiros 
números potência de dois (1, 2, 4, 8, 16, 32 ...) e armazene este valor numa 
posição de memória 
Reposta: 
 
 lod-c 1 
 sto num 
 lod-c 20 
 sto cnt 
 lod-c 0 
 sto sum 
loop: lod num 
 add sum 
 sto sum 
 lod num 
 shl 
 sto num 
 lod cnt 
 dec 
 sto cnt 
 jmz stop 
 jmp loop 
stop: hlt 
@18 
num: data 
cnt: data 
sum: data 
 
 
 
5. Escreva um programa para o xComputer que transforme uma string de 
maiúscula para minúscula. Assuma que a string é finalizada com o valor zero, e 
que os caracteres (um por célula) são representados através do código ASCII 
onde 'A' corresponde a '65' em decimal, 'B' corresponde a '66' em decimal, e 
assim sucessivamente, enquanto 'a' corresponde a '97' em decimal, 'b' 
corresponde a '98' em decimal, e assim sucessivamente. 
Reposta: 
 
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

Continue navegando