Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sistemas de Computao I
Centro de Cincias Computacionais C3 - FURG
A memria organizada em clulas de 8 bits (1 byte). Cada clula identificado por um cdigo composto por 16 bits - o endereo da clula,
geralmente representado na base hexadecimal, valor entre 0000 e FFFF. pode enderear 65.536 bytes de memria, compostas de memria ROM e memria de leitura / escrita
Cdigo de Operao identifica o modo de endereamento atravs de seu mnemnico e do correspondente cdigo binrio. Os registradores envolvidos em instrues que usam os modos de endereamento direto por registrador e indireto por registrador so definidos atravs de determinados bits no opcode.
MODOS DE ENDEREAMENTO
A funo da instruo traz implcito o endereamento. No h operando. Ocupam apenas 1 byte, sendo buscadas em apenas 1 acesso memria.
STC (set carry flag) - "seta" o bit de carry e CMC (complement carry) - complementa o valor do bit de carry; - o operando implcito o carry flag. RAL (rotate accumulator left), RAR (rotate accumulator right) - instrues de deslocamento de bits, esquerda e direita - o operando implcito o acumulador; RLC (rotate accumulator left through carry) e RRC (rotate accumulator right through carry) - instrues de deslocamento de bits, esquerda e direita, atravs do carry flag - os operandos implcitos so o acumulador e o carry flag; DAA (decimal adjust accumulator) - instruo para aritmtica em BCD - o operando implcito o acumulador (usa tambm o flag AC - auxiliary carry).
Modo Imediato
Vantagem
operando obtido durante o ciclo de busca, em apenas 1 acesso (quando o operando de apenas 1 byte, tal como um dado de 8 bits) ou em 2 acessos (quando o operando de 2 bytes, tal como um dado de 16 bits ou um endereo). No necessrio fazer nenhum acesso MP no ciclo de execuo, o que acarreta maior rapidez na execuo.
Obs.: Algumas instrues no modo imediato (geralmente instrues que manipulam endereos de memria) buscam endereos ou dados de 2 bytes.
Modo Imediato
Desvantagens O tamanho do dado fica limitado ao nmero de bits do operando (campo operando da instruo).
o campo Operando tem 8 bits, portanto o maior valor deste campo ser limitado a 28 = 256.
no permite flexibilidade para alterar dados que variam a cada execuo do programa, portanto no adequado para variveis repetidamente operadas com diferentes valores a cada execuo do programa.
Modo Imediato
Utilizao Inicializao de contadores Constantes Armazenamento de ponteiros em registradores Indicao de quantidade de posies em operaes de deslocamento de bits (multiplicao e diviso)
Valor (hexadecimal) do cdigo da operao: C6 N de Bytes ocupados pela instruo: 2 bytes Ciclos de acesso da instruo: 2 (leitura)
N 1 2 Descrio Busca do Opcode Busca do Operando Acesso Ciclo Leitura Busca Leitura Busca
Ex.: Considerando o acumulador contendo inicialmente o valor 7AH, qual ser o valor do acumulador aps a execuo da instruo ADI dado (add immediate) ==> ACC <--- ACC + Op (soma o valor hexadecimal do operando ao acumulador)
Valor (hexadecimal) do cdigo da operao: C3 N de Bytes ocupados pela instruo: 3 bytes Ciclos de acesso da instruo: 3 (leitura)
N 1 2 3 Descrio Busca do Opcode Busca do 1 byte do Operando Busca do 2 byte do Operando Acesso Leitura Leitura Leitura Ciclo Busca Busca Busca
Obs.Importante: O byte menos significativo do operando armazenado na posio de memria que segue o opcode e o byte mais significativo do operando na segunda posio de memria que segue o opcode. JMP 1000H ==> CI<--- 1000H ==> causa um desvio para o endereo 1000 (hexadecimal)
Exemplo 3 - Instruo de Desvio Conditional Jcondition endereo ==> if CCC, PC <--- endereo
Se a condio estabelecida for satisfeita, copia o operando (bytes 2 e 3 da instruo) para o PC.
Valor (hexadecimal) do cdigo da operao: depende da condio N de Bytes ocupados pela instruo: 3 bytes Ciclos de acesso da instruo: 3 (leitura)
N 1 2 3 Descrio Acesso Ciclo Busca do Opcode Leitura Busca Busca do 1 byte do Operando Leitura Busca Busca do 2 byte do Operando Leitura Busca
CONDIO NZ - no zero (Z=0) Z - zero (Z=1) NC - no carry (C=0) C - carry (C=1) PO - paridade par (P=0) PE - paridade mpar (P=1) P - positivo (P=0) M - negativo (P=1)
Examplo 4 - Instruo Move Imediato MVI R, dado (move immediate) ==> R <--- Op
Move o valor do operando para o registrador R
Valor (hexadecimal) do cdigo da operao: depende do registrador N de Bytes ocupados pela instruo: 2 bytes Ciclos de acesso da instruo: 2 (leitura)
N 1 2 Descrio Busca do Opcode Busca do Operando Acesso Leitura Leitura Ciclo Busca Busca
Exemplo 5 - Instruo LXI LXI data16 (load register pair immediate) ==> RP <--- Op
Carrega o valor do operando (dois bytes) em um par de registradores, sendo que o byte 3 carregado em Rhigh (byte mais significativo do par de registradores de destino) e o byte 2 carregado em Rlow (byte menos significativo).
Valor (hexadecimal) do cdigo da operao: depende do registrador N de Bytes ocupados pela instruo: 3 bytes Ciclos de acesso da instruo: 3 (leitura).
N 1 2 3 Descrio Busca do Opcode Busca do 1 byte do Operando Busca do 2 byte do Operando Acesso Leitura Leitura Leitura Ciclo Busca Busca Busca
Endereamento: imediato
LXI M, 31FFH ==> M <--- 31FF (carrega o valor hexadecimal 31FF no Par de Registradores HL)
Observaes
No Intel 8080, as instrues com endereamento imediato so quase sempre codificadas com mnemnicos de 3 letras terminados pela letra I. Exemplos
instruo de soma ==> endereamento direto = ADD instruo de soma ==> endereamento imediato = ADI; instruo move ==> endereamento direto = MOV instruo move ==> endereamento imediato = MVI; instruo load ==> endereamento direto = LDA instruo load ==> endereamento direto = LDI
Observaes 2
No Intel 8080, quase todas as instrues imediatas usam o acumulador como operador implcito. As excees so: MVI (move immediate) - pode mover o dado para qualquer registrador de trabalho ou posio de memria; LXI (load register pair immediate) - move um dado de 16 bits (geralmente um endereo) para qualquer par de registradores.
Vantagens
Requer apenas uma referncia memria para busca do dado (alm de uma para a busca da instruo), sendo mais rpido que o modo indireto. Limitao do endereo da MP que pode ser indicado pelo tamanho do campo operando. mais lento que o modo imediato.
Desvantagens
Utillizao
Exemplo 1 - Instruo LDA LDA endereo (load accumulator direct) ==> ACC <--- (Op)
Carrega o contedo da posio de memria indicada pelo operando (bytes 2 e 3 da instruo) no acumulador (o operando indica um endereo na memria).
Valor (hexadecimal) do cdigo da operao: 3A N de Bytes ocupados pela instruo: 3 bytes Ciclos de acesso da instruo: 4 (leitura)
N 1 2 3 4 Descrio Busca do Opcode Busca do 1 byte do Operando Busca do 2 byte do Operando Busca do Dado Acesso Leitura Leitura Leitura Leitura Ciclo Busca Busca Busca Execuo
LDA 978A ===> ACC <--- (978A) = carrega no acumulador o contedo da posio de memria 978A
Exemplo 2 - Instruo LHLD LHLD endereo ==> (load H and L direct) H <--- (Op + 1)
L <--- (Op)
O contedo da posio de memria indicada pelo operando carregado no registrador L; o contedo da posio de memria seguinte indicada pelo operando carregado no registrador H.
Valor (hexadecimal) do cdigo da operao: 2A N de Bytes ocupados pela instruo: 3 bytes Ciclos de acesso da instruo: 5 (leitura)
N Descrio 1 Busca do Opcode 2 Busca do 1 byte do Operando 3 Busca do 2 byte do Operando 4 Busca do 1 byte do dado (endereo) 5 Busca do 2 byte do dado (endereo) Endereamento: direto Flags setados: nenhum Acesso Leitura Leitura Leitura Leitura Leitura Ciclo Busca Busca Busca Execuo Execuo
LHLD 1000H ==> L <--- (1000H) e H <--- (1001H) ===> carrega o contedo das posies 1000H e 1001H no par HL (ver ilustrao abaixo).
Exemplo 3 - Instruo SHLD SHLD endereo ==> (store H and L direct) (Op) <--- L (Op + 1) <--- H Valor (hexadecimal) do cdigo da operao: 22 N de Bytes ocupados pela instruo: 3 bytes Ciclos de acesso da instruo: 5, sendo 3 (leitura) e 2 (escrita)
N Descrio 1 Busca do Opcode 2 Busca do 1 byte do Operando 3 Busca do 2 byte do Operando 4 Grava o 1 byte do dado no endereo 5 Grava o 2 byte do dado no endereo Endereamento: direto Flags setados: nenhum Acesso Leitura Leitura Leitura Escrita Escrita Ciclo Busca Busca Busca Execuo Execuo
SHLD 7AC1H ==> (7AC1) <--- L e (7AC2) <--- H ===> move o contedo do Registrador L para a posio de memria indicada pelo operando e o contedo do Registrador H para a posio de memria seguinte
Vantagens
Maior velocidade / rapidez de execuo -. Economia de espao de armazenamento de instruo No so adequados para transferncia de variveis da MP para ULA. Pequeno nmero de registradores
Desvantagem
Utilizao
Implementao de contadores. Identificao do registrador envolvido na operao faz parte do prprio opcode.
SSS representa o "Registrador de Origem" DDD o "Registrador de Destino RP representa "Par de Registradores".
SSS ou DDD ACC (ou A) B C D E H L Valor 111 000 001 010 011 100 101 RP B D H (ou M) SP Valor 00 01 10 11
Valor (hexadecimal) do cdigo da operao: depende do Registrador N de Bytes ocupados pela instruo: 1 byte Ciclos de acesso da instruo: 1 (leitura)
N 1 Descrio Busca do Opcode Acesso Leitura Ciclo Busca
Exemplo 3 - Instruo MOV R1, R2 MOV r1, r2 ("move register") ==> r1 <--- r2
O contedo do registrador r2 copiado para o registrador r1 .
Valor (hexadecimal) do cdigo da operao: depende dos Registradores envolvidos N de Bytes ocupados pela instruo: 1 byte Ciclos de acesso da instruo: 1 (leitura)
N 1 Descrio Busca do Opcode Acesso Ciclo Leitura Busca
Valor (hexadecimal) do cdigo da operao: 86 N de Bytes ocupados pela instruo: 1 byte Ciclos de acesso da instruo: 2 (leitura)
N 1 2 Descrio Acesso Ciclo Busca do Opcode Leitura Busca Busca o dado no endereo (HL) Leitura Execuo
Exemplo 2 Instruo INR M INR M (increment memory) ==> (HL) <--- (HL) + 1 Incrementa o contedo da posio de memria indicada pelo par de registradores HL Valor (hexadecimal) do cdigo da operao: 34 N de Bytes ocupados pela instruo: 1 byte Ciclos de acesso da instruo: 3 (sendo 2 de leitura e 1 de escrita)
N 1 2 3 Descrio Busca do Opcode Busca o dado no endereo (HL) Grava o resultado - dado + 1 - em (HL) Acesso Leitura Leitura Escrita Ciclo Busca Execuo Execuo
Valor (hexadecimal) do cdigo da operao: depende do registrador envolvido N de Bytes ocupados pela instruo: 1 byte Ciclos de acesso da instruo: 2 (sendo 1 de leitura e 1 de escrita)
N 1 2 Descrio Acesso Ciclo Busca do Opcode Leitura Busca Grava o dado no endereo (HL) Escrita Execuo
Algumas instrues usam uma combinao de modos de endereamento. Por exemplo, a instruo CALL usa uma combinao do endereamento direto (ou imediato) com endereamento por registrador indireto. endereamento direto - especifica o endereo da sub-rotina desejada endereamento por registrador indireto - o Ponteiro da Pilha
(SP - 1) <--- PCH ==> o valor contido no byte de mais alta ordem do Program Counter (modo de endereamento: registrador direto) transferido para o endereo de memria igual ao valor contido no (Registrador SP) menos 1 (modo de endereamento: registrador indireto) (SP - 2) <--- PCL ==> o valor contido no byte de mais baixa ordem do Program Counter (modo de endereamento: registrador direto) transferido para o endereo de memria igual ao valor contido no (Registrador SP) menos 2 (modo de endereamento: registrador indireto) ;
SP <--- SP - 2 ==> o valor contido no Registrador SP decrementado de 2 unidades (modo de endereamento: implcito/imediato); PC <--- endereo ==> o valor do operando (bytes 2 e 3 da instruo) (modo de endereamento: imediato) transferido para o Program Counter (modo de endereamento: registrador direto).
A instruo CALL copia (push) o contedo corrente do CI para a posio da MP especificada pelo ponteiro da pilha (Stack Pointer) e transfere o controle do programa para a instruo cujo cdigo de operao est armazenado na posio de memria apontada pelo operando. Valor (hexadecimal) do cdigo da operao: CD N de Bytes ocupados pela instruo: 3 bytes Ciclos de acesso da instruo: 5 (sendo 3 de leitura e 2 de escrita) A instruo CALL requer 5 acessos memria, sendo 3 para buscar a instruo (opcode mais operando de 2 bytes) e mais 2 para salvar ("push") o contedo (2 bytes) do PC (Program Counter) para o ponteiro da pilha (Stack Pointer).
N Descrio Acesso Ciclo 1 Busca do Opcode Leitura Busca 2 Busca do 1 byte do Operando Leitura Busca 3 Busca do 2 byte do Operando Leitura Busca 4 Grava o byte de menor ordem do endereo da prxima instruo (contido no PCL) no endereo indicado por SP - 1 Escrita Execuo 5 Grava o byte de maior ordem do endereo da prxima instruo (contido no PCH) no endereo indicado por SP - 2 Escrita Execuo
Modos de Endereamento: implcito / imediato / registrador direto / registrador indireto Flags setados: nenhum