Buscar

IAC3 - Arquitetura1 - Instrucoes de N operandos

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 4 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

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ARQUITETURA DE COMPUTADORES 
1. Instruções de 0, 1, 2 e 3 operandos 
As instruções podem ter números diferentes de operandos. Existem arquiteturas que 
têm mais de um tipo de instrução com diferentes números de operandos. Todos os 
exemplos a serem estudados terão como base uma máquina pedagógica com diferentes 
tipos de instrução, com objetivo de exemplificar o funcionamento de cada um. 
1.1 Instruções de um operando 
Um exemplo de instruções de um operando está descrito na máquina pedagógica que 
foi apresentada anteriormente. As instruções aritméticas (e lógicas) fazem referência a 
um registrador especial denominado Acumulador e o operando refere-se a um valor ou 
a um endereço de memória, que é acessado através de diferentes modos. 
Exemplo de Conjunto de instruções: 
Cód Mnemônico Significado 
0 LOAD op ACC <- (operando) 
1 STORE op (endereço) <- ACC 
2 ADD op ACC <- ACC + (operando) 
3 SUB op ACC <- ACC - (operando) 
4 MULT op ACC <- ACC * (operando) 
5 DIV op ACC <- ACC / (operando) 
6 JMP endereço CI <- endereço 
7 JZ endereço CI <- endereço, se ACC = 0 
8 JNZ endereço CI <- endereço, se ACC != 0 
9 IN endereço (endereço) <- entrada via teclado 
A OUT endereço vídeo <- (endereço) 
B STOP ------- Para a execução do programa. 
 
Como pode ser observado, as instruções aritméticas contemplam 1 operando. 
Ex: resolver a expressão dada em alto nível 
 X = (A – B) / (A + B) * C 
 
Exemplo de Programa em assembly: 
LOAD A 
 ADD B 
 MULT C 
STORE TEMP 
LOAD A 
 SUB B 
 DIV TEMP 
 STORE X 
Formato: 
 
COD ME OPERANDO Onde ME é o modo de endereçamento do operando 
1.2 Instruções de dois operandos 
Instruções aritméticas e lógicas de dois operandos não têm um acumulador preferencial 
para execução das instruções, têm vários registradores (por exemplo R1, R2, R3 e R4) e 
um dos operandos indica que registrador se refere à instrução. O outro operando indica 
um valor imediato, um endereço ou outro registrador. Normalmente não existem 
instruções memória x memória em virtude de aumentar em demasia o número de bits 
da instrução, que obrigatoriamente exigiria um formato de instrução diferente. 
 
Exemplo de Conjunto de instruções: 
Cód Mnemônico Significado 
0 MOV op1,op2 op1 <- op2 
1 ADD op1,op2 op1 <- op1 + op2 
2 SUB op1,op2 op1 <- op1 - op2 
3 MULT op1,op2 op1 <- op1 * op2 
4 DIV op1,op2 op1 <- op1 / op2 
... 
As instruções de desvio não se alteram pois são instruções de um operando e indicam o 
endereço para onde será desviado o fluxo de execução do programa. Idem para 
instruções de entrada e saída, que indicam as variáveis que irão receber os valores da 
entrada ou exibir os seus valores na saída. 
Ex: resolver a expressão dada em alto nível 
 X = (A – B) / (A + B) * C 
 
Exemplo de Programa em assembly: 
MOV R1, A 
 SUB R1, B 
MOV R2, A 
 ADD R2, B 
 MULT R2,C 
 DIV R1, R2 
 MOV X, R1 
 
Formato: 
 
 
 
 
 
 
 
 
 
COD ME1 OPERANDO1 ME2 OPERANDO2 
Onde ME1 e ME2 indicam o modo de endereçamento dos operandos 
1.3 Instruções de três operandos 
Nasnstruções aritméticas e lógicas de três operandos, estes podem indicar valores 
imediatos, registradores ou endereços de memória. 
 
Exemplo de Conjunto de instruções: 
Cód Mnemônico Significado 
0 MOV op1,op2 op1 <- op2 
1 ADD op1,op2,op3 op1 <- op2 + op3 
2 SUB op1,op2,op3 op1 <- op2 - op3 
3 MULT op1,op2,op3 op1 <- op2 * op3 
4 DIV op1,op2,op3 op1 <- op2 / op3 
... 
As instruções de movimentação de 2 operandos podem coexistir no conjunto de 
instruções. As instruções de desvio não se alteram pois são instruções de um operando 
e indicam o endereço para onde será desviado o fluxo de execução do programa. Idem 
para instruções de entrada e saída, que indicam as variáveis que irão receber os valores 
da entrada ou exibir os seus valores na saída. 
Ex: resolver a expressão dada em alto nível 
 X = (A – B) / (A + B) * C 
 
Exemplo de Programa em assembly: 
 SUB R1, A, B 
 ADD R2, A, B 
 MULT R2, R2, C 
 DIV X, R1, R2 
 
Formato: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
COD ME1 OPERANDO1 ME2 OPERANDO2 
Onde ME1, ME2 e ME3 indicam o modo de endereçamento dos operandos 
ME3 OPERANDO3 
1.4 Instruções de zero operandos 
Neste tipo de instrução, existe uma pilha de registradores. Os operando são carregados 
na pilha e as operações são realizadas entre o sub-topo da pilha e o topo, conforme 
descrito nos exemplos abaixo, onde T indica o ponteiro para o topo da pilha, ST indica o 
ponteiro para o sub topo da pilha. As instruções que executam operações sobre a pilha 
não tem operandos. 
 
Exemplo de Conjunto de instruções: 
Cód Mnemônico Significado 
0 PUSH op empilha operando: 
T <- T + 1; ST <- ST + 1; (T) <- op 
1 POP op desempilha operando: 
(op) <- (T); T <- T - 1; ST <- ST - 1 
2 ADD soma subtopo com topo: 
(ST) <- (ST) + (T); T <- T - 1; ST <- ST - 1 
3 SUB subtrai subtopo do topo: 
(ST) <- (ST) - (T); T <- T - 1; ST <- ST - 1 
4 MULT multiplica subtopo pelo topo: 
(ST) <- (ST) * (T); T <- T - 1; ST <- ST - 1 
5 DIV divide subtopo do topo: 
(ST) <- (ST) / (T); T <- T - 1; ST <- ST - 1 
 
Como pode ser observado, as instruções aritméticas contemplam 0 operandos. 
Ex: resolver a expressão dada em alto nível 
 X = ((A – B) / (A + B) )* C 
 
Exemplo de Programa 
em assembly: 
PUSH A 
 PUSH B 
 SUB 
PUSH A 
PUSH B 
 ADD 
 DIV B 
 PUSH C B A A+B C 
 MULT A A-B A-B (A-B)/(A+B) ((A-B)/(A+B))*C 
 POP X Pilha Pilha Pilha Pilha Pilha 
Formato: crescimento 
 da Pilha 
 
 
COD

Continue navegando