Buscar

Aula04_OC

Prévia do material em texto

. . . b b a a a a . . . Input/Output Tape
q0q1
q2
q3 . . .
qn
Finite Control
q1
Reading and Writing Head
(moves in both directions)
Arquitetura básica de um computador
Prof. Tiago Almeida
Universidade Federal do Tocantins
tiagoalmeida@uft.edu.br
Organização de Computadores
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 1 / 72
Sumário
1 Banco de registradores
2 Codificação das instruções
3 Conjunto de instruções
4 Referências
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 2 / 72
Banco de registradores
Banco de registradores
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 3 / 72
Banco de registradores
Banco de registradores
; constantes de dados
valor EQU 76H ; valor cujo número de bits com 1 é para ser contado
máscaraInicial EQU 01H ; 0000 0001 em binário (máscara inicial)
máscaraFinal EQU 80H ; 1000 0000 em binário (máscara final)
; constantes de endereços (na memória de dados)
contador EQU 00H ; endereço da célula de memória que guarda
; o valor corrente do contador de bits com 1
máscara EQU 01H ; endereço da célula de memória que guarda
; o valor corrente da máscara
; programa (memória de instruções)
início: LD 0 ; inicializa o registrador A com zero
ST [contador] ; inicializa o contador de bits com zero
LD máscaraInicial ; carrega valor da máscara inicial
ST [máscara] ; atualiza na memória
teste: AND valor ; isola o bit que se quer verificar se é 1
JZ próximo ; se o bit for zero, passa à máscara seguinte
LD [contador] ; bit é 1. Busca o valor atual do contador
ADD 1 ; incrementa-o
ST [contador] ; e atualiza de novo na memória
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 4 / 72
Banco de registradores
Banco de registradores
próximo: LD [máscara] ; busca de novo a máscara atual
SUB máscaraFinal ; subtrai para comparar com a máscara final
JZ fim ; se der zero, eram iguais e portanto já terminou
LD [máscara] ; tem de carregar a máscara de novo
ADD [máscara] ; soma com ela própria para multiplicá-la por 2
ST [máscara] ; atualiza o valor da máscara na memória
JMP teste ; vai fazer mais um teste com a nova máscara
fim: JMP fim ; fim do programa
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 5 / 72
Banco de registradores
Banco de registradores
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 6 / 72
Banco de registradores
Banco de registradores
; constantes de dados
valor EQU 76H ; valor cujo número de bits com 1 é para ser conta do
máscaraInicial EQU 01H ; 0000 0001 em binário (máscara inicial)
máscaraFinal EQU 80H ; 1000 0000 em binário (máscara final)
; endereços
contador EQU 00H ; endereço da célula de memória que guardará
; o número de bits com 1 no fim da contagem
; programa
início: MOV B, 0 ; inicializa o contador de bits com zero
MOV C, máscaraInicial ; inicializa o registrador C com máscara i nicial
MOV A, C ; coloca a máscara inicial também no registrador A
teste: AND A, valor ; isola o bit que se quer verificar se é 1
JZ próximo ; se o bit for zero, passa à máscara seguinte
ADD B, 1 ; o bit é 1, incrementa o valor do contador
próximo: CMP C, máscaraFinal ; compara com a máscara final
JZ acaba ; se forem iguais, já terminou
ADD C, C ; soma máscara com ela própria para
; multiplicá-la por 2
JMP teste ; vai fazer mais um teste com a nova máscara
acaba: MOV [contador], B ; se for necessário, pode armazenar o número
; de bits com 1 em uma célula de memória
fim: JMP fim ; fim do programa
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 7 / 72
Banco de registradores
Banco de registradores
O banco de registradores é um conjunto de registradores (no fundo, uma pequena
memória) com a particularidade de que consegue ler dois registradores ao mesmo tempo
(tem só uma entrada, para escrita, mas duas saídas, para leitura);
Os sinais REG_1 e REG_2 são os índices (dentro do banco de registradores) dos
registradores que servem como 1.o e 2.o operandos, respectivamente. No fundo, são os
endereços de cada registrador dentro do banco de registradores. Nada impede que REG_1
e REG_2 sejam iguais, caso em que o mesmo valor é usado para os dois operandos (tal
como já aconteceu na instrução ADD C, C);
Os operandos da ALU passam a estar exclusivamente dentro do processador (registradores
ou constantes), o que melhora o desempenho e reflete a filosofia de usar os registradores
tanto quanto possível;
O primeiro operando é sempre um registrador. O segundo operando pode eventualmente
ser uma constante, dependendo da seleção do multiplexador MUX_OP2 (caso em que
REG_2 é irrelevante);
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 8 / 72
Banco de registradores
Banco de registradores
Isto quer dizer que o acesso à memória passa a ser feito exclusivamente por instruções
MOV (quer seja leitura, quer seja escrita da memória), deixando de ser possível os
operandos de instruções como ADD, AND, etc., estarem em memória. Se for o caso,
tem-se de fazer primeiro o MOV do operando para um registrador e só depois se pode
fazer a operação. Isto simplifica a implementação das instruções;
O resultado das operações da ALU é escrito no mesmo registrador que continha o primeiro
operando (indicado por REG_1). O multiplexador MUX_RES (de resultado) permite
selecionar também um valor lido da memória e escrever num registrador (na instrução
MOV registrador, [endereço] ou, o seu equivalente em notação RTL, registrador r
M[endereço]);
Ao mesmo tempo em que o resultado de uma operação na ALU é escrito no registrador
indicado por REG_1, o RE (registrador de estado) é atualizado com a informação sobre
esse resultado, memorizando os bits Z (1 se o resultado for zero) e N (1 se o resultado for
negativo);
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 9 / 72
Banco de registradores
Banco de registradores
Alguns bits do RE têm uma saída direta do banco de registradores, independentemente da
seleção efetuada por REG_1 e REG_2 (particularmente os bits Z e N), para estarem
sempre disponíveis para a unidade de controle (desvios condicionais);
O banco de registradores obriga que cada instrução indique quais os registradores que quer
ler, o que implica que cada célula da memória de instruções tenha mais dois campos,
REG_1 e REG_2.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 10 / 72
Banco de registradores
Endereço de dados e instruções
Podem ser identificados dois objetivos conflitantes:
A existência de uma única memória permite otimizar o uso da sua capacidade, mais para
instruções ou mais para dados, de acordo com as necessidades dos programas;
A existência de memórias separadas permite ler as instruções ao mesmo tempo que os
dados, reduzindo o tempo de execução dos programas em comparação com a existência de
uma única memória, onde a unidade de controle (com as instruções) e a unidade de dados
(com os dados) têm de competir nos acessos à memória.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 11 / 72
Banco de registradores
Endereço de dados e instruções
Os processadores atuais permitem conciliar as duas vantagens e estão ligados apenas a uma
memória, que serve tanto para dados como para instruções. Aliás, este já era o caso do modelo
original de von Neumann, mas há uma diferença fundamental:
No modelo original, o acesso a uma instrução tinha de ser feito primeiro e só depois se
acessava os dados necessários para essa instrução;
Os processadores atuais incluem no seu interior pequenas memórias separadas de
instruções e de dados, chamadas de caches (de instruções e de dados), em que o núcleo
do processadoré basicamente o módulo identificado como Processador na Figura.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 12 / 72
Banco de registradores
Endereço de dados e instruções
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 13 / 72
Banco de registradores
Endereço de dados e instruções
Desta forma, os efeitos práticos deste esquema são os seguintes:
Tanto a unidade de controle como a unidade de dados podem acessar ao mesmo tempo a
respectiva cache (como se estivessem ligadas a memórias separadas), desde que a célula
pretendida tenha uma cópia na cache;
Se a cache não tiver uma cópia da célula pretendida, vai buscá-la automaticamente e sem
que o programa perceba (pode demorar mais tempo no primeiro acesso a essa célula, mas
nos acessos seguintes a célula já estará lá);
Ambas as caches estão ligadas à interface de memória externa, que faz a coordenação e
escolha dos acessos das caches, se estas decidirem ao mesmo tempo que precisam ir
buscar uma célula na memória principal.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 14 / 72
Banco de registradores
Espaço de endereçamento e mapa de endereços
Se a título de exemplo assumirmos que:
O endereço da primeira instrução executada pelo processador quando este inicia é zero;
A memória tem uma capacidade de 212 (4096) células e está localizada a partir do
endereço zero;
Há 100 periféricos diferentes e eles estão em endereços contíguos a partir do endereço
32.768 (215, ou a primeira célula da 2a metade do espaço de endereçamento), inclusive;
O programa tem dois blocos de instruções, um com 800 e outro com 500 instruções. A
primeira instrução do bloco de 800 instruções é aquela em que o programa deve começar a
ser executado. Do primeiro bloco passa-se para o segundo através de um simples desvio
(instrução JMP);
O programa usa dois blocos de dados, um com 1000 e outro com 700 células de memória;
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 15 / 72
Banco de registradores
Espaço de endereçamento e mapa de endereços
Faixa de endereços Dispositivo físico
0 a 4095 Memória (4096 de capacidade)
4096 a 32.767 Livre (sem dispositivo)
32.768 a 32.867 Periféricos (100 periféricos)
32.868 a 65.535 Livre (sem dispositivo)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 16 / 72
Banco de registradores
Espaço de endereçamento e mapa de endereços
Faixa de endereços Utilização
0 a 799 1.o bloco de instruções
800 a 1000 Livre (não usado)
1000 a 1999 1.o bloco de dados
2000 a 2499 2.o bloco de instruções
2500 a 2999 Livre (não usado)
3000 a 3699 2.o bloco de dados
3700 a 4095 Livre (não usado)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 17 / 72
Banco de registradores
Endereçamento de byte e de palavra
Para otimizar o acesso a quantidades de informação do tamanho de um byte (por exemplo, os
caracteres e sinais de pontuação de texto em codificação ASCII), os processadores suportam
normalmente o acesso à memória byte a byte e em múltiplos de um byte até o tamanho da
palavra. Ou seja, um processador com uma largura de:
16 bits consegue acessar quantidades de 8 bits e de 16 bits;
32 bits consegue acessar quantidades de 8, 16 e 32 bits.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 18 / 72
Banco de registradores
Endereçamento de byte e de palavra
Por que isto é tão importante?
Suportar endereçamento de byte reduz a capacidade de memória que o processador é
capaz de endereçar. Com endereçamento de palavra, há um endereço diferente para cada
célula de memória de 16 bits. Ou seja, com 16 bits de endereço o processador consegue
endereçar 216 (64 K, ou 65.536) células de 16 bits cada, ou 128 KBytes (2364 K). Com
endereçamento de byte, apenas 64 KBytes (metade) podem ser endereçados, pois os 16
bits de endereço mantêm-se e agora tem-se de ter um endereço diferente para cada byte
individual;
O endereçamento de byte interessa apenas para os dados, mas os endereços das instruções
também são afetados, pois a memória principal é a mesma. Como as instruções são
indivisíveis, os endereços das instruções (o valor do PC) têm de avançar de 2 em 2;
Nas instruções de acesso à memória (no caso de dados), tem-se de indicar que quantidade
de informação se pretende usar, 8 ou 16 bits, o que implica mais opcodes (na prática,
equivale a duplicar o número de instruções dedicadas à transferência de dados de e para a
memória);
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 19 / 72
Banco de registradores
Endereçamento de byte e de palavra
Por que isto é tão importante?
Cada célula de memória de 16 bits contém 2 bytes, com endereços par (X) e ímpar (X+1).
Cada célula começa sempre num byte de endereço par;
Fazer um acesso à memória (quer a dados, quer a instruções) em 16 bits especificando o
endereço Y implica acessar o byte com o endereço Y e o byte com o endereço Y+1. Se Y
for par (acesso alinhado), está se acessando apenas uma célula. Se Y for ímpar, está se
acessando o segundo byte de uma célula e o primeiro byte da célula seguinte (acesso
desalinhado). Para suportar isto, o processador tem de fazer dois acessos diferentes à
memória e depois compor os bytes das duas células lidas, o que complica o hardware,
razão pela qual muitos processadores, incluindo o PEPE, proíbem isto (geram um erro se
isso acontecer);
O endereçamento de byte não é transparente para o programador de linguagem assembly.
Ao usar os endereços, é preciso ter atenção ao fato de que os endereços das palavras
(células de 16 bits) evoluem de 2 em 2 e são pares, enquanto os endereços dos bytes
evoluem de 1 em 1 e podem ser pares ou ímpares.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 20 / 72
Banco de registradores
Endereçamento de byte e de palavra
Faixa de endereços Dispositivo físico
0 a 8191 Memória (4096 palavras, ou 8192 bytes de capacidade)
8191 a 32.767 Livre (sem dispositivo)
32.768 a 32.967 Periféricos (100 periféricos, 200 endereços)
32.968 a 65.535 Livre (sem dispositivo)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 21 / 72
Banco de registradores
Endereçamento de byte e de palavra
Faixa de endereços Utilização
0 a 1599 1o bloco de instruções
1600 a 1999 Livre (não usado)
2000 a 3999 1o bloco de dados
4000 a 4999 2o bloco de instruções
5000 a 5999 Livre (não usado)
6000 a 7399 2o bloco de dados
7400 a 8191 Livre (não usado)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 22 / 72
Codificação das instruções
Codificação das instruções
Tipo Exemplo 1o Campo 2o Campo 3o Campo 4o Campo
1 ADD R0, R1
Opcode principal
Opcode secundá-
rio
1o operando/ /re-
sultado (registra-
dor)
2o operando (re-
gistrador)
2 ADD R0, 2 2o operando
(constante de 4
bits)
3 JZ 100 Operando único (constante de 8 bits)
4 MOV R0, 100 1o operando/ /re-
sultado
2o operando (constante de 8 bits)
5 JMP 2000 Operando único (constante de 12 bits)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 23 / 72
Codificação das instruções
Registradores
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 24 / 72
Codificação das instruções
Registradores
As especificidades associadas a estes cinco registradores são fundamentalmente as seguintes (a
serem abordadas nas seções indicadas):
R11, ou RL (Registrador de Ligação) – É usado para otimizar a chamada de rotinas. Pode
ser usado livremente como registrador geral desde que não esteja sendo usado no âmbito
desta otimização;
R12, ou SP (Stack Pointer, ou Ponteiro de Pilha) – É usado na implementação de
instruçõesque manipulam a pilha, uma estrutura de dados muito importante em qualquer
processador ;
R13, ou RE (Registrador de Estado) – Contém alguns bits importantes para o
funcionamento do processador;
R14, ou BTE (Base da Tabela de Exceções) – É usado para conter o endereço de base de
uma tabela, destinada a suportar eventos especiais (como erros de execução, por
exemplo), ou exceções;
R15, ou TEMP (de temporário) – Designa um registrador usado temporariamente na
implementação de instruções mais complexas.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 25 / 72
Codificação das instruções
Bits de estado
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 26 / 72
Codificação das instruções
Bits de estado
Observe que:
O caso 1 (Z=1 e todos os outros com 0) só ocorre somando zero com zero. Qualquer
soma de um número com o seu simétrico (para dar zero como resultado) implica
imediatamente transporte, pois, por definição, a soma de um número de N bits com o seu
simétrico dá 2N como resultado, o que não é representável com N bits (apenas com N+1).
Ou seja, é o caso 5, exemplificado com 5 + (–5);
O estouro, no caso da soma, só ocorre somando-se dois números com o mesmo sinal (e o
sinal do resultado sendo diferente do sinal dos operandos). Se um for positivo e outro
negativo, não é possível ocorrer a situação de estouro;
Esta tabela também pode ser elaborada para as operações de multiplicação e divisão, com
algumas adaptações. Por limitações de espaço e por ser um tópico específico, a elaboração
destas tabelas é deixada como exercício para o leitor mais interessado.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 27 / 72
Conjunto de instruções
Instruções de desvio
Desvios Absolutos Relativos Condições Desvia se (após está instrução)ADD A, B CMP A, B
Incondicionais JMP Rs JMP k Nenhuma
Condicionais Não há
JZ (JEQ) k Z = 1 a + b = 0 a = b
JNZ (JNE) k Z = 0 a + b <> 0 a <> b
JN k N = 1 a + b < 0
JNN k N = 0 a 0 b > 0
JP k (N v Z) = 0 a 0 b > 0
JNP k (N v Z) = 1 a 0 b < 0
JC (JB) k C = 1 Der transporte a < b
JNC (JAE) k C = 0 Não der transporte a ≥ b
JV k V = 1 Der estouro
JNV k V = 0 Não der estouro
JLT k (N ⊕ V) = 1 a < b
JLE k ((N ⊕ V) v Z) = 1 a ≤ b
JGT k ((N ⊕ V) v Z) = 0 a > b
JGE k (N ⊕ V) = 0 a ≥ b
JA k (C v Z) = 0 a > b
JBE k (C v Z) = 1 a ≤ b
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 28 / 72
Conjunto de instruções
Instruções de desvio
O desvio pode ser classificado quanto à forma de determinação do endereço:
Absoluto – Se o PC for carregado com um valor de 16 bits (conteúdo de um registrador),
que especifica completamente o endereço para onde desviar, independentemente do
endereço que o PC continha anteriormente;
Relativo – Se o novo endereço for obtido somando-se uma constante k ao valor que o PC
tem. Considera-se que a constante k está em complemento de 2 e permite desviar para “a
frente” se k>0 e “para trás” se k<0.
E quanto à sua realização:
Incondicional – Se o desvio for sempre efetuado, independentemente de qualquer condição;
Condicional – Se o desvio só for efetuado se uma determinada condição for verdadeira.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 29 / 72
Conjunto de instruções
Instruções de transferência de dados
Uma instrução pode fazer transferência de dados entre os seguintes recursos:
Registradores;
Células de memória (em que se incluem os periféricos porque, do ponto de vista do
processador, são indistinguíveis);
Constantes (a contida na própria instrução, se for o caso).
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 30 / 72
Conjunto de instruções
Instruções de transferência de dados
Destino / Origem Descrição
Registrador/registrador Cópia de valores entre dois registradores
Registrador-constante Carregamento imediato de um registrador
Registrador-memória Leitura da memória
Memória-registrador Escrita na memória
Memória-constante Inicialização da memória com uma constante
Memória-memória Cópia entre células de memória
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 31 / 72
Conjunto de instruções
Instruções de transferência (reg - reg)
Endereço Instrução RTL R0 R1 R2 R3 TEMP
Estado inicial 1234H 5678H 9ABCH FFFFH 0000H
0000H MOV R0, R2 R0 ← R2 9ABCH 5678H 9ABCH FFFFH 0000H
0002H MOV R2, RI R2 ← R1 9ABCH 5678H 5678H FFFFH 0000H
0004H MOV R1, R0 R1 ← R0 9ABCH 9ABCH 5678H FFFFH 0000H
0006H SWAP R1, R3
TEMP ← R1
9ABCH FFFFH 5678H 9ABCH 9ABCHR1 ← R3
R3 ← TEMP
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 32 / 72
Conjunto de instruções
Instruções de transferência (reg-cons)
Assembly Exemplos Máquina RTL Efeitos
MOV Rd, k
-128 ≤ k ≤ +127
MOVL, Rd, k
Rd(7..0) ← k(7..0) Rd fica com uma cópia do valor da
constante (de 8 bits) estendida para 16
bits com seu bit de sinal, k(7). O valor
anterior de Rd é destruído
MOV R0,-128
MOV R3,0 Rd(15..8) ← k(7){8}MOV R6, +127
k ≤ -129 ou k ≥ +128 MOVL, Rd, k(7..0) Rd(7..0) ← k(7..0) Rd fica com uma cópia do valor da
constante (de 16 bits). O valor anterior
de Rd é destruído
MOV R7, -32768 Rd(15..8) ← k(7){8}
MOV R2, -1000
MOVH, Rd, k(15..8)
Rd(15..8) ← k(15..8)
MOV R5, +500
MOV R8, +32767
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 33 / 72
Conjunto de instruções
Instruções de transferência (reg-cons)
Em linguagem assembly, o programador usa sempre a instrução indicada acima, qualquer
que seja o valor da constante (dentro da faixa permitida pelos 16 bits);
O assembler analisa o valor da constante antes de gerar o código de máquina e separa
duas situações:
Para constantes no intervalo [-128 .. +127], ou seja, representáveis em 8 bits, gera apenas
uma instrução, com opcode MOVL, em que constante terá 8 bits e deverá estar em
complemento de 2;
Para constantes de valor maior (em módulo), não representáveis em 8 bits, ou seja, nos
intervalos [-32.768 .. -129] e [+128 .. +32.767], o assembler gera duas instruções, com
opcodes MOVL e MOVH, o que permite inicializar cada um dos dois bytes do registrador
destino.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 34 / 72
Conjunto de instruções
Instruções de transferência (reg-cons)
No caso de constantes entre –128 e +127, o assembler gera apenas uma instrução MOVL,
que não só coloca a constante (8 bits) no byte menos significativo do registrador, como
estende esses 8 bits para 16 mantendo o sinal;
No caso de constantes menores que –128 ou maiores que +127, o assembler gera primeiro
uma instrução MOVL, que coloca o byte menos significativo da constante no byte menos
significativo do registrador. Em seguida, gera uma instrução MOVH que coloca o byte
mais significativo da constante no byte mais significativo do registrador. Observe que o
sinal pode ficar incorreto após o MOVL, mas o MOVH acaba a operação corretamente.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 35 / 72
Conjunto de instruções
Instruções de transferência (reg-cons)
Decimal Binário Hexa 8 bits Hexa 16 bits Hexa 32 bits
0 0000 0000 00H 00 00H 00 00 00 00H
+1 0000 0001 01H 00 01H 00 00 00 01H
+64 0100 0000 40H 00 40H 00 00 00 40H
+ 127 0111 1111 7FH 00 7FH 00 00 00 7FH
-1 1111 1111 FFH FF FFH FF FF FF FFH
-2 1111 1110 FEH FF FEH FF FF FF FEH
-64 1100 0000 C0H FF C0H FF FF FF C0H
-128 1000 0000 80H FF 80H FF FF FF 80H
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 36 / 72
Conjunto de instruções
Instruções de transferência (reg-cons)
Assembly Constante Instruções Comentários
MOV R1,0 00 00H MOVL, R1, 00H
MOV R1,+1 00 01H MOVL, R1, 01H
MOV R1, +12700 7FH MOVL, R1, 7FH
MOV R1,+32767 7F FFH MOVL, R1, FFH MOVH, R1, 7FH Após o MOVL, R1 fica com
FFFFH (negativo)
MOV R1,-1 FF FFH MOVL, R1, FFH
MOV R1,-128 FF80H MOVL, R1, 80H
MOV R1,-32768 80 00H MOVL, R1, 00H MOVH, R1, 80H Após o MOVL, R1 fica com
0000H (positivo)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 37 / 72
Conjunto de instruções
Instruções de transferência (reg-mem)
A primeira forma permite acessar qualquer célula da memória, considerando o espaço de
endereçamento linear (sem usar qualquer estrutura de dados);
O índice constante acessa uma tabela (cuja base está no endereço contido em R1) em que
se conhece a função de cada elemento dentro da tabela e, portanto, se referencia
diretamente (neste exemplo, com o índice 6);
A última forma, com índice variável (registrador), permite a um programa percorrer a
tabela, efetuando algum processamento sobre cada elemento da tabela.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 38 / 72
Conjunto de instruções
Instruções de transferência (reg-mem)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 39 / 72
Conjunto de instruções
Instruções de transferência (reg-mem)
base EQU 1000H ; endereço de base (do 1o elemento) da tabela
tam EQU 8 ; tamanho da tabela (em elementos de 16 bits)
início: MOV R3, 0 ; inicializa soma
MOV R1, base ; inicializa registrador de base se da ta bela
MOV R2, tam ; número de elementos de 16 bits da tabela
SUB R2, 1 ; índice do último elemento (o 1o tem índice 0)
maisUm: MOV R4, R2 ; copia para não destruir o índice
ADD R4, R4 ; duplica para obter o índice em bytes
MOV R0, [R1 + R4] ; lê um elemento da memória (no endereço R1+R4)
ADD R3, R0 ; acumula o elemento na soma
SUB R2, 1 ; obtém índice (em bytes) do elemento anterior
JNN maisUm ; se for negativo, o índice era o último (0)
; senão, ainda há mais elementos
fim: JMP fim ; acabou. R3 contém a soma de todos os elementos
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 40 / 72
Conjunto de instruções
Instruções de transferência (reg-mem)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 41 / 72
Conjunto de instruções
Instruções de transferência (reg-mem)
Ficha Base da ficha Campo Valor Índice Endereço
1a 1000H
Número 3029 0 1000H
Ramal 207 2 1002H
Idade 34 4 1004H
Salário 1250 6 1006H
2a 1008H
Número 1978 0 1008H
Ramal 225 2 100AH
Idade 23 4 100CH
Salário 990 6 100EH
3a 1010H
Número 2389 0 1010H
Ramal 217 2 1012H
Idade 47 4 1014H
Salário 1650 6 1016H
4a 1018H
Número 1027 0 1018H
Ramal 234 2 101AH
Idade 58 4 101CH
Salário 2025 6 101EH
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 42 / 72
Conjunto de instruções
Instruções de transferência (reg-mem)
base EQU 1000H ; endereço de base da 1a ficha da tabela
numEmp EQU 4 ; número de empregados (e de fichas)
salário EQU 6 ; índice em bytes (dentro da ficha) do campo salário
idade EQU 4 ; índice em bytes (dentro da ficha) do campo idade
tam EQU 8 ; tamanho em bytes de cada ficha
início: MOV R3, 0 ; inicializa soma dos encargos salariais
MOV R1, base ; inicializa registrador de base da 1a ficha
MOV R2, numEmp ; número de fichas da tabela
MOV R4, tam ; número de bytes de cada ficha
maisUma: MOV R0, [R1+salário] ; lê o campo salário dessa ficha
ADD R3, R0 ; acumula o salário na soma
MOV R0, [R1+idade] ; lê o campo idade dessa ficha
ADD R3, R0 ; acumula o bônus (igual à idade) na soma
ADD R1, R4 ; obtém endereço (em bytes) de base da próxima ficha
SUB R2, 1 ; menos uma ficha para tratar
JNZ maisUma ; se R2 não for 0, ainda há mais fichas para tratar
fim: JMP fim ; acabou. R3 contém a soma de todos os encargos
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 43 / 72
Conjunto de instruções
Instruções de transferência (reg-mem 8 bits)
Assembly RTL Instruções Comentários
MOVB Rd, [Rs] Rd(7..0) ← Mb[Rs] LDB, Rd, Rs Leitura de um byte. 0 byte mais significativo
do registrador destino é colocado em 00HRd(15..8) ← 0{8}
MOVBS Rd, [Rs] Rd(7..0) ← Mb[Rs] LDB, Rd, Rs Leitura de um byte. O byte mais significativodo registrador destino é a extensão do sinal
do byte menos significativo
Rd(15..8) ← Rd(7){8}
MOVB [Rd], Rs Mb[Rd] ←Rs(7..0) STB, Rd, Rs Escrita na memória do byte mais significativo
do registrador Rs
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 44 / 72
Conjunto de instruções
Instruções de transferência (reg-mem 8 bits)
Em termos de conteúdo transferido, apenas são relevantes um byte da memória e o byte menos
significativo do registrador envolvido. Isto significa que:
Na leitura da memória, o byte menos significativo do registrador destino é colocado como
zero (MOVB) ou com a extensão do sinal do byte menos significativo (MOVBS);
Na escrita na memória:
O byte mais significativo do registrador origem é irrelevante;
Apenas se altera o byte no endereço especificado.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 45 / 72
Conjunto de instruções
Instruções de transferência (reg-mem 8 bits)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 46 / 72
Conjunto de instruções
Instruções de transferência (reg-mem 8 bits)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 47 / 72
Conjunto de instruções
Instruções de transferência (reg-mem 8 bits)
origem EQU 1000H ; endereço do primeiro caractere da cadeia original
destino EQU 2400H ; endereço do primeiro caractere da cadeia destino
terminador EQU 00H ; valor do byte que indica o fim da cadeia original
diferença EQU 20H ; valor da diferença entre minúsculas e maiúsculas
início: MOV R1, origem ; ponteiro para o primeiro caractere origem
MOV R2, destino ; ponteiro para o primeiro caractere destino
MOV R3, diferença ; coloca diferença num registrador (usado na; instrução SUB)
maisUm: MOVB R0, [R1] ; obtém o próximo caractere (acesso de 8 bits)
CMP R0, terminador ; verifica se já é o byte terminador
JZ acaba ; se sim, vai acabar
SUB R0, R3 ; converte letra para maiúscula
MOVB [R2], R0 ; guarda caractere na área de memória destino
ADD R1, 1 ; endereço (em bytes) do próximo caractere origem
ADD R2, 1 ; endereço (em bytes) do próximo caractere destino
JMP maisUm ; ainda há mais caracteres para tratar
acaba: MOVB [R2], R0 ; guarda terminador na área de memória destino
fim: JMP fim ; acabou
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 48 / 72
Conjunto de instruções
Instruções de transferência (reg-mem 8 e 16 bits)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 49 / 72
Conjunto de instruções
Instruções de transferência (reg-mem 8 e 16 bits)
origem EQU 1000H ; endereço do primeiro caractere da cadeia original
destino EQU 2400H ; endereço do primeiro caractere da cadeia destino
terminador EQU 00H ; valor do byte que indica o fim da cadeia original
diferença EQU 20H ; valor da diferença entre minúsculas e maiúsculas
início: MOV R1, origem ; ponteiro para o primeiro caractere origem
MOV R2, destino ; ponteiro para o primeiro caractere destino
MOV R3, diferença ; coloca diferença em um registrador (usado no SUB abaixo)
maisUm: MOVB R0, [R1] ; busca o próximo caractere (acesso de 8 bits)
CMP R0, terminador ; verifica se já é o byte terminador
JZ acaba ; se sim, vai acabar
SUB R0, R3 ; converte letra para maiúscula
MOV [R2], R0 ; guarda caractere na área da memória destino (16 bits)
ADD R1, 1 ; endereço (em bytes) do próximo caractere origem
ADD R2, 2 ; endereço (em bytes) do próximo caractere destino
JMP maisUm ; ainda há mais caracteres para tratar
acaba: MOV [R2], R0 ; guarda terminadorna memória destino (16 bits)
fim: JMP fim ; acabou
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 50 / 72
Conjunto de instruções
Instruções aritméticas
Assembly Exemplo Efeito
ADD Rd, Rs ADD R0, RI Rd fica com a soma do valor anterior de Rd com o valor de Rs
ADD Rd, k ADD R0, 1 Rd fica com a soma do valor anterior de Rd com o valor de k, que tem de estar
entre -8 e +7
ADDC Rd, Rs ADDC R0, RI Rd fica com a soma do valor anterior de Rd com o valor de Rs e ainda com mais
uma unidade (se c=l)
SUB Rd, Rs SUB R0, RI Rd fica com o valor anterior de Rd menos o valor de Rs
SUB Rd, k SUB R0, 4 Rd fica com o valor anterior de Rd menos o valor de k, que tem de estar entre
-8 e +7
SUBB Rd, Rs SUBB R0, RI Rd fica com o valor anterior de Rd menos o valor de Rs e ainda com menos uma
unidade (se c=l)
CMP Rd, Rs CMP R0, RI Subtrai Rs de Rd e afeta apenas os bits de estado (não memoriza o resultado)
CMP Rd, k CMP R0, 4 Subtrai k de Rd e afeta apenas os bits de estado (não memoriza o resultado). O
valor de k tem de estar entre -8 e +7
NEG Rd NEG R3 Substitui Rd pelo seu simétrico (complemento de 2)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 51 / 72
Conjunto de instruções
Instruções aritméticas (série de Fibonacci)
; R1 – último valor da série até um determinado momento
; R2 – penúltimo valor da série até é um determinado momento
; R3 – endereço de memória onde os elementos (de 16 bits) são escritos
; R4 – contador de elementos da série
base EQU 1000H ; endereço onde começar a colocar a série
início: MOV R3, base ; inicializa ponteiro para o primeiro elemento
MOV R2, 1 ; inicializa primeiro elemento da série
MOV R1, 1 ; inicializa segundo elemento da série
MOV [R3], R2 ; armazena primeiro elemento da série
ADD R3, 2 ; endereço para o segundo elemento (2 bytes depois)
MOV [R3], R1 ; armazena segundo elemento da série
MOV R4, 2 ; já foram armazenados 2 elementos
maisUm: ADD R2, R1 ; soma os dois últimos elementos
JV fim ; se houve estouro, a série tem de acabar aqui
ADD R3, 2 ; endereço para o próximo elemento (2 bytes depois)
MOV [R3], R2 ; armazena mais este elemento da série
ADD R4, 1 ; contabiliza mais este elemento
SWAP R1, R2 ; troca os papéis de R1 e R2, para que R1 volte a
; ser o último valor da série e R2 o penúltimo
JMP maisUm ; ainda há mais elementos para gerar
fim: JMP fim ; acabou. Na memória estão todos os elementos
; gerados, e R4 indica quantos são
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 52 / 72
Conjunto de instruções
Instruções aritméticas (mult e div)
Assembly Exemplo RTL Efeito
MUL Rd, Rs MUL R0, RI Rd ← Rd * Rs Rd fica com o produto do valor anterior de Rd
com o valor de Rs. 0 resultado continua a ter 16
bits
DIV Rd, Rs DIV R0, RI Rd ← quociente(Rd/Rs) Rd fica com o quociente da divisão inteira de Rd
por Rs. A divisão por zero é um erro
MOD Rd, Rs MOD R0, RI Rd ← resto(Rd/Rs) Rd fica com o resto da divisão inteira de Rd por
Rs. A divisão por zero é um erro
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 53 / 72
Conjunto de instruções
Instruções aritméticas (mult e div)
; R1 – produto dos vários fatores (valor do fatorial no fim)
; R2 – fator auxiliar que começa com N-1, depois N-2 etc., até ser 2
; (1 já não vale a pena)
N EQU 6 ; número de que se pretende calcular o fatorial
início: MOV R1, N ; valor inicial do produto
MOV R2, R1 ; valor auxiliar
maisUm: SUB R2, 1 ; decrementa fator
MUL R1, R2 ; acumula produto de fatores
JV erro ; se houve estouro, o fatorial tem de acabar aqui
CMP R2, 2 ; verifica se o fator ator já chegou a 2
JGT maisUm ; se ainda é maior do que 2, é preciso continuar
fim: JMP fim ; acabou. Em R1 está o valor do fatorial
erro: JMP erro ; termina com erro
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 54 / 72
Conjunto de instruções
Instruções lógicas
Assembly Exemplo RTL Bits de estado Efeito
AND Rd, Rs AND, Rd, Rs Rd ← Rd ∧ Rs Z, N Conjunção (E) bit a bit de Rd e Rs.
Rd(i) só será l, se Rd(i) =1 E Rs (i)
=1
OR Rd, Rs OR, Rd, Rs Rd ← Rd v Rs Z,N Disjunção (OU) bit a bit de Rd e Rs.
Rd(i) será l, se Rd(i)=1 OU Rs(i)=1
XOR Rd, Rs XOR, Rd, Rs Rd ← Rd ⊕ Rs Z, N Disjunção exclusiva (OU-exclusivo)
bit a bit de Rd e Rs. Rd(i) será 1,
apenas se Rd(i) for diferente de Rs
(i) (01 ou 10)
NOT Rd NOT, Rd, 0 Rd ← Rd ⊕ FFFFH Z,N Complementa (troca) todos os bits
de Rd (negação bit a bit)
TEST Rd, Rs TEST, Rd, Rs Rd ∧ Rs Z, N Faz a conjunção bit a bit de Rd e Rs,
tal como o AND, mas afeta apenas
os bits de estado (Rd não é alterado)
BIT Rd, k BIT, Rd, k Z ← Rd(k) ⊕ 1 z Coloca no bit z a negação do bit
Rd(k). Rd não é alterado
SET Rd, k SET, Rd, k Rd(k) ← 1 Z, N Coloca 1 no bit k de Rd
CLR Rd, k CLR, Rd, k Rd(k) ← 0 Z, N Coloca 1 no bit k de Rd
CPL Rd, k CPL, Rd, k Rd(k) ← Rd(k) ⊕ 1 Z,N Complementa (troca) o bit k de Rd
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 55 / 72
Conjunto de instruções
Instruções lógicas
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 56 / 72
Conjunto de instruções
Instruções lógicas
Assim, estas instruções têm na realidade uma dupla função:
Implementar expressões booleanas, com valores falso e verdadeiro. Para tal usa-se apenas
um bit de cada operando (tipicamente o menos significativo) ou adota-se a convenção de
que um valor 0 representa falso e que um valor diferente de zero representa verdadeiro
(como na linguagem C, por exemplo);
Manipular determinados bits do operando, usando a funcionalidade lógica destas
instruções para cada um dos bits individualmente, em dois tipos básicos de operações:
Alterar determinados bits de um operando para um valor fixo (0 ou 1), independentemente
do valor que esses bits tinham antes;
Isolar determinados bits de um operando, mantendo o valor desses bits e forçando os
restantes a um valor fixo (tipicamente 0), através de um outro operando designado máscara
(precisamente porque força alguns bits e só mantém o valor de outros).
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 57 / 72
Conjunto de instruções
Instruções lógicas (1 só bit)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 58 / 72
Conjunto de instruções
Instruções lógicas (1 só bit)
; utilização dos registadores:
; R2 – 2o operando a testar
; (1 já não vale a pena)
; R3 – endereço na memória do 1o operando (o 2o está logo a seguir)
início: MOV R3, 0000H ; inicializa R3 no início da memória
maisUm: MOV R1, [R3] ; obtém 1o operando
TEST R1, R1 ; atualiza os bits de estado
JZ próximo ; se é falso (zero), pode passar ao próximo
MOV R2, [R3 + 2] ; obtém 2o operando
TEST R2, R2 ; atualiza os bits de estado
JNZ achou ; se chegou aqui e R2 é verdadeiro, então R1 e R2
; são verdadeiros e achou o par pretendido
próximo: ADD R3, 2 ; tem de continuar. Avança base da memória
JMP maisUm ; vai testar mais um par de operandos
achou: JMP achou ; achou! Para aqui
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 59 / 72
Conjunto de instruções
Instruções lógicas (1 só bit)
Binário Hexa Letra Letra Hexa Binário
0100 0001 41H ’A’ ’a’ 61H 0110 0001
0100 0010 42H ’B’ ’b’ 62H 0110 0010
. . . . . . . . . . . . . . . . . .
0100 1110 4EH ’N’ ’n’ 6EH 0110 1110
0100 1111 4FH ’O’ ’o’ 6FH 0110 1111
0101 0000 50H ’P’ ’p’ 70H 0111 0000
0101 0001 51H ’Q’ ’q’ 71H 0111 0001
. . . . . . . . . . . . . . . . . .
0101 1001 59H ’Y’ ’y’ 79H 0111 1001
0101 1010 5AH ’Z’ ’z 7AH 0111 1010
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 60 / 72
Conjunto de instruções
Instruções lógicas (máscaras)
Prof. Tiago Almeida (UFT) Arquitetura básica de umcomputador Período: 2019/02 61 / 72
Conjunto de instruções
Instruções lógicas (1 só bit)
Operação Bit neutro Bit ativo Efeito do bit ativo
AND, TEST 1 0 Força a ser 0
0R 0 1 Força a ser 1
XOR 0 1 Nega o bit (troca valor)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 62 / 72
Conjunto de instruções
Instruções de deslocamento
Enviar os bits do operando em sequência, um a um, através de uma ligação de um só bit
(usado em redes de computadores);
Analisar os bits de um operando, um a um (contar o número de bits com 1, por exemplo);
Máscaras que por deslocamento vão variando ao longo do programa, permitindo ir
analisando diferentes partes de um determinado operando;
Isolar um grupo de bits do operando (por meio de uma máscara com AND, por exemplo) e
mudá-los de posição (para ocuparem os bits menos significativos, por exemplo).
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 63 / 72
Conjunto de instruções
Instruções de deslocamento
Trata-se de instruções que tipicamente são suportadas por todos os processadores e que podem
ser divididas em dois grupos:
Deslocamentos lineares, ou simples;
Deslocamentos circulares, ou rotações.
Em qualquer deles, o deslocamento pode ser para a:
Esquerda (na direção do bit mais significativo), ou
Direita (na direção do bit menos significativo).
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 64 / 72
Conjunto de instruções
Instruções de deslocamento (linear)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 65 / 72
Conjunto de instruções
Instruções de deslocamento (linear)
Um bit sai, sendo transferido para o bit de estado C. Um bit entra, podendo ser 0 ou 1, de
acordo com o tipo de instrução de deslocamento, que pode ser de dois tipos:
Lógico (SHL, SHR) – Consideram o operando como uma simples sequência de bits,
entrando sempre um 0 pelo lado oposto ao do bit que saiu;
Aritmético (SHRA, SHLA) – Consideram o operando como um número inteiro
representado em complemento de 2, de tal modo que um deslocamento de um bit para a
esquerda ou para a direita equivale a multiplicar ou dividir, respectivamente, o operando
por 2, mantendo o sinal no processo. No deslocamento para a direita (SHRA), o bit que
entra do lado esquerdo é igual ao bit que já estava lá (mantém o sinal). O deslocamento
para a esquerda (SHLA) pode dar origem a um estouro, se o bit que sair (para o bit C) for
diferente do bit que ficar na posição mais significativa do registrador após o deslocamento
(isto é, um número positivo passar a negativo ou vice-versa), sendo esta a única diferença
em relação à instrução SHL.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 66 / 72
Conjunto de instruções
Instruções de deslocamento (linear)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 67 / 72
Conjunto de instruções
Instruções de deslocamento (linear)
valor EQU 6AC5H ; valor cujos bits com 1 vão o ser contados
início: MOV R1, valor ; inicializa registrador com o valor a analisar
MOV R2, 0 ; inicializa contador de número de bits com 1
MOV R3, 0 ; valor 0 auxiliar
maisUm: CMP R1, 0 ; isto é só para atualizar os bits de estado
JZ fim ; se o valor já é zero, não há mais bits com 1 para contar
SHR R1, 1 ; retira o bit menos significativo do valor e coloca-o no bit C
ADDC R2, R3 ; soma mais 1 ao contador, mas só se o bit for 1 (R3=0)
JMP maisUm ; vai analisar o próximo bit
fim: JMP fim ; acabou. R2 tem o número de bits com 1 no valor inicial
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 68 / 72
Conjunto de instruções
Instruções de deslocamento (circular)
A rotação tem duas variantes em relação ao comportamento do bit de estado C:
Sem transporte – O bit C é atualizado com o bit que sai, mas não interfere na rotação;
Com transporte – O bit C participa ele próprio na rotação. Os bits do registrador passam
pelo bit C antes de voltarem a entrar no registrador. É como se o registrador rodado
tivesse mais um bit.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 69 / 72
Conjunto de instruções
Instruções de deslocamento (circular)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 70 / 72
Conjunto de instruções
Instruções de deslocamento (circular)
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 71 / 72
Referências
Referências
1 HENNESSY, John L.; PATTERSON, David A.. Organização e Projeto de Computadores.
5. ed. Rio de Janeiro: Elsevier, 2017. 494 p.
2 DELGADO, J.; RIBEIRO, C. Arquitetura de Computadores: São Paulo: LTC, 2017. 568 p.
Prof. Tiago Almeida (UFT) Arquitetura básica de um computador Período: 2019/02 72 / 72
	Banco de registradores
	Codificação das instruções
	Conjunto de instruções
	Referências

Continue navegando