Escolar Documentos
Profissional Documentos
Cultura Documentos
TEORIA E PRTICA
NDICE
1 - DEFINIES BSICAS............................................................................................................................... 8
1.1 - INTRODUO .......................................................................................................................................... 8
1.2 - MICROPROCESSADOR, MICROCOMPUTADOR E TERMOS ASSOCIADOS ..................................... 8
1.3 - CONCEITO DE PROGRAMA ARMAZENADO......................................................................................... 9
1.4 - PALAVRAS DO COMPUTADOR .............................................................................................................. 9
1.5 - COMPRIMENTO DA PALAVRA ............................................................................................................... 9
1.6 - MICROCOMPUTADOR ELEMENTAR ................................................................................................... 10
1.7 - SEQNCIA BUSCA - EXECUO ...................................................................................................... 11
1.8 - UM MODELO DE PROGRAMA .............................................................................................................. 12
1 - DEFINIES BSICAS
1.1 - INTRODUO
Um microprocessador um circuito eletrnico muito complexo composto de milhares de transistores
microscpicos encapsulados num nico circuito integrado.
Os milhares de transistores que compem o microprocessador so arranjados para formar muitos circuitos
diferentes dentro do chip. Entre estes circuitos podem-se destacar registradores, decodificadores,
contadores, unidades lgicas e aritmticas, geradores de sinais de controle e sincronismo etc.
Na figura anterior, o microcomputador est dentro da linha tracejada, sendo que a parte fora da linha
tracejada denominada mundo exterior, e todos microcomputadores devem ter meios de comunicao
DATAPOOL ELETRNICA 8
MICROPROCESSADOR Z-80
com ele. A informao recebida pelo microcomputador do mundo exterior chamada dado de entrada e a
informao transmitida para o mundo exterior pelo microcomputador chamada dado de sada.
As informaes de entrada podem vir de dispositivos tais como chaves mecnicas, leitoras de fita, teclado,
outros computadores, etc.
As informaes de sada podem ser enviadas a vdeo displays, perfuradoras de papel, impressoras etc.
Alguns dispositivos como teletipos podem servir tanto como entrada ou como sada. Estes dispositivos so
referidos como input/output (I/O) ou dispositivos de entrada/sada. O ponto no qual o dispositivo I/O
conectado ao microprocessador chamado porta I/O.
Apesar de toda sua capacidade, o microcomputador no faz nada por conta prpria. Ele faz somente o que
mandado fazer, nada mais e nada menos. Deve-se especificar exatamente o que se deseja realizar. As
operaes a serem executadas so chamadas instrues. Algumas instrues tpicas so: Soma,
Subtrao, Halt (parada), etc.
Um grupo de instrues que permite executar um trabalho especfico chamado programa. Para fazer
manuteno de equipamentos baseados em microprocessador necessrio conhecer programao. Em
geral o tamanho do programa proporcional a complexidade da tarefa que o microcomputador deve
executar. Alguns programas exigem poucas instrues, outros podem exigir milhares de instrues.
Os projetistas de computador concluram que o operador humano tornava o processo de computao lento,
e para contornar isto, foi desenvolvido o conceito de programa armazenado. Com tal sistema o programa
guardado na memria do computador antes do incio da execuo. As instrues so buscadas na memria
e executadas automaticamente e em seqncia num tempo muito pequeno da ordem de milisegundos ou
menos. Compare-se este tempo com o tempo que seria necessrio para o computador executar todo
programa se a entrada de cada instruo e dado fosse realizado manualmente. Esta operao automtica
que aumenta o poder do computador.
O tamanho de palavra mais comum para microprocessadores 8 bits. Nestes microprocessadores uma
palavra de 8 bits denominada 1 byte. as instrues, os endereos, os nmeros e dados so representados
por nmeros binrios de 8 bits. O menor nmero binrio de 8 bits 0000 0000 ou hexa 00, e o maior
nmero binrio de 8 bits 1111 1111 ou hexa FF, o que corresponde em decimal a 0 e 255,
respectivamente. Ento um nmero binrio de 8 bits pode ter 256 valores diferentes.
Uma palavra de 8 bits pode especificar nmeros positivos entre 0 e 255, ou, se a palavra de 8 bits for uma
instruo pode especificar qualquer uma das 256 operaes possveis. tambm possvel que a palavra de
8 bits seja um caractere ASCII. Neste caso ela pode representar letras do alfabeto, nmeros, pontuao, ou
marcas.
DATAPOOL ELETRNICA 9
MICROPROCESSADOR Z-80
Palavras maiores permitem-nos trabalhar com nmeros maiores. Por exemplo, com uma palavra de 16 bits
pode-se representar nmeros decimais at 65535. Contudo este aumento de capacidade implica em
aumento do custo e da complexidade do microprocessador.
Deve ser frisado que apesar de usar palavras de 8 bits no significa que o microprocessador deva ficar
restrito a nmeros decimais abaixo de 256. Simplesmente significa que se deve usar duas ou mais palavras
para representar nmeros maiores.
Ento um BYTE um grupo de 8 bits manuseado como uma unidade. No microprocessador de 8 bits cada
palavra consiste de um byte, nas mquinas de 16 bits cada palavra consiste de 2 bytes e nas mquinas de
4 bits cada palavra consiste de meio byte ou um NYBLE.
A figura a seguir, mostra tambm como os bits que compe a palavra do computador so numerados. O bit
menos significativo (LSB) est direita enquanto o bit mais significativo (MSB) est esquerda.
O microprocessador pode ter uma dzia ou mais de registros com tamanho varivel e 1 at 16 bits. O
microprocessador tem diversas instrues, algumas das quais podem ser executadas de diversos modos
diferentes. Alm disso o microcomputador tem os barramento de dados (data), endereo (address) e
controle (control).
A melhor maneira de se entender um microcomputador iniciar com a verso em blocos mostrada na figura
a seguir.
O microcomputador na figura a seguir uma verso simplificada de um produto real, porm desse modo
fica fcil de se entender rapidamente o funcionamento do mesmo.
DATAPOOL ELETRNICA 10
MICROPROCESSADOR Z-80
Na figura, o diagrama bsico mostra o microprocessador, a memria e o circuito I/O. Por simplicidade
vamos ignorar o circuito I/O por hora. Pode-se fazer isto supondo-se que o programa e dados j esto na
memria e que os resultados de quaisquer operaes sero mantidos num registro, interno ou guardados
na memria. Na realidade o programa e dados devem vir do mundo exterior e os resultados devem ser
mandados para o mundo exterior, conforme veremos posteriormente. Esta simplificao nos permite
concentrar na unidade microprocessador e na memria.
Recorde que um programa consiste de instrues que dizem ao microprocessador exatamente que
operaes ele deve executar. Estas instrues devem ser guardadas de modo ordenado na memria. As
instrues devem ser buscadas na memria pela MPU, uma de cada vez. A instruo ento executada
pela MPU.
A operao de um microcomputador pode ser dividida em fases, como mostrado na figura a seguir. Quando
dada a partida no microprocessador ele entra na fase de busca (FETCH). Durante a fase de busca uma
instruo tomada da memria e decodificada pela MPU. Uma vez que a instruo est decodificada a
MPU muda para a Fase de Execuo. Durante esta fase, a MPU executa a operao ditada pela instruo.
A fase de busca sempre consiste da mesma srie de operaes. Ento, ela gasta sempre o mesmo tempo.
Contudo, a fase de execuo consiste de diferentes seqncias de eventos, dependendo do tipo de
instruo a ser executada. Ento, o tempo de uma fase de execuo pode variar consideravelmente,
dependendo da instruo a ser executada.
DATAPOOL ELETRNICA 11
MICROPROCESSADOR Z-80
Vejamos como o computador faz para resolver um problema tal como 6+9=?. Enquanto isto nos parece um
problema muito simples, se fosse deixado simplesmente por conta do computador e sem auxlio humano, o
computador no teria a mnima noo de como resolv-lo. Portanto deve-se dizer ao computador como
resolver o problema nos mnimos detalhes, e isto feito escrevendo-se um programa.
Antes de se escrever o programa deve-se saber quais e instrues esto disponveis para o
microprocessador utilizado. Cada microprocessador vem com uma listagem do seu conjunto de instrues.
Suponha que, aps ver a lista, decidiu-se que trs instrues so necessrias para resolver o problema.
Estas trs instrues e a descrio do que fazem esto mostradas na figura a seguir.
Na figura anterior, a primeira coluna da tabela d o nome da instruo. Quando se escreve um programa
inconveniente escrever-se o nome inteiro. Por esta razo, a cada instruo dada uma abreviao ou uma
ajuda a memorizao. Abreviao denominada MNEMNICO. Os mnemnicos esto na segunda coluna.
A terceira coluna apresenta cdigo da operao que denominado OPCODE. Este valor ser armazenado
em binrio na memria e lido pelo processador. Cada cdigo ser interpretado como uma instruo a ser
executada. O conjunto de instrues especifico para cada tipo de microprocessador e apresentado em
uma tabela de OPCODES fornecida pelo fabricante. Para facilitar o manuseio, o OPCODE escrito em
hexadecimal, porm ao ser colocado na memria, armazenado no valor correspondente em binrio. A
terceira coluna mostra o cdigo de operao OP code, sendo que este o nmero binrio que o
computador e o programador usa para representar a instruo. O OP code est apresentado em
Hexadecimal.
A coluna final descreve exatamente que operao formada quando a instruo executada.
O leitor dever estudar esta tabela cuidadosamente, pois ser muito usada daqui para frente.
O programa que efetuar a soma de 610 e 910, guardando o resultado no registro interno do
microprocessador, denominado acumulador ou registro A, dever descrever detalhadamente todos os
passos a serem realizados. Assim, a primeira instruo LD A, 06 carregar o registro A com o valor 0610.
Esta instruo necessita de dois bytes, o primeiro 3Ehex o opcode da operao carregar o registro A, o
segundo 06hex o valor numrico a ser carregado no registro A.
A segunda instruo LD B, 09 carregar o registro B com o valor 0910. Note que o opcode agora tem o valor
06hex, pois ser usado o registro B como destino da operao. Tambm uma instruo de dois bytes.
A terceira instruo ADD A, B uma instruo de um nico byte, cujo valor do opcode 80hex. Esta depois
de interpretada habilita a unidade aritmtica efetuar a soma de dois valores contidos no registro A e registro
B e guardar o resultado no registro A.
O programa dever descrever todas as operaes que a MPU executar. Assim, aps terminar a soma,
deve-se tambm dizer a MPU que ela pare de executar instrues. Sendo, portanto, necessrio acrescentar
ao programa a instruo HLT, cujo opcode 76hex, que ir colocar o processador no estado de parada.
Usando a representao mnemnica e decimal dos nmeros a serem somados, o programa o seguinte:
DATAPOOL ELETRNICA 12
MICROPROCESSADOR Z-80
LD A, 06
LD B, 09
ADD A, B
HLT
Infelizmente, o microcomputador bsico no pode entender nmeros decimais ou mnemnicos. Ele pode
interpretar nmeros binrios e nada mais. Ento deve-se escrever o programa como uma seqncia de
nmeros binrios. Isto feito substituindo cada mnemnico pelo opcode correspondente e cada decimal por
seu binrio.
Isto :
Note que o programa consiste em quatro instrues. As duas primeiras instrues tem duas partes: Um OP
code de 8 bits seguido por um operando de 8 bits. Os operandos so os dois nmeros que devem ser
somados (610 e 910).
Recorde que o microprocessador e sua memria trabalham com palavras de 8 bits, ou 1 byte. Como as
duas primeiras instrues consistem de informaes de 16 bits, elas devem ser subdivididas em dois bytes
de 8 bits antes de serem guardadas na memria. Ento quando o programa for guardado na memria, ficar
desta forma:
Seis bytes de memria so requeridos. Pode-se guardar este programa em qualquer lugar da memria.
Supondo-se que o mesmo fosse armazenado a partir da 3 localizao de memria, o diagrama de memria
seria o da figura a seguir.
Note que para cada localizao da memria existem associados dois nmeros binrios de 8 bits. Um seu
prprio endereo e o outro seu contedo. Deve-se ter cuidado para no confundir estes dois nmeros. O
endereo da memria fixado. O endereo fixado. Ele estabelecido na construo do microcomputador,
contudo o contedo pode ser mudado, guardando-se novo dado na localizao.
DATAPOOL ELETRNICA 13
MICROPROCESSADOR Z-80
DATAPOOL ELETRNICA 14
MICROPROCESSADOR Z-80
MICROPROCESSADOR Z-80
DATAPOOL ELETRNICA 15
MICROPROCESSADOR Z-80
2 - MICROPROCESSADOR Z-80
2.1 - INTRODUO
O microprocessador Z-80 comercializado desde abril de 1976 e, como o microprocessador 8085, tambm
semelhante ao 8080, porm com importantes melhorias. O Z-80 um microprocessador muito utilizado
principalmente na rea de computadores pessoais e domsticos. Por isso, iremos descrev-lo
detalhadamente.
Como caracterstica de sua integrao, no microprocessador Z-80, sobre uma pastilha monoltica ou chip,
esto integrados 8 mil transistores, isto , 4500 a mais que no seu antecessor, o microprocessador 8080.
Todos esses transistores so associados, para conformar a estrutura do Z-80
Foi projetado pela empresa ZILOG, mas hoje existem diversas empresas que tambm o fabricam como a
SGS, MOSTEK, a NEC e a SHARP.
um microprocessador rpido admitindo sinal de clock de 2,5 MHz, porm a verso Z80-A alcana 4 MHz.
Possui 158 instrues, incluindo todas as 78 do 8080 que podem ser agrupadas da seguinte forma: carga e
troca, aritmtica e lgica, transferncia de bloco e procura, rotao e deslocamento, manipulao de bits,
salto, chamada e retorno, entrada e sada, controle de UCP. e, se forem considerados os diferentes modos
de endereamento, o nmero de instrues sobe para 696.
Admite dois tipos de interrupes: INT (Interrupo mascarvel) e NMI (Interrupo no-mascarvel).
Quanto s suas particularidades, o microprocessador Z-80 dispe do seguinte:
Entradas e sadas para enderear at 256 diferentes endereos para acesso a perifricos.
Um contador de 7 bits, com os circuitos lgicos correspondentes, para que se obtenham as funes de
restaurao, quando memrias dinmicas (DRAM, em ingls) so conectadas a ele.
DATAPOOL ELETRNICA 16
MICROPROCESSADOR Z-80
SISTEMA Z-80
Na figura anterior, o Z-80 aparece esquerda, ele implementa as funes de uma unidade central de
processamento (CPU) em um nico chip: Inclui uma unidade aritmtica e lgica (ALU), seus registros
internos, e a unidade de controle.
Da figura, pode-se ver que o P Z-80 tem trs barramentos (buses), que so:
O bus de dados transporta os dados entre os vrios elementos do sistema. Tipicamente, ele levar dados
da memria para o P ou do P para a memria ou ainda dados entre P e dispositivos de entrada-sada
(I/O).
O bus de endereos transporta um endereo gerado pelo P, o qual selecionar um registro interno dentro
de um dos Chips ligados ao sistema. Este endereo serve para especificar a fonte, ou o destino dos dados
que transitaro atravs do bus de dados.
Cada microprocessador requer uma referncia precisa de tempo, que fornecida por um clock e um cristal,
que aparecem esquerda da figura.
A ROM (Memria somente de Leitura) que uma memria destinada a guardar informaes fixas, isto ,
permanentes, normalmente guarda o programa monitor do sistema que o programa que permite a
operao inicial do sistema. Tem a caracterstica de ser no voltil, isto , informao no perdida com a
falta de energia.
A RAM (Memria de acesso aleatrio) que uma memria que permite igualmente a operao de leitura ou
de escrita, destinada a guardar informaes provisrias, isto , que podem ser mudadas quando
desejado, normalmente utilizada para guardar o programa que o usurio est executando no momento.
Finalmente o sistema contm um ou mais chips de interface (interligao) de modo que possa se comunicar
com o mundo exterior. O Chip mais freqentemente utilizado o PIO ou Chip para Entrada/Sada Paralela.
O PIO como todos os outros chips no sistema conectado a todos trs buses.
Todos os chips so conectados a todos trs buses, incluindo o bus de controle. Entretanto, para clareza de
ilustrao, normalmente no sero mostradas nas figuras as conexes com o bus de controle.
DATAPOOL ELETRNICA 17
MICROPROCESSADOR Z-80
O bus de dados de 8 bits e o caminho para toda transferncia de dados entre a memria externa e
registros do P e dispositivos de Entrada/Sada. O bus de endereos de 16 bits. Normalmente o bus de
endereos especifica um endereo externo de memria de 0 a 65535 (0 a 64K 1). Desde que o Z-80 tem
instrues de entrada e sada no necessrio dedicar-se endereos de memria para dispositivos de
Entrada/Sada.
O caminho principal dos dados dentro do P o bus de dados interno que conecta os registros do P, a
ALU, o controle do bus de dados e o registro de instruo. A ALU executa as operaes aritmticas e
lgicas entre dois operandos de 8 bits.
A, B, C, D, E, H e L e
A, B, C, D, E, H e L.
Somente pode ser ativo em qualquer instante um conjunto de sete registros e os registros correspondentes
de flags F e F.
Uma instruo especial do Z-80 seleciona A e F ou A e F, enquanto uma segunda instruo seleciona.
B, C, D, E, H e L ou
B, C, D, E, H e L.
DATAPOOL ELETRNICA 18
MICROPROCESSADOR Z-80
No Prima A F A F No Prima
No Prima B C B C Prima
D E D E
H L H L
No Prima A F A F No Prima
No Prima B C B C Prima
D E D E
H L H L
Conforme j foi abordado, o Z-80 equipado com dois grupos idnticos de seis registros de finalidades
gerais (alm de A ou A), e somente seis registros podem ser usados de cada vez. Contudo existem
instrues especiais que permitem chavear entre os dois grupos (s vezes denominados bancos) de
registros. Um grupo funciona como uma memria interna, enquanto o outro funciona com um conjunto de
trabalho de registros interno. Os usos possveis desta facilidade especial sero descritos no decorrer deste
texto.
Os registros de finalidades gerais tem funes especficas. 8 bits de dados podem ser movimentados entre
qualquer um dos sete registros e a memria, ou de um registro para o prximo.
Uma segunda caracterstica destes seis registros de finalidades gerais que podem ser agrupados em
pares, tendo utilizao em aritmtica de dupla preciso ou como endereos de memria.
Contudo operaes lgicas e aritmticas podem ser feitas usando-se somente o registro A ( ou A) e outro
registro de localizao de memria. O resultado da operao sempre vai para o registro A.
A aritmtica de dupla preciso envolve soma, subtrao, incremento, ou decremento de um valor com 16
bits. A maioria das operaes lgicas e aritmticas do Z-80, so orientadas para 8 bits, porm o Z-80
permite operaes limitadas entre pares de registro e outros registros especiais como o apontador de Stack
(SP) e registros de ndice IX e IY.
DATAPOOL ELETRNICA 19
MICROPROCESSADOR Z-80
Fig. A O SP aponta para o endereo 0103, assim sendo, este endereo marca o incio o Stack.
DATAPOOL ELETRNICA 20
MICROPROCESSADOR Z-80
Conforme pode ser visto nas figuras anteriores o SP aponta para a ltima entrada no Stack.
Isto significa que o SP decrementado toda vez que uma nova palavra empurrada no Stack.
Inversamente quando uma palavra removida do Stack o SP deve ser incrementado. Observe que o SP
aponta para o alto do Stack na memria.
DATAPOOL ELETRNICA 21
MICROPROCESSADOR Z-80
AO DO REGISTRO - I
Na figura em:
3 O I/O envia pelas 8 linhas de endereos menos significativos um cdigo de 8 bits (bit 0 sempre 0), no
caso 12 Hex, que se combina com contedo do registro I, no caso FF (este ocupando os 8 bits mais
significativos do bus de endereos) para formarem um endereo de 16 bits (FF 12 Hex).
4 e 5 Este endereo indica uma posio de memria a partir da qual so retirados os dados para
formarem o endereo que indicar onde inicia a ISR, no caso E400.
O registro I usado em um dos trs modos de interrupo (Modo 2) que o Z-80 pode utilizar sob controle do
programa.
DATAPOOL ELETRNICA 22
MICROPROCESSADOR Z-80
B
U
F
BARRAMENTO DE CONTROLE
F
E
BARRAMENTO
R
DE CONTROLE
PINAGEM DO Z-80
DATAPOOL ELETRNICA 23
MICROPROCESSADOR Z-80
Para efeito didtico os pinos do Z-80 foram grupados logicamente de acordo com as funes, invs de sua
posio fsica.
DATAPOOL ELETRNICA 24
MICROPROCESSADOR Z-80
DATAPOOL ELETRNICA 25
MICROPROCESSADOR Z-80
O sinal BUSRQ um sinal ativo baixo que gerado por um dispositivo externo para ganhar controle dos
buses do P. Durante o tempo que o dispositivo externo tem o controle dos buses ele provavelmente
executa uma operao de ACESO DIRETO MEMRIA (DMA). DMA permite que um dispositivo externo
v diretamente memria e transfira dados entre a memria e o dispositivo. O P deve ser travado
durante a operao de DMA para evitar o conflito do servio de requisio de memria do P no mesmo
instante e da mesma localizao de memria que um dispositivo externo. Quando o dispositivo externo leva
para L o sinal BURSQ. O P responde com o sinal de reconhecimento BUSAK, o sinal BUSAK um sinal
de sada ativo baixo que significa que o bus de dos, bus de sinais de controle do P esto no estado de alta
impedncia e podem ser controlados por um dispositivo externo para operaes de DMA.
MREQ
RD
WR
RFSH
O sinal REQUISIO DE MEMRIA MREQ um sinal tri-state ativo L indicando que o bus de endereos
tem um endereo vlido de memria. Essencialmente este pat do sinal HABILITADOR DE CHIP da
memria e serve para informar a memria externa para sair dados para uma leitura de memria ou entrar
dados para uma escrita de memria.
Os sinais RD e WR so sinais de sada tri-state ativos L para memria externa indicando se a operao de
memria uma leitura ou escrita. Quando sinal MREQ vai para L, ou RD ou WR tambm sero L durante
uma poro o ciclo de mquina. Quando MREQ e RD so ambos L ser executada uma operao de leitura
na memria externa. Tanto a escrita como a leitura utilizam o endereo no bus de endereos e transferem
dados atravs do bus de dados.
O sinal RFSH (RESTAURAO) no associado com a operao normal da memria. Ele usado
somente quando for usado memrias dinmicas como memria externa.
Quando o sinal de sada RFSH L e o sinal MREQ tambm L, a memria dinmica de sada usar o
contedo dos 7 bits menos significativos do bus de endereos para implementar um dos ciclos de
restaurao. RFSH ativo em cada busca de instruo, e desde que o registro R est continuamente sendo
incrementado aps cada busca, as linhas de endereo refletiro continuamente um novo endereo para o
prximo ciclo de restaurao.
O sinal M1 um sinal de sada ativo baixo que indica que o P est no ciclo de busca da instruo. Cada
instruo tem o ciclo de busca quando o primeiro byte da instruo, o cdigo de operao, buscado da
memria e ento decodificado. No Z-80 diversas instrues tem cdigos de operao de 2 bytes e o sinal
M1 ser L durante cada busca de cada byte.
O sinal RESET um sinal de entrada ativo L que usado como o principal RESET do P. Este sinal
trazido imediatamente para L aps a energizao do sistema (power-up), ou em qualquer momento quando
o sistema C deva sofrer RESET. Quando RESET trazido para L ocorrem as seguintes aes:
O sinal WAIT um sinal associado com memrias lentas ou dispositivos I/O . Durante todo tempo que o
sinal WAIT est L, o P marcar tempo, no fazendo nada, enquanto a memria externa ou dispositivo I/O
. O sinal WAIT habilita memrias lentas ou (raramente) dispositivos I/O lentos para interligao ao Z-80
sem buffer.
O sinal HALT um sinal de sada ativo baio que vai para L durante tempo em que a instruo HALT est
sendo executada. Uma instruo HALT num programa tipicamente usada quando ocorrer uma das
condies.
Quando o P est num estado HALT ele executa instrues de no-operao (NOP) para assegurar
atividade adequada de restaurao de memria.
A figura a seguir, ilustra as aes que ocorrem durante uma interrupo NMI.
ENDEREO
HEX
NMI 0066
17 L ISR
Z - 80
END. HEX
1
3
STACK
2
SP = XXXX
Na figura anterior, o Z-80 aps receber um nvel L na entrada NMI., termina em 1. a corrente instruo - - - -,
salva o contedo do PC no Stack 2. e se desloca para o endereo 0066 Hex onde inicia a execuo rotina
de servio de interrupo (ISR) que atende a interrupo NMI.
O principal sinal de requisio de interrupo o sinal INT, que um sinal de entrada ativo no nvel L e que
fornecido pelos dispositivos externos para provocar uma interrupo. O sinal INT ser reconhecido pelo
P no final da instruo corrente se o flip-flop habilitador de interrupo IFF no P foi setado pelo
DATAPOOL ELETRNICA 27
MICROPROCESSADOR Z-80
CICLO T 250ns
TPICO DE 3 A 6 CICLO T
1CICLO DE MQUINA
Os ciclos T so usados para controlar operaes dentro de um ciclo maior chamado Ciclo de Mquina, ou
ciclo M.
Cada instruo executada pelo Z-80 consiste de 1 at 6 ciclos de mquina (com exceo de um conjunto
especial de instrues), e cada ciclo de mquina compreende de 3 a 6 ciclos T como mostrada na Figura
11.
Existem 7 ciclos bsicos de mquina que podem ocorrer durante a operao do Z-80:
DATAPOOL ELETRNICA 28
MICROPROCESSADOR Z-80
CONTROLE DE MEMRIA
INST
PC
1800
BUS DE ENDEREO
DECODIFICADOR DE
1800 ENDEREOS
MEMRIA
CONTROLE DE MEMRIA
INST
PC
1801
+1
BUS DE ENDEREO
DECODIFICADOR DE
1800 ENDEREOS
MEMRIA
CONTROLE DE MEMRIA
INST
PC
1801
+1
BUS DE ENDEREO
DECODIFICADOR DE
1800 ENDEREOS
Na figura anterior, o contador de programas incrementado para 1801. O incremento do PC acontece cada
vez que o contedo do PC colocado no bus de endereos.
DATAPOOL ELETRNICA 29
MICROPROCESSADOR Z-80
MEMRIA
MREQ = 0
RD = 0
CONTROLE DE MEMRIA
INST
PC
1801
+1
BUS DE ENDEREO
DECODIFICADOR DE
1800 ENDEREOS
Na figura anterior, os sinais MREQ e RD vo para 0 indicando a memria externa que h um endereo
vlido no bus de endereos.
P BUS DE DADOS
I.R.
REG
INST MEMRIA
OP CODE
DECODIFICADOR
CONTROLE DE MEMRIA
......
SINAIS
INST (OP CODE)
PC
+1
BUS END
DECODIFICADOR DE
1800 ENDEREOS
Na figura anterior, o opcode da instruo existente no endereo 1800 Hex colocado no bus de dados e da
vai para o registro de instruo (IR), de onde vai para o decodificador, onde finalmente ser decodificado e
os sinais de controle referentes instruo sero liberados.
A instrues apresentadas nas figuras anteriores do uma idia grosseira de alguns acontecimentos que
ocorrem durante o ciclo de busca do opcode ou ciclo M1. O diagrama de temporizao da figura 16 mostra
com mais riqueza de detalhes tais acontecimentos, no caso para uma instruo INC R que de um nico
byte.
DATAPOOL ELETRNICA 30
MICROPROCESSADOR Z-80
INSTRUO INC R
CICLO M1
T1 T2 T3 T4 T1
RD
WAIT
MT
ENTRADA
DB0 - DB7
RFSH
EXECUO INC R
Na figura anterior, quando P entra no ciclo M1, o sinal M1 cai para indicar que este ciclo est ativo. O
contador do PC colocado no bus de endereos em preparao para a busca do opcode da prxima
instruo. Na rampa de descida (Edge de descida) de T1 os sinais MREQ e RD vo para L, indicando a
memria externa que existe um endereo vlido de memria no bus de endereos. A memria externa
colocar agora o contedo da localizao especfica de memria do bus de dados um pouco antes do
edge de subida de T3 (a no ser que seja uma memria lenta). No edge de subida de T3, o byte do
opcode no bus de dados levado para o P. Pouco depois o sinal RD vai para um nvel inativo juntamente
com MREQ e M1. Os dois ciclos T restantes de M1 so usados para fornecer tempo de restaurao para as
memrias dinmicas externas. O sinal RFSH levado para L e MREQ novamente ativo para indicar as
memrias dinmicas externas que a restaurao pode prosseguir. O bus de endereos ter agora presente
o contedo do registro R para fornecer um endereo de restaurao.
Durante os ltimos dois ciclos T de M1 o P efetua a operao de decodificao da instruo, que no caso
uma INC R. A instruo INC R toma o contedo de um registro de finalidades gerais R (A, B, C, D, E , H
ou L ou seus primos), incrementa-o por 1, e coloca o resultado de volta no registro.
A figura a seguir, mostra a execuo de uma instruo LDR,(HL), a qual carrega o contedo de localizao
de memria cujo endereo est no par de registros HL, no registro R do P. O ciclo M1 idntico ao que j
foi discutido. No final do ciclo M1, o P decodificou a instruo e inicia o ciclo de leitura de memria para
obter um operando de 8 bits na memria. Os sinais MREQ e RD e tambm o bus de endereos so
ativados tal como no caso do ciclo M1. O bus de endereos mantm o contedo do par de registros HL
durante este tempo e a memria externa coloca o operando no bus de dados. No edge de descida de T3, o
operando da memria levado para o P, carregando o registro R.
DATAPOOL ELETRNICA 31
MICROPROCESSADOR Z-80
INSTRUO LD R. (HL)
T1 T2 T3 T4 T1 T2 T3
MREQ
RD
WR
ENTRADA
BUS DE DADOS
D0 - D7
WAIT
CICLO DE LEITURA
INSTRUO LD (HL) R.
T1 T2 T3 T4 T1 T2 T3
MREQ
RD
WR
BUS DE DADOS
SAIDA DE DADO
D0 - D7
WAIT
CICLO DE ESCRITA
A instruo neste caso uma LD (HL),R, a qual toma o contedo do registro R especificado do P e o
escreve na localizao de memria externa cujo endereo est no par de registros HL. MREQ e as sadas
do bus e endereos esto ativas como no exemplo anterior. No sai sinal RD, mas o contedo do registro
especificado do P levado no bus de dados aps o edge de descida de T1. Este dado permanece no bus
de dados e no edge de descida de T2 o sinal WR se torna ativo. Com MREQ e WR ativos, os dados do bus
de dados so escritos na localizao especificada de memria usando as sadas do bus de endereos A15
A0.
mquina at que todos bytes tenham sido transferidos. Resulta ento que o tempo total da instruo
dependente do nmero de bytes a ser transferido e da velocidade do dispositivo I/O.
T1 T2 Tw T3 T1
A0 - A7 ENDEREO DA PORTA
IORQ
RD
ENTRADA
BUS DE DADOS
WAIT
T1 T2 Tw T3 T1
A0 - A7 ENDEREO DA PORTA
IORQ
RD
WAIT
O endereo do dispositivo I/O colocado nas linhas A7 A0 do bus de endereos no incio do ciclo de
mquina e IORQ habilitado aps o edge de subida de T2. Se estiver ocorrendo uma leitura o sinal RD
habilitado no mesmo instante que IORQ. O dispositivo externo reconhece uma leitura pelas linhas IORQ e
RD e coloca seus dados no bus de dados, onde no edge de descida de T3 so levados para dentro do P.
Se estiver ocorrendo uma leitura, o sinal WR habilitado no lugar de RD no mesmo instante que IORQ.
Antes de WR o dado foi colocado no registro do P (durante T1). Este dado est colocado no registro do P
(durante T1). Este dado est disponvel durante o resto do ciclo de escrita e o dispositivo I/O externo o
deixar entrar em algum instante neste perodo.
Note que tanto para ciclos de entrada como de sada, o sinal WAIT habilitado internamente aps T2. Isto
causa o P adiar outros processamentos de I/O at que a linha WAIT seja desativada e efetivamente soma
um ciclo de clock ao tempo do ciclo de entrada e sada. Esta condio implementada para dar ao P
tempo adicional para amostrar a linha externa WAIT afim de responder a dispositivo I/O lentos.
Estados WAIT adicionais podem ser impostos pelo controle do dispositivo I/O externo pelo tempo que o
controle do dispositivo I/O leva para executar a instruo I/O Estes seriam inseridos para n nmero de T
ciclos aps o ciclo WAIT imposto ao P.
DATAPOOL ELETRNICA 33
MICROPROCESSADOR Z-80
ULTIMO
Tx Tx Tx T1
ESTADO T
BUSRQ
AMOSTRAGEM
AMOSTRAGEM
BUSAK
A0 - A15
D0 - D7
MREQRD
IORQWR FLUTUANDO
MREQ
Na figura anterior, quando o sinal BUSRQ habilitado, o P detecta o sinal durante o edge de subida do
ltimo ciclo T de um ciclo de mquina. O ciclo T ento completado e o prximo ciclo T do P responde a
requisio pelo sinal de sada BUSAK. No mesmo instante, os buses de endereos, dados e outros sinais
so levados ao estado de alta impedncia (Tri-State).
Agora quaisquer mudanas nas linhas no afetaro o P nem o P afetar o estado das linhas. Quando o
dispositivo I/O completar a transferncia DMA (tipicamente 1 byte), ele desativar BUSRQ. Esta condio
ser detectada pelo P no prximo edge de subida de um ciclo T e ativar ou desativar BUSAK no
prximo ciclo T aps aquele. O P continuar ento o processamento a partir do ponto onde ele passou o
controle ao dispositivo que requereu o bus.
DATAPOOL ELETRNICA 34
MICROPROCESSADOR Z-80
ULTIMO CICLO M
DE INSTRUO M1
ULTIMO
T1 T2 Tw Tw
ESTADO T
INT
A0 - A15 PC REFRESH
MI
MREQ
IORQ
ENTRADA
BUS DE DADOS
WAIT
RD
Durante T1 de um ciclo de interrupo, o sinal M1 habilitado. T2 e dois estados WAIT (TW) so providos
(os estados wait so gerados internamente) para dar tempo suficiente para que circuitos de interrupo
externos encadeados (Daisy chained) respondam ao reconhecimento de interrupo e coloquem um
VETOR Resposta de Interrupo no bus de dados. A lgica de interrupo externa identifica o
reconhecimento de interrupo no P pela combinao de M1 e IORQ. Aps detectar estes dois sinais, o
circuito de interrupo externo responde colocando o dados apropriado no bus de dados, que levado para
o P durante o Edge de subida de T3. Os sinais M1 e IORQ so desarmados e a ao de restaurao
iniciada. Outras aes durante o ciclo de interrupo externo so dependentes do modo de interrupo que
ser discutido posteriormente.
A ao do P durante este ciclo de mquina est mostrada na figura a seguir. O sinal NMI no pode ser
desarmado pelo Flip Flop habilitador de interrupo do P.
ULTIMO CICLO M M1
ULTIMO
T1 T2 T3 T4 T1
ESTADO T
NMI
A0 - A15 PC REFRESH
MI
MREQ
RD
RFSH
A interrupo NMI tambm tem prioridade sobre as outras interrupes externas. Ela reconhecida durante
o ltimo ciclo T do ltimo ciclo de mquina da instruo corrente como no caso da interrupo externa. A
figura anterior, mostra a primeira poro desta ao de interrupo. IORQ no habilidada desde que
nenhum dispositivo externo necessita ser notificado que a interrupo foi aceita. O primeiro ciclo de
mquina similar a uma operao de leitura de memria, exceto que nenhum dado lido da memria
DATAPOOL ELETRNICA 35
MICROPROCESSADOR Z-80
Quando uma instruo de software HALT executada, o sinal HALT habilitado automaticamente pelo P.
O P continua a gerar ciclos M1 para esta HALT e no avana o PC. Os dados de memria so ignorados.
A lgica de restaurao habilitada durante os ltimos dois ciclos T de M1 como antes para habilitar a
restaurao adequada da memria externa enquanto o P estiver no estado HALT. O estado HALT pode
ser interrompido somente por um RESET ou recebendo de um dispositivo externo uma interrupo NMI,
ambos dos quais causam um processo normal de interrupo antes que o PC seja armazenado no STACK.
A sada da instruo HALT est mostrada na figura a seguir.
M1 M1 M1
T4 T1 T2 T3 T4 T1 T2
HALT
INT or
NMI
DATAPOOL ELETRNICA 36
MICROPROCESSADOR Z-80
INSTRUES DO Z-80
DATAPOOL ELETRNICA 37
MICROPROCESSADOR Z-80
3 - INSTRUES DO Z-80
3.1 - INTRODUO
Neste captulo sero analisadas as instrues do Z-80. Sero abordadas inicialmente as vrias classes de
instrues para depois serem analisadas as instrues uma por uma, com explicaes de sua finalidade e o
modo na qual afetam os flags ou como podem ser usadas em conjuno com vrios modos de
endereamento.
TRANSFERNCIA DE DADOS
PROCESSAMENTO DE DADOS
BRANCH
CONTROLE
ENTRADA / SADA
Operaes Aritmticas
Manipulao de Bit
Incremento e Decremento
Operaes Lgicas
Operaes de Rotao e Deslocamento
Operaes de Teste, Set, Reset de Bit.
DATAPOOL ELETRNICA 38
MICROPROCESSADOR Z-80
O P Z-80 permite tambm a transferncia de dados com os I/O atravs de um outro mtodo chamado
ENTRADA/SADA MAPEADA EM MEMRIA. Neste caso, os dispositivos de I/O so conectados ao bus de
endereos do mesmo modo que os chips de memria e so endereados do mesmo modo. A memria
ento dividida em duas reas, uma rea de endereos destinada memria normal (ROM e RAM) e outra
reas de endereos reservadas para os dispositivos I/O.
O P Z-80 foi feito para substituir o 8080 e para ser mais poderoso. Como resultado, o Z-80 oferece todas
instrues do 8080, acrescido de instrues adicionais. Isto foi conseguido usando-se poucos op codes no
utilizados pelo 8080, e tendo em vista o nmero limitado de opes disponveis num op code de 8 bits, o Z-
80 acrescenta um byte adicional ao op code para operaes indexadas. Esta a razo pela qual algumas
instrues do Z-80 ocupam at 5 bytes na memria.
importante lembrar que qualquer programa pode sr escrito de diferentes maneiras. Um conhecimento
profundo e entendimento do conjunto de instrues indispensvel para se obter uma programao
eficiente.
Quando se aprende a programar no essencial escrever-se programas otimizados. Nesta seo sero
vistas as vrias instrues do Z-80 e com a inteno de simplificao e racionalizao sero grupadas nas
categorias j descritas nos pargrafos anteriores.
Quando for escrever programas, o leitor dever usar o conjunto de instrues do Z-80 no final da apostila.
Alm disso, no final da apostila, traz uma descrio individual de cada instruo.
DATAPOOL ELETRNICA 39
MICROPROCESSADOR Z-80
DATAPOOL ELETRNICA 40
MICROPROCESSADOR Z-80
1 Endereamento implcito
2 Endereamento imediato
3 Endereamento imediato estendido
4 Endereamento de registro
5 Endereamento indireto de registro
6 Endereamento estendido
7 Endereamento modificado de pgina zero
8 Endereamento relativo
9 Endereamento indexado
10 Endereamento de bit
Como exemplos de instrues que usam o endereamento implcito pode-se citar as instrues:
CPL e LD SP,IY
Esta instruo toma o contedo do registro A, forma o complemento de um deste contedo (troca todos 0s
por 1s e todos 1s por 0s) e guarda o resultado de volta no registro A.
A fonte e a localizao so fixadas (registro A) e nenhum outro registro pode ser usado. Os bits dos
cdigos de condio no so afetados.
DATAPOOL ELETRNICA 41
MICROPROCESSADOR Z-80
Byte 0 1 1 1 1 1 1 0 1
Byte 1 1 1 1 1 1 0 0 1 OP CODE HEX FD F9
INSTRUO LD SP,IY
Esta instruo carregar SP com IY toma o contedo do registro de 16 bits IY e o transfere para o registro
SP.
Todas instrues sobre aritmtica geral e controle do P so esta espcie, co o so as instrues dos
grupos de troca, transferncia de bloco e do grupo de procura. Neste ltimo grupo as aes so mais
elaboradas, mas o formato da instruo fixado.
Nesta instruo o contedo do registro A somado com o contedo do segundo byte da instruo (NN) e o
resultado colocado no registro. Os cdigos de condio so atuados de acordo com o resultado desta
instruo.
Nesta instruo o contedo do registro A faz OU EXCLUSIVO com o segundo byte da instruo e o
resultado colocado no registro A. Os cdigos de condio so atuados de acordo com o resultado desta
instruo.
Em geral, o modo de endereamento imediato usado para instrues no grupo aritmtico e lgico de 8
bits.
LD IY, NN
DATAPOOL ELETRNICA 42
MICROPROCESSADOR Z-80
INSTRUO LD IY, NN
Nesta instruo os dois primeiros bytes so os cdigos de operao e os dois ltimos so os dados
imediatos. A instruo LD IY,NN carrega os 16 bits de dados imediatos existentes nos bytes 2 e 3 da
instruo no registro IY. Os bits dos cdigos de condio no so afetados. Pode-se observar que o dado
agrupado byte menos significativos primeiro e, a seguir, o byte mais significativo.
1 1 0 0 1 0 1 1
0 0 0 1 0 R R R OP CODE HEX CB 1-
Observe que esta instruo te um campo (RRR) formado por 3 bits que especifica o registro do P a ser
utilizado. Os valores vlidos para o campo R da instruo so os seguintes:
R REGISTRO
000 B
001 C
010 D
011 E
100 H
101 L
111 A
Na tabela anterior, note que todas combinaes de bit so possveis exceto 110, que se destina a outro
modo de endereamento (endereamento indireto de registro).
A instruo RLR toma o contedo do registro R e o desloca para a esquerda 1 bit. O bit mais significativo do
registro deslocado para o carry enquanto o contedo prvio do carry deslocado para a posio do bit
menos significativo do registro. Os bits dos cdigos de condio so ativados de acordo com o resultado do
deslocamento. A figura a seguir ilustra a instruo RLR.
Como exemplos de instrues que usam este mtodo de endereo tem-se a instruo LDA,(BC) que
instruo de 1 byte (figura a seguir).
INSTRUO LD A, (BC)
A instruo LD A,(BC) carrega o contedo da localizao de memria apontada pelo par de registros BC no
registro A . Os cdigos de condio no so afetados.
Quando for empregado endereamento indireto de registro, os pares de registros utilizados como
apontadores, guardam o endereo de memria como um endereo de 16 bits.
INSTRUO LD A, NN
Como outro exemplo de ma instruo que usa o modo de endereamento estendido tem-se a instruo:
INSTRUO LD (NN), HL
Esta instruo toma o contedo do par de registros HL, e guarda-o na localizao de memria especificada
nos bytes 1 e 2 da instruo. Assim como em outras instrues como esta, o endereo da localizao de
memria ordenado, byte menos significativo primeiro, seguido do byte mais significativo. Ento, o
DATAPOOL ELETRNICA 44
MICROPROCESSADOR Z-80
Uma coisa interessante a notar nas instrues como estas que movem dados do P para a memria que
a zilog refere-se a elas como LDs de LOADS (carregar), quando o mnemnico usual ST de store
(guardar).
Observe que o endereo de 16 bits na instruo pode enderear 216=65536 localizaes de memria.
byte 0 OP CODE
byte 1 Valor do deslocamento
Memria
DATAPOOL ELETRNICA 45
MICROPROCESSADOR Z-80
O endereamento relativo no Z-80 usado somente para o grupo de instrues JUMP que permite ao P
executar JUMPs condicionais ou incondicionais anteriores corrente instruo de at 126 localizaes e
posteriores corrente instrues de at 129 localizaes.
Muitos grupos de instrues permitem o uso do modo de endereamento indexado e esta uma das
caractersticas mais poderosas oferecidas pelo Z-80. A figura a seguir, mostra o formato de uma instruo
que utiliza este modo de endereamento.
byte 0 OP CODE
byte 1 OP CODE
byte 2 DESLOCAMENTO
(byte 3) (VARIVEL OU NO)
Na figura anterior, op code da instruo ocupa os dois primeiros bytes (byte 0 e byte 1), enquanto que o
terceiro byte se destina a guardar o valor do deslocamento sinalizado, descolamento este que pode ter
valores desde 12810 at +12710. Este deslocamento somado ao contedo do registro de ndice
especificado IX ou IY para determinar o endereo efetivo do operando de memria.
LD (IY+D), N usa o registro de ndice IY. A execuo desta instruo desta instruo est ilustrada na figura
a seguir. Esta instruo guarda o valor imediato N na localizao de memria especificada pelo endereo
efetivo. Se, por exemplo, o contedo de IY fosse 1840 Hex (o contedo dos registros de ndice de 16 bits)
e o deslocamento D fosse 40 Hex, o valor N=24 seria guardado na localizao 1840 + 40 = 1880 Hex.
Na figura a seguir, aps a execuo da instruo LD (IY+40),24 , a localizao de memria cujo endereo
1880 Hex conteria o valor 24(N).
DATAPOOL ELETRNICA 46
MICROPROCESSADOR Z-80
A operao indexada poderosa, pois muitos programas devem ter habilidade de processar tabelas o listas
de dados na memria. Como exemplo e grupos de instrues que usam o modo de endereamento
indexado tem-se:
Byte 0 OP CODE = DD
Byte 1 OP CODE = CB
Byte 2 D = DESLOCAMENTO
1 1 B B B 1 1 0
Nesta instruo o bit especificado pelo campo BBB da instruo ser setado aps a execuo a instruo.
Nenhum cdigo de condio afetado.
O endereamento do byte contendo o bit a ser setado dado pela operao do modo de endereamento
indexado (IX+D).
EXERCCIO PROPOSTO
Admitindo-se que IX esteja em 1840 Hex e que o Z-80 esteja executando a instruo no endereo 1810 Hex
indicada na listagem do programa da figura a seguir.16. Aps a execuo desta instruo qual o contedo
do byte existente no endereo 1890?
DATAPOOL ELETRNICA 47
MICROPROCESSADOR Z-80
1800
SOLUO
A instruo SET B,(IX+D) no caso SET 6,(1840+50), que ento seta o bit 6 existente no endereo de
memria 1890. Como o valor anterior era 80 Hex (10000000) aps o setamento do bit 6 fica
(11000000)
O estabelecimento do bit 6 foi feito no contedo da posio de memria 1813Hex que F6Hex ou seja,
binrio.
DATAPOOL ELETRNICA 48
MICROPROCESSADOR Z-80
DATAPOOL ELETRNICA 49
MICROPROCESSADOR Z-80
Algumas instrues LOAD carregam o valor existente em um registro do Z-80; outras ainda carregam um
valor existente em uma localizao de memria num registro do Z-80. Quatro instrues do grupo LOAD
simplesmente transferem o contedo dos registros I ou R para o registro A corrente e vice-versa.
Nos pargrafos seguintes tem-se a descrio detalhada e exemplos das diversas modalidades de
instrues LOAD.
Estas instrues so de um nico byte e ocupam somente uma localizao de memria. Tais instrues
transferem os dados existentes em um registro para outro registro.
Como se pode saber numa instruo LD r,r qual registro deve receber o dado e que registro deve enviar o
dado?
A resposta que no mnemnico da instruo LD r,r deve ser especificado o registro fonte do dado (r) e o
registro destino dos dados (r). Normalmente isto feito como mostrado a seguir.
LD DESTINO, FONTE
Exemplo:
LD B, E Cd Hex 43
Significa que o contedo do registro E vai ser colocado no registro B aps a execuo da instruo LD B,E.
A instruo LD B,E tem o op code 43HEX ou seja, 01000011, que deve ser armazenado na memria do
microcomputador.
As instrues de transferncia de 8 bits, as instrues LD A,A; LD B,B; LD C,C; LD D,D; LD E,E; LD H,H; E
LD L,L trazem como resultado manter o contedo do registro correspondente inalterado, no tendo efeito
visvel e podem ser chamadas instrues nada fazem.
Com instrues do tipo LOAD imediatas possvel carregar registros com um valor desejado. Estas
instrues so compostas de dois bytes. O primeiro byte o op code e o segundo o byte de dados. Seu
formato est mostrado a seguir.
Os flags no so afetados nas instrues LOAD imediatas. A estrutura de se mnemnico :
LD DESTINO, DADOS
DATAPOOL ELETRNICA 50
MICROPROCESSADOR Z-80
Exemplo:
LD B, 49 Cd. Hex 06 49
Significa que o registro B deve ser carregado com o byte de dados 49, aps a execuo LD B, 49.
Exemplo:
Soluo:
Experincia:
Pressione a tecla INS/VER e entre com o endereo 8000h utilizando o teclado hexadecimal do mdulo. Em
seguida pressione a tecla ENTER.
Sempre no final de cada programa insira os bytes CD E2 01 no lugar de 76h para retornar ao
programa monitor
DATAPOOL ELETRNICA 51
MICROPROCESSADOR Z-80
Pressione a tecla EXEC para executar o programa (se j estiver em 8000h somente pressione
ENTER);.
Pressione a tecla E_REG e utilizando as teclas seta para baixo e seta para cima, examine o contedo
dos registros A, B, C, D, E e H completando o quadro seguinte:
Pressione a tecla RESET e em seguida a tecla E_REG e examine novamente o contedo dos registros.
As instrues do tipo LD r,(HL) de um nico byte podem ser usadas para transferir um byte de dados entre
a localizao de memria especificada pelo endereo contido nos registros H e L, e os registros A, B, C, D,
E, H ou L.
Exemplo:
Admitindo-se que o registro HL contenha 2005Hex e que no endereo de memria 2005Hex contenha AA.
significa que o registro B ser carregado com o valor existente no endereo de memria indicado pelo
contedo de HL, ou seja, o registro B est carregado com o valor AA aps a execuo da instruo LD
B,(HL).
Nesta instruo o contedo da localizao de memria endereada pelo contedo do registro de ndice IX
mais o valor do terceiro byte da instruo (d), carregada no registro especificado. O registro r pode ser
qualquer um dos registros.
Exemplo:
Admitindo-se que o registro IX contenha 2000Hex e que o contedo do endereo de memria 2004 seja 77.
significa que o registro C ser carregado com o valor existente no endereo de memria indicado pela soma
DATAPOOL ELETRNICA 52
MICROPROCESSADOR Z-80
dos contedos de IX e do byte 2 (terceiro byte) a instruo, ou seja, posio de memria 2004 (2000+04).
Ento o registro C ser carregado com o valor 77 aps a execuo da instruo LD C,(IX+04).
As instrues LD (HL),r so usadas para carregar o contedo de um registro especificado, numa localizao
de memria indicada pelo par de registros HL.
Exemplo:
Admitindo-se que o registro HL contenha 9080Hex e que o contedo de C seja 3A. significa que o contedo
de C (3A) ser carregado na posio de memria cujo endereo dado por HL, ou seja, 9080.
Exemplo:
Admitindo-se que o registro IX contenha 2010HEX e que o contedo de E seja EE, significa que o endereo
de memria 2030HEX (2010+20) ser carregado com o contedo do registro E (EE), aps a execuo da
instruo LD (IX+20),E.
As instrues LD (IY+d),r so idnticas s instrues LD (IX+d),r, exceto que utilizam o registro de ndice IY.
Tudo que foi escrito para as instrues LD (IX+d),R vlido de modo anlogo par as instrues LD
(IY+d),R.
A instruo LD (HL),n usada para carregar o valor imediato do byte n, que o 2 byte (byte 1) da
instruo, na localizao de memria endereada indiretamente pelo par de registros HL.
Exemplo:
DATAPOOL ELETRNICA 53
MICROPROCESSADOR Z-80
Admitindo-se que o registro HL contenha 2000HEX, significa que o valor CE ser carregado na posio e
memria cujo endereo dado por HL, ou seja, 2000.
A instruo LD (IX+d),n usada para carregar o valor imediato do byte n, que o quarto byte (byte 3) da
instruo, na localizao de memria endereada indexadamente pelo registro de ndice IX.
Nesta instruo o byte de dados nn (4 byte da instruo) transferido para a localizao de memria
endereada pelo contedo do registro de ndice IX mais o valor do offset (dd).
Exemplo:
Admitindo-se que o registro de ndice IX contenha 2000 HEX. significa que o byte de dados 49 ser
carregado no endereo de memria 2010HEX (2000+10).
A instruo LD(IY+d),n idntica instruo LD(IX+d),n, exceto que utiliza o registro de ndice IY.
Tudo o que foi escrito para a instruo LD(IY+d),n vlido de modo anlogo para as instrues LD(IY+d),n.
A instruo LD A,(BC) usada para se carregar o acumulador com o contedo de uma localizao de
memria, cujo endereo est contido no par de registros BC.
Os flags no so afetados na instruo LD A,(BC).
Exemplo:
LD A, (BC) - Cd Hex 0A
Admitindo-se que BC contenha 2040HEX e que no endereo 2040HEX da memria exista AA, significa que o
dado ou contedo AA ser carregado no acumulador.
A instruo LD A, (DE) idntica instruo LD A, (BC), exceto que utiliza o par de registros DE.
Os flags no so afetados na instruo LD A, (DE).
Tudo o que foi escrito para a instruo LD A, (BC) vlido de modo anlogo para a instruo LD A, (DE).
Experincia:
DATAPOOL ELETRNICA 54
MICROPROCESSADOR Z-80
8005 00 00
8006 LD A,(HL) 7E Carregar A com contedo de M
8007 LD H,(HL) 66 Carregar H com contedo de M
8008 LD B,(HL) 46 Carregar B com contedo de M
8009 LD C,(HL) 4E Carregar C com contedo de M
800A LD D,(HL) 56 Carregar D com contedo de M
800B LD E,(HL) 5E Carregar E com contedo de M
800C RETORNA CD MONITOR
800D AO E2 MONITOR
800E MONITOR 01 MONITOR
*OBS: M significa a posio de memria, cujo endereo apontado pelo par de registros HL.
2 Executar o programa e com auxlio da tecla E_REG examinar o contedo dos registros:
A = __ __
B = __ __
C = __ __
D = __ __
E = __ __
H = __ __
Discusso:
A primeira vista para um programador desatento, poderia parecer que o programa anterior carregaria 00 nos
registros A, B, C, D, E.
A realidade que o programa s carrega 00 no registro A . Isto porque na instruo do endereo 8007 foi
carregado o registro H com 00 e o registro H, juntamente com o registro L, endeream M. Ento o
endereo de M mudou de 9020 para 0020, que corresponde a um endereo da ROM onde existe 80. Esta
a razo pela qual os registros B, C, D e E contm 18.
EXPERINCIA:
DATAPOOL ELETRNICA 55
MICROPROCESSADOR Z-80
2 Executar o programa;
A = __ __
B = __ __
H = __ __
L = __ __
Discusso:
Novamente neste programa existe uma armadilha. Para o programador desatento pode parecer primeira
vista que o contedo do registro B seja BB e que o contedo da localizao de memria 8007 seja 06,
colocado quando da entrada do programa pelo teclado.
Entretanto, o programa usou a localizao de memria 8007, nela colocando 76, que a instruo HALT
que, quando executada manda o computador parar. Assim sendo as instrues entradas pelo teclado a
partir de 8007 no sero executadas.
Exemplo:
Admitindo-se que o endereo de memria 1905 contenha FF. significa que o byte de dados FF existente no
endereo 1905HEX ser carregado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja AA e que o contedo do par BC seja 1890HEX. significa que o byte
de dados AA existente no acumulador ser carregado na posio de memria com endereo 1890HEX
(apontada pelo par BC).
A instruo LD (DE), A idntica instruo LD (BC), A, exceto que utiliza o par de registros DE.
DATAPOOL ELETRNICA 56
MICROPROCESSADOR Z-80
Tudo o que foi escrito para a instruo LD (BC), A vlido de modo anlogo para a instruo LD (DE), A.
A instruo LD (nn),A de 3 bytes e usada para carregar o contedo do acumulador numa localizao de
memria endereada pelos contedos do 2 e 3 bytes da instruo (nn).
Exemplo:
Admitindo-se que o acumulador A contenha AA. significa que o contedo do acumulador AA ser carregado
na posio e memria, cujo endereo 1860HEX.
A instruo LD A,I de 2 bytes de e usada para carregar o contedo do registro do vetor de interrupo
no acumulador.
Exemplo:
LD A, I - Cd. Hex ED 57
Admitindo-se que o registro I contenha 4B. significa que o valor 4B ser carregado no acumulador.
Exemplo:
LD A, R Cd. Hex ED 5F
Admitindo-se que o registro R contenha 4B. significa que o valor 4B ser carregado no acumulador.
Exemplo:
LD I, A Cd. Hex ED 47
Admitindo-se que o registro A contenha 4B. significa que o valor 4B ser carregado no registro do vetor de
interrupo I.
LD R, A Cd. Hex ED 4F
DATAPOOL ELETRNICA 57
MICROPROCESSADOR Z-80
Admitindo-se que o acumulador contenha 0F, significa que o valor 0F ser carregado no registro de
restaurao de memria R.
De modo inverso, o contedo destes pares de registro podem ser guardados do mesmo modo num
endereo especificado de memria ou no alto do stack. Adicionalmente, o registro SP pode ser carregado
de HL, IX ou IY. O par de registros AF pode tambm ser empurrado para o alto do stack.
As operaes PUSH e POP do stack so tambm includas como parte das instrues do grupo de
transferncia de 16 bits de dados. Todas as operaes de stack. No existem instrues PUSH e POP para
registros de 8 bits.
As instrues PUSH ou POP de duplo-byte sempre executada sobre os pares de registros: AF, BC, DE,
HL, IX, IY.
Alm disso, EXCHANGE EXX tambm pode ser usada para trocar o contedo do conjunto de registros
correntes BC, DE e HL com o conjunto e registros inativos BC, DE e HL.
5.3.3 - INSTRUES LOAD PAR DE REGISTROS ESPECIFICADO COM DADOS IMEDIATOS LD DD,
NN
Estas instrues so de 3 bytes. Transferem o 2 e 3 byte da instruo (byte 1 e byte 2) para o par e
registro especificado.
A instruo LD dd,nn carrega seu byte 1 e 2 no par de registros especificado por dd, sendo que dd pode
especificar um dos seguintes pares: BC, DE, HL ou SP.
Exemplo:
Experincia:
DATAPOOL ELETRNICA 58
MICROPROCESSADOR Z-80
8004 DDEE EE
8005 DD
8006 LD HL, 21 Carregar HL com FF00
8007 FF00 00
8008 FF
8009 LD SP, 31 Carregar SP com 9000
800A 9000 00
800B 90
800C RETORNA CD MONITOR
800D AO E2 MONITOR
800E MONITOR 01 MONITOR
2 Executar o programa.
BC __ __ __ __;
DE __ __ __ __;
HL __ __ __ __;
SP __ __ __ __.
Exemplo:
A instruo LD IY,nn idntica instruo LD IX,nn exceto que utiliza o registro IY.
Tudo o que foi escrito para a instruo LD IX,nn vlido de modo anlogo para a instruo LD IY,nn.
Exemplo:
DATAPOOL ELETRNICA 59
MICROPROCESSADOR Z-80
As instrues LD dd,(nn) so de 4 bytes e carregam o par de registros especificado (dd) com os dados das
localizaes de memria endereada por nn, sendo que o contedo da localizao de memria endereada
pelos bytes 2 e 3 da instruo carregado no registro baixo do par e o contedo da localizao de memria
seguinte carregado no registro alto do par.
Exemplo:
Admitindo-se que o contedo do endereo de memria 1850 seja EE e que o contedo do endereo 1851
seja DD, significa que o registro E ser carregado com o contedo de 1850 (EE) e que o registro D ser
carregado com o contedo de 1851 (DD).
Exemplo:
Admitindo-se que o contedo do endereo de memria 1920 seja 11 e que o contedo do endereo 1921
seja 44, significa que o byte baixo de IX ser carregado com o contedo de 1920(11) e que o byte alto de IX
ser carregado com o contedo de 1921(44).
A instruo LD IY,(nn) idntica instruo LD IX,(nn) exceto que utiliza o registro de ndice IY.
Tudo o que foi escrito para a instruo LD IX,(nn) vlido de modo anlogo para a instruo LD IY,(nn).
Exemplo:
Admitindo-se que o contedo de HL seja FF00, significa que a posio de memria cujo endereo 1900
ser carregada com o contedo de L (00), enquanto que a posio de memria cujo endereo 1901 ser
carregada com o contedo de H (FF).
As instrues LD (nn),dd so de 4 bytes. Nestas instrues o contedo do registro baixo do par de registros
especificado por dd carregado na localizao de memria endereado pelos bytes 2 e 3 da instruo,
DATAPOOL ELETRNICA 60
MICROPROCESSADOR Z-80
enquanto que o contedo do registro alto do par de registros especificado por dd carregado na localizao
de memria seguinte endereada pelos bytes 2 e 3 da instruo.
Os flags no so afetados na instruo LD (nn),dd.
Nas instrues LD (nn),dd, dd pode especificar um dos seguintes pares de registro: BC, DE, HL, SP.
Exemplo:
Admitindo-se que o contedo de BC seja BBCC, significa que a posio de memria cujo endereo 1902
ser carregada com CC e a posio de memria do prximo endereo 1903 ser carregada com BB.
Exemplo:
Admitindo-se que o contedo de IX seja 5500, significa que a posio de memria cujo endereo 1908
ser carregada com o contedo de IX baixo, ou seja, 00, enquanto a posio de memria com endereo
1909 ser carregada com o contedo de IX alto, ou seja, 55.
A instruo LD (nn), IY idntica instruo LD (nn), IX, exceto que utiliza o registro IY.
Tudo o que foi escrito para a instruo LD (nn),IX vlido de modo anlogo para a instruo LD (nn),IY.
A instruo LD SP,HL de 1 byte. Nesta instruo, de 1 byte. Nesta instruo, o contedo do par de
registros HL carregado no registro apontador de stack (stack pointer).
Exemplo:
Admitindo-se que o contedo de HL seja 1900, significa que o stack pointer (SP) ser carregado com o
contedo de HL, ou seja, 1900.
A instruo LD SP, IX de 2 bytes. Nesta instruo o contedo do par de registros IX carregado no stack
pointer.
Exemplo:
DATAPOOL ELETRNICA 61
MICROPROCESSADOR Z-80
Admitindo-se que o contedo de IX seja 1820, significa que o stack pointer (SP) ser carregado com o
contedo de IX, ou seja, 1820.
A instruo LD SP, IY de 2 bytes. Nesta instruo o contedo do par de registros IY carregado no stack
pointer.
Exemplo:
Admitindo-se que o contedo de IY seja 1820, significa que o stack pointer (SP) ser carregado com o
contedo de IY, ou seja, 1820.
Nas tabelas a seguir pode-se obter diretamente os diversos cdigos HEX das instrues LDs.
DATAPOOL ELETRNICA 62
MICROPROCESSADOR Z-80
A B C D E H L
LD ..,(IX+d) DD7EXX DD46XX DD4EXX DD56XX DD5EXX DD66XX DD6EXX
LD ..,(IY+d) FD7EXX FD46XX FD4EXX FD56XX FD5EXX FD66XX FD6EXX
LD (IX+d),.. DD77XX DD70XX DD71XX DD72XX DD73XX DD74XX DD75XX
LD (IY+d),.. FD77XX FD70XX FD71XX FD72XX FD73XX FD74XX FD75XX
LD (IX+d),n DD36XXXX
LD (IY+d),n FD36XXXX
S Z H P/V N C
LD A,I ED 57 * * 0 * 0 -
LD A,R ED 5F * * 0 * 0 -
LD I,A ED 47 - - - - - -
LD R,A ED 4F - - - - - -
As instrues PUSH qq so de 1 byte exceto as instrues PUSH IX e PUSH IY que so de 2 bytes . Nestas
instrues o stack pointer decrementado e o contedo do registro alto de par de registros especificado
carregado na localizao de memria endereada pelo SP. O SP novamente decrementado e o contedo
do registro baixo do par de registros especificado carregado na localizao de memria corretamente
endereada pelo SP.
Na instruo PUSH qq, qq pode especificar qualquer um dos registros AF, BC, DE, HL, IX e IY.
Exemplo:
PUSH BC Cd Hex C5
Admitindo-se que o contedo de BC seja BBCC e que o SP contenha 1907, significa que o contedo do
registro alto do par (B) de registros BC, no caso BB, ser carregado na localizao de memria cujo
endereo 1 a menos que o SP, ento 1906 (1907-1). E o contedo do registro baixo do par (C) de
registros BC, no caso CC, ser carregado na localizao de memria cujo endereo 2 a menos que o
valor inicial do SP, ento, 1905 (1907 2).
DATAPOOL ELETRNICA 63
MICROPROCESSADOR Z-80
Experincia:
9006 __ __
9005 __ __
SP __ __
Discusso
O programa carrega o stack pointer com 9007. A seguir carrega o par de registros BC com BBCC e empurra
o contedo de BC no stack. Ento BB ir para o endereo 9006 e CC para o endereo 9005. Neste instante,
o SP dever mostrar 9005.
Instrues PUSH
BC DE HL AF IX IY
PUSH C5 D5 E5 F5 DDE5 FDE5
As instrues POP qq so de 1 byte exceto as instrues POP IX e POP IY que so de 2 bytes . Nestas
instrues o contedo da localizao de memria endereada pelo SP carregado no byte baixo do registro
qq e o SP incrementado. O contedo da localizao de memria agora endereada pelo SP carregada
no byte alto do registro qq, e o SP novamente incrementado.
Na instruo POP qq, qq pode especificar qualquer um dos registros AF, BC, DE, HL, IX e IY.
Exemplo:
Admitindo-se que o SP contenha 9006 e que o contedo dos endereos de memria 9006 e 9007 sejam
respectivamente 06 e 07, significa que o contedo do endereo 9006 (06) ser carregado no byte baixo do
IX e o contedo do endereo 9007 (07) ser carregado no byte alto do IX. O valor final do SP ser 9008.
DATAPOOL ELETRNICA 64
MICROPROCESSADOR Z-80
Experincia:
IX __ __
SP __ __
Discusso
O programa carrega atravs da instruo POP, o registro IX com os contedos dos endereos 9006 e 9007.
Assim, o valor lido em IX deve ser 0706. Ao final da instruo POP o SP dever indicar 9008.
Exemplo:
Admitindo-se que o contedo de DE seja DDEE e que o contedo de HL seja FF00, significa que aps a
execuo a instruo, HL conter DDEE e DE conter FF00.
DATAPOOL ELETRNICA 65
MICROPROCESSADOR Z-80
Experincia:
DE __ __
HL __ __
Discusso
O programa inicialmente carrega DE com DDEE e HL com FF00. Depois troca os contedos de DE com HL.
Assim sendo, no item 3 o contedo de DE deve ser FF00 e o contedo de HL deve ser DDEE.
Exemplo:
Admitindo-se que o contedo de AF seja DDEE e que o contedo de AF seja FF00, significa que aps a
execuo a instruo, AF conter DDEE e AF conter FF00.
A instruo EXX de 1 byte. Nesta instruo os contedos dos registros de finalidades gerais (BC, DE, HL)
so trocados com os contedos dos correspondentes registros alternados (BC, DE, HL).
Exemplo:
A instruo EX (SP), HL de 1 byte. Nesta instruo o contedo do registro L trocado com o contedo da
localizao de memria endereada pelo SP e o contedo do registro H trocado com o contedo da
localizao de memria seguinte endereada pelo SP.
Exemplo:
Admitindo-se que o SP seja 9006 e que na posio de memria 9006 contenha 00 e na posio 9007
contenha 99, sendo o contedo de HL=7722, significa que aps a execuo da instruo EX (SP), HL o par
de registros HL conter 9900 e na posio de memria 9006 conter 22, enquanto a posio de memria
9007 conter 77.
A instruo EX (SP), IX de 2 bytes. Nesta instruo o byte de ordem baixa do registro IX trocado com o
contedo da localizao de memria endereada pelo SP, enquanto o byte de ordem alta do registro IX
trocado com o contedo da localizao de memria seguinte endereada pelo SP.
Exemplo:
A instruo EX (SP), IY de 2 bytes. Nesta instruo o byte de ordem baixa do registro IY trocado com o
contedo da localizao de memria endereada pelo SP, enquanto o byte de ordem alta do registro IY
trocado com o contedo da localizao de memria seguinte endereada pelo SP.
Exemplo:
EX (SP), IY Cd Hex FD E3
Admitindo-se que o SP seja 9006 e que a posio de memria 9006 contenha 00 e 9007 contenha 18,
sendo o contedo do IY 9050, significa que aps a execuo da instruo EX (SP), IY o registro IY conter
8000 e a posio de memria 9006 conter 50, enquanto que a posio de memria 9007 conter 19.
Instrues de Troca
EX (SP), HL E3 EX DE, HL EB
EX (SP), IX DDE3 EX AF, AF 08
EX (SP), IY FDE3 EXX D9
DATAPOOL ELETRNICA 67
MICROPROCESSADOR Z-80
Todas as instrues de transferncia de bloco requerem o uso de trs pares de registros: BC, DE, HL.
BC usado como um contador de 16 bits. Isto significa que podem ser movidos automaticamente at
216=64 Kbytes. HL usado como apontador fonte, enquanto DE e usado como apontador destino.
Todas elas decrementam o registro BC com cada transferncia. A letra R no final dos mnemnicos indica
uma REPETIO automtica.
A instruo LDI de 2 bytes. Nesta instruo o contedo de memria endereada por HL carregado na
localizao de memria endereada por DE. Ento os pares de registro DE e HL so incrementados e o par
de registro BC decrementado.
Exemplo:
Admitindo-se que o contedo de HL seja 9000 e que o contedo de DE seja 8040 e o e BC 8031, enquanto
o endereo de memria 9000 contenha 24, significa que o contedo da localizao de memria endereada
por HL (endereo 9000), 24, carregado na localizao e memria endereada por DE (endereo 8040). A
seguir DE e HL so incrementados, indo respectivamente para 8041 e 9001 e BC decrementado, indo
para 9030.
Experincia:
DATAPOOL ELETRNICA 68
MICROPROCESSADOR Z-80
2 Executar o programa.
BC __ __ __ __
DE __ __ __ __
HL __ __ __ __
8040 __ __
9000 __ __
Discusso:
Inicialmente o programa carrega HL com 9000, DE com 8040, BC com 8031 e 9000 com 24. A seguir
manda executar uma instruo LDI. Assim sendo, no item 3: BC dever conter 8030, DE 8041, HL 9001,
8040 24 e 9000 24.
A instruo LDIR de 2 bytes. Nesta instruo o contedo de memria endereada por HL carregado na
localizao de memria endereada por DE. Ento os pares de registro DE e HL so incrementados e o par
de registro BC decrementado. Se BC 0, a instruo re-executada at que BC = 0.
Exemplo:
Admitindo-se que o contedo de HL seja 8050 e que o contedo de DE seja 8000 e BC 000A, enquanto os
endereos de memria a partir de 8050 at 8059 contenham os decimais respectivos desde 00 at 09,
significa que os 10 algarismos existentes a partir da posio de memria endereada por HL (valor inicial
8050) sero carregados em ordem crescente nas localizaes de memria correspondentes endereadas
por DE (valor inicial 8000). BC decrementado at zero.
Experincia:
8050 DADO 00
DATAPOOL ELETRNICA 69
MICROPROCESSADOR Z-80
8051 DADO 01
8052 DADO 02
8053 DADO 03
8054 DADO 04
8055 DADO 05
8056 DADO 06
8057 DADO 07
8058 DADO 08
8059 DADO 09
2 Executar o programa.
BC __ __ __ __
DE __ __ __ __
HL __ __ __ __
8000 __ __ 8005 __ __
8001 __ __ 8006 __ __
8002 __ __ 8007 __ __
8003 __ __ 8008 __ __
8004 __ __ 8009 __ __
Discusso:
Inicialmente o programa carrega HL 8050 (incio da fonte do bloco de dados), DE com 8000 (incio do
destino do bloco de dados) e BC com 000A (dimenso do bloco, composta de 000A = 1010 elementos). E a
partir do endereo 8050 foram carregados os algarismos decimais na ordem crescente, comeando de 00.
A seguir, o programa manda transferir o bloco de dados formado pelos dez algarismos decimais do
endereo inicial 8050 para o endereo inicial 8000 e assim em ordem crescente. Ento, no item 3 os
resultados obtidos so: BC (0000), DE (800A), HL (805A), 8000 (00), 8001 (01), 8002 (02), 8003 (03), 8004
(04), 8005 (05), 8006 (06), 8007 (07), 8008 (08), 8009 (09). Observe que aps a execuo da instruo
LDIR o programa foi perdido (neste caso).
A instruo LDD de 2 bytes. Nesta instruo o contedo de memria endereada por HL carregado na
localizao de memria endereada por DE. Ento os registro BC e DE e HL so todos decrementados.
Exemplo:
Admitindo-se que o contedo de HL seja 8061 e que o contedo de DE seja 8041 e BC 8031, enquanto os
endereos de memria a partir de 8061 contenha FF, significa que o contedo da localizao de memria
endereada por HL 8061 (FF) carregado na localizao de memria endereada por DE (endereo 8041).
A seguir DE, HL e BC so decrementados, indo respectivamente para 8040, 8060 e 8030.
DATAPOOL ELETRNICA 70
MICROPROCESSADOR Z-80
Experincia:
BC __ __ __ __
DE __ __ __ __
HL __ __ __ __
8061 __ __ 8041 __ __
Discusso:
Inicialmente o programa carrega HL com 8061, DE com 8041, BC com 8031 e 8061 com FF. A seguir
manda executar uma instruo LDD. Assim sendo no item 3: BC dever conter 8030, DE 8040, HL 8060,
8061 FF e 8041 FF.
A instruo LDDR de 2 bytes. Nesta instruo o contedo de memria endereada por HL carregado na
localizao de memria endereada por DE. Ento os registros DE, HL e BC so decrementados. Se BC
0 a instruo re-executada at que BC=0.
Exemplo:
LDDR Cd Hex ED B8
Admitindo-se que o contedo de HL seja 8059 e que o contedo de DE seja 8009 e BC 000A, enquanto os
endereos de memria a partir de 8050 at 8059 contenham os decimais respectivos desde 00 at 09,
Significa que os dez algarismos existentes a partir da posio de memria endereada por HL (8059 valor
inicial) sero carregados em ordem decrescente nas localizaes de memria correspondentes,
endereadas por DE (valor inicial 8009). BC decrementado at zero
DATAPOOL ELETRNICA 71
MICROPROCESSADOR Z-80
Experincia:
8050 DADO 00
8051 DADO 01
8052 DADO 02
8053 DADO 03
8054 DADO 04
8055 DADO 05
8056 DADO 06
8057 DADO 07
8058 DADO 08
8059 DADO 09
Nota: A instruo NOP (Nada faz) necessria, pois seno durante a execuo da instruo LDDR caso
esta estivesse no endereo 8009, este seria tambm o primeiro endereo a ser carregado com 09 e a
instruo LDDR no seria executada plenamente.
BC __ __ __ __
DE __ __ __ __
HL __ __ __ __
8000 __ __ 8005 __ __
8001 __ __ 8006 __ __
8002 __ __ 8007 __ __
8003 __ __ 8008 __ __
8004 __ __ 8009 __ __
DATAPOOL ELETRNICA 72
MICROPROCESSADOR Z-80
Discusso:
Inicialmente o programa carrega HL com 8059 (incio da fonte do bloco de dados), DE com 8009 (incio do
destino do bloco de dados) e BC com 000A (nmero de elementos do bloco). A partir do endereo 8050
forma carregados os algarismos decimais na ordem crescente (comeando de 00). A seguir, o programa
manda transferir o bloco de dados formado pelos dez algarismos decimais do endereo 8059 para o
endereo inicial 8009 e assim, em ordem decrescente. Ento, no item 3 os resultados obtidos so: BC
(0000), DE (7FFF), HL (804F), 8000 (00), 8001 (01), 8002 (02), 8003 (03), 8004 (04), 8005 (05), 8006 (06),
8007 (07), 8008 (08), 8009 (09). Observe que aps a execuo da instruo LDDR o programa foi perdido
(neste caso).
A instruo CPI de 2 bytes. Nesta instruo, o contedo da localizao de memria endereada pelo par
de registros HL subtrado do contedo do acumulador. Se o byte de memria for igual ao contedo de A, o
flag Z vai para 1; o resultado abandonado. O par de registros HL incrementado e o par de registros BC
decrementado.
Exemplo:
Admitindo-se que HL seja 8050 e que BC seja 0001 e A contenha 22, se o registro do flag F for colocado
em 00 e o contedo de 8050 em 22, significa que o contedo do endereo 8050 (22) subtrado do
contedo de A (22).
HL foi incrementado indo para 8051 e BC foi decrementado indo para 0000.
Experincia:
DATAPOOL ELETRNICA 73
MICROPROCESSADOR Z-80
BC __ __ __ __
HL __ __ __ __
A __ __
F __ __
Discusso:
O programa carrega inicialmente BC com 0001, HL com 8050, A com 22. Na posio de memria 8050
colocado 22 e o registro F colocado inicialmente em 00. Aps a execuo da instruo CPI os contedos
no item 4 devem ser:
BC=0000, HL=8051, A=22. O contedo de F deve ser tal que os valores binrios dos flags sejam:
S=0, Z=1, H=0, P/V=0, N=1 e C=0.
Por exemplo, o valor Hex 42 um dos que satisfaz.
A instruo CPI de 2 bytes. Nesta instruo, o contedo da localizao de memria endereada pelo par
de registros HL subtrado do contedo do acumulador e o resultado abandonado. Ento, o par de
registros HL incrementado e o par de registros BC decrementado. Se BC0 e A(HL), a instruo
executada novamente para outra comparao. A instruo executada repetidamente at que ou BC=0 ou
A=(HL).
Exemplo:
Admitindo-se que HL seja 8050 e que BC seja 0025 e A contenha FF, e nas posies de memria 8050
contenha (47), 8051 (52), 8052 (FF) e 8053 (90), se o registro de flag F for colocado em 00, significa que a
instruo inicialmente compara o contedo de 8050 (37), incrementa HL para 8051 e decrementa BC para
0024. Como BC0 e Acontedo de (HL), a instruo faz nova comparao, comparando o contedo de
A(FF) com o contedo de 8051 (52), incrementa HL para 8052 e decrementa BC para 0023 novamente.
BC0 e Acontedo de (HL) (no caso contedo de 8051 (52)), o processo de comparao se repete mais
uma vez e o contedo de A(FF) comparado com o contedo de 8052(FF). HL decrementado para 8053
e BC decrementado para 0022. Desta vez o contedo de A=contedo do endereo 8052. A execuo para.
Experincia:
BC __ __ __ __
HL __ __ __ __
A __ __
F __ __
Discusso:
O programa carrega inicialmente BC com 0025, HL com 8050, A com FF. Nas posies de memria a partir
de 8050 so colocados os dados do bloco de procura, sendo que no endereo 8052 o contedo FF. O
registro de flag colocado inicialmente em 00. Aps a execuo de CPIR os contedos no item 4 devem
ser: BC=0022, HL=8053, A=FF; o contedo de F deve ser tal que os valores binrios dos flags sejam S=0,
Z=1, H=0, P/V=1, N=1, C=0; por exemplo o valor Hex 46 um dos que satisfaz.
A instruo CPI de 2 bytes. Nesta instruo, o contedo da localizao de memria endereada pelo par
de registros HL subtrado do contedo do acumulador e o resultado abandonado. Os pares de registro
HL e BC so decrementados.
Exemplo:
Admitindo-se que HL seja 8051 e que BC seja 0001 e A contenha 45, se o registro do flag F for colocado
em 00 e o contedo de 8051 for 45, significa que o contedo do endereo 8050 (45) subtrado do
contedo de A (45).
A seguir, HL foi decrementado indo para 8050 e BC foi decrementado indo para 0000Hex.
Experincia:
8004 8051 51
8005 80
8006 LD A, 3E Carregar A com 45
8007 45 45
8008 CPD ED Comparar com decremento
8009 A9
800A RETORNA CD MONITOR
800B AO E2 MONITOR
800C MONITOR 01 MONITOR
BC __ __ __ __
HL __ __ __ __
A __ __
F __ __
Discusso:
O programa carrega inicialmente BC com 0001, HL com 8051, A com 45. Na posio de memria 8051
colocado 45 e o registro F colocado inicialmente em 00. Aps a execuo da instruo CPD os contedos
no item 4 devem ser:
BC=0000, HL=8050, A=45. O contedo de F deve ser tal que os valores binrios dos flags sejam:
S=0, Z=1, H=0, P/V=0, N=1 e C=0.
Por exemplo, o valor Hex 42 um dos que satisfaz.
A instruo CPDR de 2 bytes. Nesta instruo, o contedo da localizao de memria endereada pelo
par de registros HL subtrado do contedo do acumulador e o resultado abandonado. Ento, os pares de
registros HL e BC so decrementados. Se BC0 e A(HL), a instruo executada novamente para outra
comparao. A instruo executada repetidamente at que ou BC=0 ou A=(HL).
Exemplo:
Admitindo-se que HL seja 8053 e que BC seja 0025 e A contenha FF, e nas posies de memria 8050
contenha (47), 8051 (52), 8052 (FF) e 8053 (90), se o registro de flag F for colocado em 00, significa que a
instruo inicialmente compara o contedo de A (FF) com o contedo de 8053 (90), decrementa HL para
8052 e BC para 0024. Como BC0 e Acontedo de (HL), a instruo faz nova operao comparando o
contedo de A(FF) com o contedo de 8052 (FF), decrementa HL para 8051 e BC para 8052, a execuo
para.
Experincia:
8002 00
8003 LD HL, 21 Carregar HL com 8053
8004 8053 53
8005 80
8006 LD A, 3E Carregar A com FF
8007 FF FF
8008 CPDR ED Comparar bloco com
8009 B9 decremento repetindo
800A RETORNA CD MONITOR
800B AO E2 MONITOR
800C MONITOR 01 MONITOR
BC __ __ __ __
HL __ __ __ __
A __ __
F __ __
Discusso:
O programa inicialmente carrega BC com 0025, HL com 8053, A com FF. Nas posies de memria a partir
de 8050 so colocados os dados do bloco de procura, sendo que no endereo 8052 o contedo FF. O
registro de flag colocado inicialmente em 00. Aps a execuo de CPDR os contedos no tem 4 devem
ser: BC=0023, HL=8051, A=FF. O contedo de F deve ser tal que os valores binrios dos flags sejam S=0,
Z=1, H=0, P/V=1, N=1, C=0; por exemplo, o valor 46 um dos que satisfaz.
DATAPOOL ELETRNICA 77
MICROPROCESSADOR Z-80
DATAPOOL ELETRNICA 78
MICROPROCESSADOR Z-80
1. Operaes Aritmticas;
2. Manipulao de bit;
3. Incremento e Decremento;
4. Operaes Lgicas;
5. Operaes de Rotao e Deslocamento.
Neste texto as instrues de processamento de dados sero enquadradas nos quatro grupos seguintes.
Aps a obteno dos dois operandos, a funo designada executada, e o resultado vai para o registro A.
Os cdigos de condio so atuados.
As instrues ADD A,r so de um nico byte. Nestas instrues o contedo do acumulador somado ao
contedo do registro especificado. O resultado colocado no acumulador.
Exemplo:
Admitindo-se que o contedo de B seja 21 que o contedo de A seja 10, significa que o contedo de B (21)
ser somado ao contedo de A (10) e o resultado ficar em A.
Experincia:
DATAPOOL ELETRNICA 79
MICROPROCESSADOR Z-80
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa carrega inicialmente A com 10, B com 21 e o registro de flag colocado em 00 antes da
execuo do programa. Durante a execuo a instruo ADD A,B manda somar o contedo de A com B e
colocar o resultado em A. Assim os contedos no item devem ser:
A=31, B=21
A instruo ADD A,n de 2 bytes, nesta instruo o contedo do acumulador somado ao contedo do
segundo byte (byte 1) da instruo. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 10, significa que o contedo de n (50) ser somado ao contedo de
A (10) e o resultado 60 ficar em A.
Experincia:
DATAPOOL ELETRNICA 80
MICROPROCESSADOR Z-80
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
A instruo ADD A,(HL) de 1 byte. Nesta instruo, o contedo do acumulador somado ao contedo da
localizao de memria endereada pelo par de registros HL. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 10, o de HL seja 8022 e que o endereo de memria 8022 contenha
o dado 21, significa que o contedo (21) do endereo de memria indicado por HL (8022), ser somado ao
contedo de A (10) e o resultado 31 ficar em A.
Experincia:
A = __ __
8022 =__ __
DATAPOOL ELETRNICA 81
MICROPROCESSADOR Z-80
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa carrega inicialmente A com 10 e HL com 8022. O contedo de 8022 foi colocado 21 e o registro
de flag colocado em 00 antes da execuo do programa. Durante a execuo a instruo ADD A,(HL)
executada a soma do contedo (21) do endereo 8022 com o contedo de A (10) e o resultado colocado
em A. Assim sendo os contedos no item 4 podem ser:
A=31, 8022=21
A instruo ADD A, (IX+d) de 3 bytes. Nesta instruo o contedo do acumulador somado ao contedo
da localizao de memria endereada pelo contedo do registro IX mais o valor do deslocamento (offset)
contido no byte 2 da instruo. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 10, e de IX seja 8022 e que o endereo de memria 8020 contenha
85, significa que o contedo (85) do endereo de memria indicado por IX+03 (ou seja 8023), ser somado
ao contedo de A. O resultado ficar em A.
6.2.5 - INSTRUO SOMAR COM CARRY ACUMULADOR COM REGISTRO - ADC A,R
As instrues ADC A,r so de um nico byte. Nestas instrues o contedo acumulador somado ao
contedo do registro especificado e ao carry (c). O resultado colocado no acumulador.
Exemplo:
Admitindo-se que o contedo de B=24, e de A=33 e que C=1. significa que o contedo de B(24), ser
somado ao contedo de A (33) e ao carry C(1), e o resultado 58 ficar em A.
Experincia:
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa carrega inicialmente A com 33, B com 24 e C com 1. Durante a execuo do programa ADC A,
B manda somar o contedo de A com o contedo de B com o carry C e colocar o resultado em A. Assim
sendo os contedos no item 3 devem ser:
A=58 (33+24+1), B=24, os flags devero ser em binrio S=0, Z=0, H=0, P/V=0, N=0 e C=0 j que
aps soma e A mais B mais C no gerado um C=1. A figura a seguir, ilustra a soma binria.
0 0 1 1 0 0 1 1 A = 33 Hex
+ 0 0 1 0 0 1 0 0 B = 24 Hex
1 C= 1
SOMA 0 1 0 1 1 0 0 0 58 Hex
Experincia:
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa efetua a soma do valor colocado em A (33), com o valor colocado em B (E8), com o carry C(0).
O resultado colocado em A. O resultado deve ser A=1C e C=1, conforme ilustrado na figura a seguir.
DATAPOOL ELETRNICA 83
MICROPROCESSADOR Z-80
0 0 1 1 0 0 1 1 A = 33 Hex
+ 1 1 1 0 1 0 0 0 B = E8 Hex
1 C= 1
C1 0 0 0 1 1 1 0 0 C 11C
Exemplo de execuo da instruo ADC A,B. Observe na figura, que existe um carry no resultado. Portanto
ao final do programa A=1C e C=1.
6.2.6 - INSTRUO SOMAR COM CARRY ACUMULADOR COM DADO IMEDIATO - ADC A, N
A instruo ADC A,n de dois bytes. Nesta instruo o contedo do acumulador somado ao contedo do
segundo byte (byte 1) da instruo, e somado ao carry. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 10 e que C=1, significa que o contedo de n (30) ser somado ao
contedo de A (10) e ao carry (1). O resultado ficar em A.
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa efetua a soma do valor colocado em A (10) com o valor do byte 1 da instruo (30) com carry,
que no caso 0. O resultado colocado em A. Assim sendo no item 3 o resultado deve ser A=40 e os flags
devem ser S=0, Z=0, H=0, P/V=0, N=0 e C=0. Conforme foi falado, C deve ser zero no item 3. A figura a
seguir, mostra a operao executada por ADC A,30 em binrio.
0 0 0 1 0 0 0 0 A = 10 Hex
+ 0 0 1 1 0 0 0 0 B = 30 Hex
0 C= 0
C0 0 0 1 0 0 0 0 0 C 040
DATAPOOL ELETRNICA 84
MICROPROCESSADOR Z-80
A instruo ADC A, (HL) de 1 byte. Nesta instruo, o contedo do acumulador somado ao contedo da
localizao de memria endereada pelo par de registros HL somada tambm ao carry C. O resultado
guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 10, o de HL seja 8022, e que no endereo de memria 8022 exista
43, e que o carry C=1, significa que o contedo (43) do endereo de memria (8022) indicado por HL, ser
somado ao contedo de A (10) e somado tambm ao carry C=1. O resultado 54 ficar em A.
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa efetua a soma dos valores colocados em A (10); com o valor existente no endereo apontado
por HL (8022) que 43 com o carry que 1. O resultado colocado em A. No item 3 deve ser A=54 e C=1
conforme ilustrado na figura a seguir.
0 0 0 1 0 0 0 0 A = 10
+ 0 1 0 0 0 0 1 1 8022 = 43
1 C= 1
C0 0 1 0 1 0 1 0 0 C 054
DATAPOOL ELETRNICA 85
MICROPROCESSADOR Z-80
A instruo ADC A,(IX+d) de 3 bytes. Nessa instruo o contedo do acumulador somado ao contedo
da localizao e memria endereada pelo contedo do registro IX mais o valor do deslocamento (offset)
contido no byte 2 da instruo e somado ainda ao valor do carry C. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 20, o de IX 8020, e que no endereo de memria 8023 contenha 85,
e que C=0, significa que o contedo (85) do endereo de memria indicado por IX+03 (8023) ser somado
ao contedo de A e somado a C.
As instrues SUB A,r so de um nico byte. Nestas instrues o contedo do registro especificado
subtrado do acumulador. O resultado colocado no acumulador.
Exemplo:
Admitindo-se que o contedo de B seja 41 que o contedo de A seja 71, significa que o contedo de B (41)
ser subtrado do contedo de A (71) e o resultado 30 ficar em A.
Experincia:
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
DATAPOOL ELETRNICA 86
MICROPROCESSADOR Z-80
Discusso:
O programa efetua a subtrao no valor colocado em B(41) do valor colocado em A. O resultado deve ser
A=30 e C=0 conforme ilustrado na figura a seguir:
0 1 1 1 0 0 0 1 A = 71
- 0 1 0 0 0 0 0 1 B = 41
C0 0 0 1 1 0 0 0 0 C 030
O P no efetua esta operao conforme foi feita na figura anterior pelo mtodo convencional; mas sim por
um processo que leva aos mesmos resultados e que facilita a implementao atravs de circuitos. Tal
processo s efetua soma, necessitando portanto, usar somente circuitos somadores. Tal processo,
sabemos, o conhecimento processo do complemento de dois. A operao anterior executada pelo mtodo
do complemento de dois, fica:
0 1 1 1 0 0 0 1 A = 71
1 0 1 1 1 1 1 1 Compl. de 2 de B B = BF
C0 0 0 1 1 0 0 0 0 C 1 30
A=30, B=41 e os flags devero ser em binrio S=0, Z=0, H=0, P/H=0, N=1 e C=0. Assim sendo um
valor de F=22, por exemplo, satisfaz.
A instruo SUB A, n de 2 bytes, nesta instruo o contedo do segundo byte (byte 1) da instruo
subtrado do contedo do acumulador. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo n (31) ser subtrado do contedo de A (61) e o resultado 30 ficar em A.
Experincia:
A = __ __
DATAPOOL ELETRNICA 87
MICROPROCESSADOR Z-80
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa efetua a subtrao do byte 1 da instruo SUB A, 31 (31) do valor do acumulador (61). O
resultado colocado em A. Assim deve-se ter no item 4 A=30, C=0.
A instruo SUB A,(HL) de 1 byte. Nesta instruo, o contedo da localizao de memria endereada
pelo par de registros HL subtrado do contedo do acumulador. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 73, o de HL seja 8022 e que o endereo de memria 8022 contenha
o dado 53, significa que o contedo (53) do endereo de memria indicado por HL (8022), ser somado ao
contedo de A (73) e o resultado 20 ficar em A.
Experincia:
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
DATAPOOL ELETRNICA 88
MICROPROCESSADOR Z-80
No quadro anterior C = __
Discusso:
O programa efetua a subtrao do contedo (53) do endereo 8022 indicado por HL do contedo de A (73),
o resultado colocado em A. Assim deve-se tr no item 4 A=20, C=0.
A instruo SUB A, (IX+d) de 3 bytes. Nesta instruo o contedo de localizao de memria endereada
pelo contedo do registro IX mais o valor do deslocamento (offset) contido no byte 2 da instruo
subtrado do contedo do acumulador. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 75, o de IX seja 8020 e que no endereo de memria 8023
contenha 35, Significa que o contedo (35) do endereo de memria indicado por IX+30 (ou seja 8023) ser
subtrado do contedo de A. O resultado ficar em A.
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
DATAPOOL ELETRNICA 89
MICROPROCESSADOR Z-80
O programa anterior efetua a subtrao do contedo (35) do endereo 8023 apontado pelo registro de
ndice IX (8020) mais o valor do offset (03), do contedo de A (75). O resultado colocado em A. Assim
deve-se tr no item 4 A=20, C=0.
A instruo SUB A, (IY+d) idntica instruo SUB A, (IX+d), exceto que utiliza o registro de ndice IY.
Tudo o que foi escrito para a instruo SUB A, (IX+d) vlido de modo anlogo para a instruo SUB A,
(IY+d).
As instrues subtrao com carry so semelhantes s instrues de subtrao simples abordadas desde
os itens anteriores com a diferena que tambm o carry (emprstimo) levado m considerao. Toda
instruo do tipo subtrao simples tem a sua correspondente do tipo subtrao com carry. O leitor poder
ento fazer para as instrues subtrao com carry as mesmas consideraes feitas nos pargrafos
anteriores para subtrao simples.
Exemplo:
Admitindo-se que o contedo de B=24, e de A=36 e que C=1. Significa que o contedo de B (24), ser e o
contedo de C (1) so ambos subtrados do acumulador. O resultado (11) colocado no acumulador.
Experincia:
A = __ __
F = __ __ equivalente binrio:
DATAPOOL ELETRNICA 90
MICROPROCESSADOR Z-80
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa efetua a subtrao do valor colocado em B (24) e do valor de C (1), do valor do acumulador e
deve-se ter no item 3 A=11 e C=0.
Exemplo:
Admitindo-se que o contedo de B seja 41 e que o contedo de A seja 81, significa que o contedo de B
(01000001)2 far um E lgico com o contedo de A (10000001)2. O resultado (00000001)2 ficar em A.
Experincia:
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
DATAPOOL ELETRNICA 91
MICROPROCESSADOR Z-80
A instruo AND n de 2 bytes. Nesta instruo o contedo do segundo byte (byte 1) da instruo faz um
E lgico com o contedo do acumulador. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de A seja 61, significa que o contedo n (50) far um E lgico com o
contedo do acumulador (61) e o resultado 40 ficar em A.
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa faz um E lgico ente o valor 50 do bytes de dados imediato da instruo AND 50 e o valor do
acumulador (61). O resultado colocado no acumulador.
A instruo AND (HL) de 1 byte. Nesta instruo o contedo de localizao de memria endereada pelo
par de registro HL faz um E lgico com o contedo do acumulador.
Exemplo:
AND (HL) Cd. Hex A6
Admitindo-se que o contedo de A seja 73, o de HL 8022 e que no endereo de memria 8022 contenha 53,
significa que o contedo (53) far um E lgico com o contedo do acumulador (73) e o resultado (53) ficar
em A.
DATAPOOL ELETRNICA 92
MICROPROCESSADOR Z-80
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa faz um E lgico entre o valor 53h existente no endereo de memria (8022) apontado por HL
e o contedo do acumulador (73). O resultado 53h colocado no acumulador.
A instruo AND (IX+d) de 3 bytes. Nesta instruo o contedo da localizao de memria endereada
pelo contedo do registro IX mais o valor do deslocamento (offset) contido no byte 2 da instruo faz um E
lgico com o contedo do acumulador. O resultado guardado no acumulador.
Exemplo:
Experincia:
8005 80
8006 AND DD Fazer um E do
8007 (IX+03) A6 contedo do endereo
8008 03 8023 com A
8009 RETORNA CD MONITOR
800A AO E2 MONITOR
800B MONITOR 01 MONITOR
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa faz um E lgico entre o valor 35 existente no endereo 8023 apontado pelo valor do registro
IX (8020) somado ao valor do offset (03) do byte 2 da instruo AND (IX+03), e o contedo do acumulador
(75). O resultado 35 colocado no acumulador.
Exemplo:
OR B Cd. Hex B0
Admitindo-se que o contedo de B seja 41 e que o contedo de A seja 81, significa que o contedo de B
(01000001)2 far um OU lgico com o contedo de A (10000001)2. O resultado (11000001)2 ficar em A.
Existem sete instrues OR r, cujos cdigos Hex esto mostrados no final do captulo.
Experincia:
DATAPOOL ELETRNICA 94
MICROPROCESSADOR Z-80
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa faz um OU lgico entre o contedo de A (06) e o contedo de B (30). O resultado 36 colocado
em A
A instruo OR n de 2 bytes. Nesta instruo o contedo do segundo byte (byte 1) da instruo faz um
OU lgico com o contedo do acumulador. O resultado guardado no acumulador.
A instruo OR (HL) de 1 byte. Nesta instruo o contedo de localizao de memria endereada pelo
par de registro HL faz um OU lgico com o contedo do acumulador.
A instruo OR (IX+d) de 3 bytes. Nesta instruo o contedo da localizao de memria endereada pelo
contedo do registro IX mais o valor do deslocamento (offset) contido no byte 2 da instruo faz um OU
lgico com o contedo do acumulador. O resultado guardado no acumulador.
Exemplo:
Admitindo-se que o contedo de B seja 41 e que o contedo de A seja 81, significa que o contedo de A
(10000001)2 far a funo OU Exclusivo com o contedo de B (01000001)2. O resultado (11000000)2
ficar em A.
Existem sete instrues XOR r, cujos cdigos Hex esto mostrados no final do captulo.
Experincia:
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa efetua a operao ou exclusivo entre o contedo e A (81) e o contedo de B (41), o resultado
C0 colocado em A. No item 4 os resultados devem sr A=C0, B=41.
A instruo XOR n de 2 bytes. Nesta instruo o contedo do segundo byte (byte 1) da instruo faz um
OU Exclusivo com o contedo do acumulador. O resultado guardado no acumulador.
A instruo XOR (IX+d) de 3 bytes. Nesta instruo o contedo da localizao de memria endereada
pelo contedo do registro IX mais o valor do deslocamento (offset) contido no byte 2 da instruo faz um
OU Exclusivo com o contedo do acumulador. O resultado guardado no acumulador.
Exemplo:
CP B Cd. Hex B8
Admitindo-se que o contedo de B seja 27 e que o contedo de A seja 27, significa que o contedo de B
subtrado do contedo de A (o contedo de A no se altera) o resultado abandonado, porm os flags so
atuados.
DATAPOOL ELETRNICA 96
MICROPROCESSADOR Z-80
Experincia:
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa compara dois nmeros iguais existentes no registro B e no acumulador. Aps a execuo do
programa os contedos do acumulador permanecem inalterados. No item 4 os resultados devem ser A=27,
B=27. Os flags devem ter os valores S=0, Z=1, H=0, P/H=0, N=1, e C=0.
Observe em especial que Z=1 e C=0.
Experincia:
A = __ __
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa compara dois nmeros diferentes, sendo que o nmero existente no acumulador maior que
no nmero existente em B.
DATAPOOL ELETRNICA 97
MICROPROCESSADOR Z-80
Aps a execuo do programa, os contedos destes dois registros permanecem inalterados. No item 3 os
resultados devem ser A=27, B=26, Z=0 e C=0.
Experincia:
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa compara dois nmeros diferentes, sendo que o nmero existente no acumulador menor que o
nmero existente no registro B. Aps a execuo do programa, os contedos destes dois registros
permanecem inalterados. Nos item 3 e 4 os resultados devem ser A=27, B=28, Z=0 e C=1.
Exemplo:
Admitindo-se que o contedo de C seja 85h, significa que o contedo de C incrementado de 1 ficando
86h.
Experincia:
C = __ __
F = __ __ equivalente binrio:
DATAPOOL ELETRNICA 98
MICROPROCESSADOR Z-80
S Z H P/H N C
Discusso:
O programa efetua o incremento do contedo do registro C. No item 4 os resultados devem ser: C=86, S=1,
Z=0, H=0, P/H=0, N=0.
Nota: Como j estamos bastante familiarizados com os modos de endereamento, deste ponto em diante
no sero mais descritas as caractersticas principais de cada instruo em cada modo de endereamento.
Ser estudada cada instruo em um nico modo de endereamento, e sero citados os modos de
endereamentos possveis para a inst.
Exemplo:
Admitindo-se que o contedo de B seja 85h, significa que o contedo de B decrementado de 1 ficando
84h.
Experincia:
B = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
Discusso:
O programa efetua o decremento do contedo do registro B. No item 4 os resultados devem ser: B=84, S=1,
Z=0, H=0, P/H=0, N=1.
Exerccios de aplicao
Nos exerccios de aplicao so apresentados alguns programas teis. Programas estes freqentemente
encontrados em aplicaes.
Soluo:
700d =02BCh
900d =0384h
Experincia:
H = __ __
L = __ __
Discusso:
Este um caso da soma de nmeros maiores que 1 byte cada, em que o resultado foi guardado no par de
registro H e L. As primeiras cinco instrues carregam os registros. As instrues nos endereos 800A e
800B somam ao acumulador A que estava em zero, os 2 bytes menos significativos de 700 e 900,
respectivamente BCHex e 84Hex; Esta soma leva o flag de carry para 1.
A seguir feito um clear no acumulador (00). A instruo ADC A, B soma o byte superior de 700 (02) ao
acumulador e o flag.
A instruo LD H, A guarda esta soma os dois bytes superiores no registro H. Assim o programa termina
com a resposta guardada nos registros H e L do seguinte modo.
H = 06 Hex
L = 40 Hex
6.3 - FLAGS
Os flags so usados para detectar automaticamente condies especiais na ALU do Microprocessador.
Os flags do Z-80 j foram mencionados brevemente em captulos anteriores. Este captulo discute os flags
em detalhes. O formato do registro de flags F est mostrado na figura a seguir. Embora os flags existam
como flip flops individuais dentro do microprocessador, eles esto agrupados logicamente par simplificar
continuidade e restaurao dos flags para interrupes e outras funes.
No microcomputador SDM_Z80, todos esses flags podem serem observados utilizando a tecla flag.
Os flags Z, S, C e paridade (flag overflow) podem ser testados pelos jumps condicionais. O jump condicional
efetivamente testa os resultados das operaes aritmticas, lgicas, deslocamento, I/O ou outras operaes
precedentes o jump condicional. Os flags H e N so usados para facilitar as operaes aritmticas decimais
(ou BCD).
S Z H P/V N C
X X
Formato do registro de Flags F
Este flag associado principalmente com operaes aritmticas e shift. Embora seja levada a 0 pelas
instrues lgicas.
6.3.2 - FLAG - N
Este flag normalmente no usado pelo programador e usado pelo prprio Z-80 automaticamente durante
as operaes BCD.
Ser visto que na execuo de uma soma ou subtrao BCD necessrio uma instruo DAA (Ajuste
Decimal do Acumulador) para se obter os resultados BCD (ou decimais) corretos. Estas operaes DAA so
diferentes nos casos de ma adio e de uma subtrao. Esta diferena de execuo do DAA conseguida
atravs do valor de N. Pois o Flag N levado para 0 aps uma adio e levada para 1 aps uma
subtrao.
Acima foi falado no funcionamento bsico. bom frizar porm que outras instrues tambm afetam o flag
N, ento o leitor dever observar o comportamento do flag N em cada instruo.
O flag de paridade/overflow executa duas funes diferentes. Determinadas instrues atuam neste flag
dependendo do resultado da paridade. A paridade determinada pela contagem do nmero total de 1s no
resultado. Se o nmero de 1s mpar, a paridade ser levada para 0 ( a chamada paridade mpar). Se o
nmero de 1s par a paridade ser levada para 1.
Este flag (paridade) usado particularmente com instrues lgicas e de rotao, e tambm durante uma
operao de entrada de um dispositivo I/O.
Outro uso essencial do flag P/V o overflow. O overflow surge devido ao tamanho limitado dos registro e no
uso do processo do complemento de 2. Este flag detecta o fato que durante uma adio ou subtrao o
sinal o resultado mudado acidentalmente devido ao overflow do resultado no bit de sinal (bit 7).
O flag H indica um carry do bit 3 para o bit 4 durante uma operao aritmtica. usada principalmente em
operaes aritmtica. usada principalmente em operaes BCD. Em particular usada internamente
dentro microprocessador pela instruo DAA (Ajuste Decimal do Acumulador) afim de ajustar o resultado
para o valor decimal correto. Basicamente:
Observao:
O flag Z usado para indicar se o valor de um byte foi computado, ou est sendo transferido zero.
tambm usado com instrues de comparao para indicar uma igualdade e em outras funes.
No caso de uma operao resultando zero, ou uma transferncia de dados, o bit Z levado para 1 sempre
que o byte for zero. No caso de instrues de comparao, o bit Z levado para 1 quando ocorre a
igualdade e para 0 quando no ocorre. Basicamente:
O flag S reflete o valor do bit mais significativo de um resultado ou de um byte sendo transferido (bit 7). Na
forma de complemento de 2, o bit mais significativo (bit 7) usado para representar o sinal: 0 significa
nmero positivo e 1 nmero negativo. Por isso o bit 7 chamado bit de sinal. Basicamente:
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa efetua a soma dos nmeros 85 com 97. Observe que os nmeros entrados nos endereos
8001 e 8003 so encarados com os decimais e o resultado 182. De fato o resultado obtido de C=1 e o
resultado de A=82 combinados formam 182.
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa efetua a subtrao do nmero 10 do contedo do acumulador (98). O resultado ajustado para
decimal. No item 3 o resultado obtido deve ser A=88 e C=0 o que est correto pois 98 10 =88.
Experincia:
1 No programa anterior, substituir os contedos dos endereos 8001h e 8003h para respectivamente 91h
e 19h.
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa efetua a operao 91 19 e o resultado ajustado para decimal. No item 3 o resultado obtido
deve ser A=72 e C=0.
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
Experincia:
A = __ __
F = __ __ equivalente binrio:
S Z H P/H N C
No quadro anterior N = __
Discusso:
O programa efetua o complemento de 2 de 01. Assim sendo no item 3 os resultados devem ser A=FF, N=1
e os demais flags devem ser S=1, Z=0, H=1, P/V=0, C=1.
Experincia:
F = __ __ Equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa complementa o flag de carry. Antes do item 2 o flag C 0 e aps o programa deve ser 1. Assim
sendo a resposta no item 3 deve ser C=1.
Experincia:
2 Executar o programa a partir do endereo 8000h no modo passo a passo. Para isso, proceder do
seguinte modo:
DATAPOOL ELETRNICA 108
MICROPROCESSADOR Z-80
Pressionar as teclas:
- PC e entrar com o endereo 8000h se j estiver com esse endereo, somente tecle ENTER.
- PPASSO
Para que uma instruo seja executada, a tecla PPASSO dever ser pressionada.
Toda vez em que a tecla PPASSO for pressionada, verificar os flags, para isso utilize a tecla FLAGS.
3 Examinar os contedos de:
F = __ __ Equivalente binrio:
S Z H P/H N C
No quadro anterior C = __
Discusso:
O programa utiliza uma seqncia de instruo SCF e CCF. A instruo existente no endereo 8000 uma
SCF, o que significa que aps a execuo desta instruo o flag C dever ser 1 (o que comprovado em 2
a). A prxima instruo do programa est no endereo 8001 e uma CCF, o que significa que aps a
execuo desta instruo o flag C que foi levado a 1 na instruo anterior dever ser complementado, isto
, levada a 0 (o que comprovado em 2 b). A seguir a prxima instruo do programa est no endereo
8002 e novamente um CCF. O flag C que foi a 0 na instruo anterior dever ser complementado, isto ,
levado a 1 (o que comprovado em 2 c).
A instruo HALT de um byte e seu cdigo hexa 76Hex. Nesta instruo o P suspende a operao e
executa instrues NOP at que seja recebido uma interrupo ou RESET. Os flags no so afetados na
instruo HALT.
Nota: Uma propriedade importante da instruo antes das interrupes mascarveis serem aceitas pelo P
Z-80. Por exemplo seqncia de instrues:
EI
RETI
Instrues de Controle
S Z H P/V N C
NOP 00 - - - - - -
HALT 76 - - - - - -
CCF 3F - - ? - 0 *
SCF 37 - - 0 - 0 1
EI FB - - - - - -
DI F3 - - - - - -
IM O F3 - - - - - -
IM 1 ED 46 - - - - - -
IM 2 ED 5E - - - - - -
Exemplo:
Admitindo-se que o contedo de BC seja 1400 e que o contedo de HL seja 2300, significa que o contedo
de BC somado ao contedo de HL e o resultado 3700 colocado em HL.
Experincia:
BC = __ __ __ __
HL = __ __ __ __
F = __ __ Equivalente binrio
S Z H P/V N C
No quadro anterior H = __ N = __ C = __
Discusso:
O programa soma o contedo do par de registros BC (1400) ao contedo do par de registros HL (2300) e
coloca o resultado em HL. No item 3 os resultados devem ser: BC = 1400, HL = 3700. Os flags devem ter os
valores H = 0, N = 0 e C = 0. Observe que o flag C = 0 significa que no houve carry do bit 15 e H = 0
significa que no houve carry do bit 11.
Exemplo:
Admitindo-se que o contedo de BC seja 8800, que o contedo de HL seja 9900 e que C seja 1, significa
que o contedo de BC somado ao contedo de HL e a C, o resultado colocado em HL.
Experincia:
BC = __ __ __ __
HL = __ __ __ __
F = __ __ Equivalente binrio
S Z H P/V N C
Discusso:
O programa soma o contedo do par de registros BC (8800) ao contedo do par de registros HL (9900) e ao
flag C (1) e coloca o resultado em HL. No item 3 os resultados devem ser: BC = 8800, HL = 2101. Os flags
devem ter os valores H = 1, P/V = 1 e C = 1. O overflow ocorreu pois os bits mais significativos de BC e HL
so 1, significando nmeros negativos. A soma de dois nmeros negativos deve ser um numero negativo,
entretanto o resultado com 16 bits daria positivo. Ento P/V = 1.
Exemplo:
Admitindo-se que o contedo de BC seja 1798, que o contedo de HL seja 1999 e que C seja 1, significa
que o contedo de BC mais a flag C subtrado do contedo de HL e o resultado colocado em HL.
Experincia:
BC = __ __ __ __
HL = __ __ __ __
F = __ __ Equivalente binrio
S Z H P/V N C
Discusso:
O programa efetua a subtrao dos contedos de (BC + C) de HL e coloca o resultado em HL. No item 3 os
resultados devem ser: BC = 1798, HL = 0200. Os flags devem ter os valores H = 0, P/V = 0 e C = 0.
Exemplo:
Admitindo-se que o contedo de BC seja 1400, que o contedo de IX seja 2600. Significa que o contedo
de BC somado ao contedo de IX e o resultado colocado em IX.
Experincia:
BC __ __ __ __
IX __ __ __ __
F __ __ Equivalente binrio
S Z H P/V N C
No quadro anterior H = __ N = __ C = __
Discusso:
O programa efetua a soma do contedo de BC (1400) com o contedo de IX (2600) e coloca o resultado em
IX. No item 3 os resultados devem ser: BC = 1400, IX = 3A00. Os flags devem ter os valores H = 0, N = 0 e
C = 0.
Exemplo:
Experincia:
DE = __ __ __ __
Discusso:
O programa de um o contedo de DE (1985) e coloca o resultado em DE. No item 3 o resultado dever ser:
DE = 1986.
Exemplo:
Experincia:
DE = __ __ __ __
Discusso:
Exemplo:
Admitindo-se que o contedo de A seja 80, significa que o contedo de A sofrer uma rotao circular a
esquerda e o resultado ficar em A.
Experincia:
A = __ __
F = __ __ Equivalente binrio
S Z H P/V N C
No quadro anterior C = __
Discusso:
O programa coloca no acumulador o valor 80 Hex e, a seguir faz uma rotao circular esquerda, aps o
que o valor no acumulador ser 01 Hex e co valor de C ser 1. Ento no item 3 os resultados sero A = 01 e
C = 1.
Exemplo:
Admitindo-se que o contedo de A seja 01, significa que o contedo de A sofrer uma rotao circular a
esquerda atravs do carry e o resultado ficar em A.
Experincia:
A = __ __
F = __ __ Equivalente binrio
S Z H P/V N C
No quadro anterior C = __
Discusso:
O programa coloca no acumulador o valor 01 Hex e em C o valor 1, a seguir faz uma operao RLA.. Ento
no item 3 os resultados sero A = 03 e C = 0.
Exemplo:
Admitindo-se que o contedo de A seja 21, significa que o contedo de A sofrer uma rotao circular a
direita e o resultado ficar em A.
Exemplo:
Admitindo-se que o contedo de A seja 91 e o contedo de C seja 1, significa que o contedo de A sofrer
uma rotao circular a direita atravs do carry e o resultado ficar em A.
Exemplo:
Admitindo-se que o contedo de D seja 80, significa que o contedo de D sofrer uma rotao circular a
esquerda e o resultado ficar em D.
Experincia:
D = __ __
F = __ __ Equivalente binrio:
S Z H P/V N C
Discusso:
O programa coloca em D o valor 80 Hex e, a seguir faz uma operao RLC D. No item 3 os resultados
sero A = 01 e C = 1.
Exemplo:
Admitindo-se que o contedo de HL seja 9000 e que o contedo do endereo de memria 9000 seja 80,
significa que o contedo (80) do endereo de memria (9000) endereado por HL sofrer uma rotao
circular esquerda e o resultado fica na posio de memria 9000.
Exemplo:
Admitindo-se que o valor de IX seja 1982 que o contedo do endereo de memria seja 1985 seja 80,
significa que o contedo (80) do endereo de memria (1985) obtido pela soma de IX (1982) mais o valor do
offset (03) sofrer uma rotao circular esquerda e o resultado fica na posio de memria 1985.
Experincia:
8085 DADO 80
IX = __ __
9085 = __ __
F = __ __ Equivalente binrio:
S Z H P/V N C
Discusso:
O programa faz uma operao RLC (IX+d) com o contedo 80 do endereo de memria 9085. No item 3 os
resultados sero:
Exemplo:
RL A Cd. Hexa CB 17
Admitindo-se que o contedo de A seja 01 e o de C = 1, significa que o contedo de A sofrer uma rotao
circular a esquerda atravs do carry e o resultado ficar em A.
Experincia:
D = __ __
F = __ __ Equivalente binrio:
S Z H P/V N C
Discusso:
O programa coloca em no acumulador o valor 01 hex e em C o valor 1, a seguir faz a operao RLA. No
item 3 os resultados sero A=03 e os flags S = 0, Z = 0, H = 0, P/ V = 1, N = 0 e C =0.
Exemplo:
Exemplo:
Admitindo-se que o contedo de IX seja 1980 que o contedo de 1985 seja 01 e de C seja 1, significa que o
contedo (01) do endereo de memria (1985), obtido pela soma de IX (1980) cm o valor do offset (05),
rodado para a esquerda uma posio atravs do carry. O resultado fica na posio de memria 1985.
Experincia:
8085 DADO 80
IX = __ __
9085 = __ __
F = __ __ Equivalente binrio:
S Z H P/V N C
Discusso:
O programa faz uma operao RL (IX+d) com o contedo 01 do endereo de memria 9085. No item 3 os
resultados sero:
Exemplo:
SLA (HL)
SLA (IX+d)
SLA (IY+d)
Exemplo:
Admitindo-se que o contedo de A seja 80, significa que o contedo de A sofrer um deslocamento
aritmtico esquerda o resultado fica em A.
SRA (HL)
SRA (IX+d)
SRA (IY+d)
Exemplo:
Admitindo-se que o contedo de A seja 81, significa que o contedo de A sofrer um deslocamento
aritmtico direita e o resultado fica em A.
Exemplo:
Admitindo-se que o contedo de A seja AB, que HL contenha 1985 e o contedo de 1985 seja CD, significa
que os contedos do endereo 1985 (CD) e do acumulador (AB) sofrero a operao RLD os resultados
ficando em A e na posio de memria 1985.
Exemplo:
Admitindo-se que o contedo de A seja AB, que HL contenha 1985 e o contedo de 1985 seja CD, significa
que os contedos do endereo 1985 (CD) e do acumulador (AB) sofrero a operao RRD os resultados
ficando em A e na posio de memria 1985.
S Z H P/V N C
RRCA 0F - - 0 - 0 *
RLCA 07 - - 0 - 0 *
RRA 1F - - 0 - 0 *
RLA 17 - - 0 - 0 *
RLD ED6F * * 0 * 0 -
RRD ED67 * * 0 * 0 -
Exemplo:
Admitindo-se que o contedo de A seja 00, significa que o bit 0 de A ir para 1 aps a execuo da
instruo SET 0, A.
Experincia:
A = __ __ Equivalente binrio:
7 6 5 4 3 2 1 0
Discusso:
O programa carrega A com 00 a seguir manda setar o bit 0 de A. Assim no item 3 os resultados sero A =
01 e o bit 0 = 1.
Admitindo-se que o contedo de A seja FF, significa que o bit 0 de A ir para 0 aps a execuo da
instruo RES 0, A.
Experincia:
A = __ __ Equivalente binrio:
7 6 5 4 3 2 1 0
Discusso:
O programa carrega A com FF a seguir manda resetar o bit 0 de A. Assim no item 3 os resultados sero A =
FE e o bit 0 = 0.
Exemplo:
Admitindo-se que o contedo de A seja 00, significa que o bit 5 de A ser testado para ver se zero. Se for
zero o flag Z dever ir para 1 aps a execuo da instruo SET 0, A.
Experincia:
A = __ __
F = __ __ Equivalente binrio:
S Z H P/V N C
No quadro anterior Z = __ __
Discusso:
O programa carrega A com 00 a seguir manda testa o bit 5 de A. Ser for zero coloca 1 no flag Z, se for um
coloca 0 no flag Z. Assim no item 3 os resultados sero A=00 (permanece inalterado) e Z=1 j que o bit 5
zero.
RES 0 CB80 CB81 CB82 CB83 CB84 CB85 CB86 CB87 DDCBXX86 DDCBXX86
RES 1 CB88 CB89 CB8A CB8B CB8C CB8D CB8E CB8F DDCBXX8E DFCBXX8E
RES 2 CB90 CB91 CB92 CB93 CB94 CB95 CB96 CB97 DDCBXX96 FDCBXX96
RES 3 CB98 CB99 CB9A CB9B CB9C CB9D CB9E CB9F DDCBXX9E FDCBXX9E
RES 4 CBA0 CBA1 CBA2 CBA3 CBA4 CBA5 CBA6 CBA7 DDCBXXA6 FDCBXXA6
RES 5 CBA8 CBA9 CBAA CBAB CBAC CBAD CBAE CBAF DDCBXXAE FDCBXXAE
RES 6 CBB0 CBB1 CBB2 CBB3 CBB4 CBB5 CBB6 CBB7 DDCBXXB6 FDCBXXB6
RES 7 CBB8 CBB9 CBBA CBBB CBBC CBBD CBBE CBBF DDCBXXBE FDCBXXBE
SET 0 CBC0 CBC1 CBC2 CBC3 CBC4 CBC5 CBC6 CBC7 DDCBXXC6 DDCBXXC6
SET 1 CBC8 CBC9 CBCA CBCB CBCC CBCD CBCE CBCF DDCBXXCE DFCBXXCE
SET 2 CBD0 CBD1 CBD2 CBD3 CBD4 CBD5 CBD6 CBD7 DDCBXXD6 FDCBXXD6
SET 3 CBD8 CBD9 CBDA CBDB CBDC CBDD CBDE CBDF DDCBXXDE FDCBXXDE
SET 4 CBE0 CBE1 CBE2 CBE3 CBE4 CBE5 CBE6 CBE7 DDCBXXE6 FDCBXXE6
SET 5 CBE8 CBE9 CBEA CBEB CBEC CBED CBEE CBEF DDCBXXEE FDCBXXEE
SET 6 CBF0 CBF1 CBF2 CBF3 CBF4 CBF5 CBF6 CBF7 DDCBXXF6 FDCBXXF6
SET 7 CBF8 CBF9 CBFA CBFB CBFC CBFD CBFE CBFF DDCBXXFE FDCBXXFE
INSTRUES BRANCH
11 - INSTRUES BRANCH
11.1 - INTRODUO
As instrues JUMP, CALL e RET (RETURN) formam a classe de instrues do Z-80 chamada instrues
BRANCH (desvio ou transferncia), pois todas estas instrues alteram o fluxo seqencial normal do
programa.
Condicional ou Incondicional
Num Branch Incondicional o branch (transferncia) ocorre para um endereo especificado,
independentemente de qualquer outra condio.
J num Branch Condicional o microprocessador examina o status de algum flag no registro de flags para
determinar se o branch especificado para ser executado.
A operao JUMP causa uma transferncia do programa para outra localizao de memria e no guarda o
contedo do contador de programa para marcar onde o JUMP ocorreu.
A operao CALL executa a mesma ao que o JUMP, mas salva o contador de programa no stack de
memria, de modo que um retorno pode ser feito para o endereo seguinte ao da localizao CALL.
RET efetua a transferncia de volta para o endereo seguinte ao de CALL, puxando o STACK e
restaurando o PC (Contador de Programas).
A instruo JP nn de 2 bytes.
Nesta instruo o controle transferido para a instruo cujo endereo est especificado nos 3 (byte 2) e
2 (byte 1) bytes da corrente instruo.
Exemplo:
Admitindo-se que a instruo JP 1850 ocupe os endereos 1810, 1811 e 1812, significa que o controle ser
transferido para o endereo 1850 na execuo da instruo JP 1850.
Nestas instrues, se a condio especifica por cc verdadeira, o controle transferido para a instruo
cujo endereo est especificado por nn. De outro modo o controle continua na sua seqncia normal.
Exemplo:
Admitindo-se que a instruo JP C,1890 ocupe os endereos 1805, 1806 e 1807, significa que o controle vai
ser transferido para a instruo existente no endereo 1890 se houver carry, isto , se C=1 (o que pode ter
ocorrido devido a operaes executadas em instrues anteriores). Caso contrrio prxima instruo a ser
executada a do endereo 1808.
Condio Significado
Definida
NZ Se no zero
Z Se Zero
NC Se no carry
C Se carry
PO Se paridade mpar
PE Se paridade par
P Mais (positivo)
M Menos (negativo)
Experincia:
Discusso 1:
O programa carrega o registro A com 10, a seguir soma o contedo de B que 21 (o resultado 31 sem
carry), e manda efetuar um JUMP para o endereo 8010 se houver carry, o que no ocorre, ento o
microprocessador segue a seqncia normal executando a instruo HALT. Assim sendo no item 4 o LED
de HALT deve estar acesso.
Discusso 2:
O programa anterior foi modificado de modo que A carregado com o valor E0, o programa ento soma o
contedo de A (E0) com o contedo de B que 21 (o resultado 1 0 1 Hex, isto , 01 com um carry 1), a
seguir o programa manda efetuar um jump para o endereo 8010 se houver carry, o que ocorre, ento o
microprocessador desvia sua seqncia de execuo para o endereo 8010 onde encontra uma instruo
JUMP incondicional que manda o microprocessador voltar a executar novamente o programa a partir do
endereo 8000. Assim sendo neste caso a instruo HALT existe no endereo 8008 no executada, e no
item 5 o LED de HALT est apagado.
Experincia:
2 Executar o programa passo a passo de acordo com a tabela seguinte, registrando os valores pedidos.
1 vez 1 8002 3C
1 vez 2 8003 FE
1 vez 3 8005 CA
1 vez 4 8008 C3
1 vez 5 8002 3C
24 vezes 6 8002 3C
1 vez 7 8003 FE
1 vez 8 8005 CA
1 vez 9 8000 3E
Discusso:
O programa tem duas instrues jump, uma condicional, JP Z,8000, no endereo 8005 e outra
incondicional, JP 8002, no endereo 8008. O quadro anterior completo dever ser conforme mostrado na
figura a seguir.
01 9B 0
1 vez 3 8005 CA
01 9B 0
1 vez 4 8008 C3
01 9B 0
1 vez 5 8002 3C
07 9B 0
24 vezes 6 8002 3C
08 09 0
1 vez 7 8003 FE
08 4A 1
1 vez 8 8005 CA
1 vez 9 8000 3E
Exemplo:
JR 05 Cd. Hexa 18 05
Admitindo-se que a instruo JR 05 ocupe os endereos 1810 e 1811, significa que o controle ser
transferido para instruo existente no endereo 1817.
Assim como as instrues JUMPs que podem serem condicionais ou no, as instrues CALL tambm
podem serem condicionais ou no
Exemplo:
Admitindo-se que a instruo CALL c, 0624 esteja localizada partir de 1809, significa que a prxima
instruo aps CALL c, 0624 ser buscada no endereo 0624. A ltima instruo desta sub-rotina uma
instruo RET que faz o micro retornar a prxima instruo na seqncia aps CALL cc,0624 se a condio
carry for preenchida, caso contrrio o programa segue a seqncia normal de execuo no se desviando
para a sub-rotina.
Condio Significado
Definida
NZ Se no zero
Z Se Zero
NC Se no carry
C Se carry
PO Se paridade mpar
PE Se paridade par
P Mais (positivo)
M Menos (negativo)
Exemplo:
Admitindo-se que a instruo CALL 0624 esteja localizada no endereo 8004, significa que a prxima
instruo aps CALL 0624 ser buscada no endereo 0624. A ltima instruo desta sub-rotina uma
instruo RET que faz o micro retornar prxima instruo na seqncia aps CALL 0624).
Exemplo:
Assim como as instrues JUMPs e CALLs podem serem condicionais ou no, as instrues RETs
tambm podem serem condicionais ou no.
Exemplo:
Admitindo-se que a instruo RET NC esteja localizada partir de 1855, significa que o microprocessador
retornar ao endereo do PC obtido do stack se nas operaes efetuadas pelas instrues anteriores a RET
NC no houver carry. Caso contrrio o microprocessador continuar a executar as instrues na seqncia
normal.
Condio Significado
Definida
NZ Se no zero
Z Se Zero
NC Se no carry
C Se carry
PO Se paridade mpar
PE Se paridade par
P Mais (positivo)
M Menos (negativo)
Exemplo:
Admitindo-se que o contedo do endereo endereado por n seja 01, significa que o dado 01 ser
carregado no acumulador.
Experincia:
A = __ __
Discusso:
O programa l o portal 00hex que corresponde a primeira coluna do teclado, nesta primeira coluna esto as
teclas de 0 a 7, e quando pressionada qualquer uma dessas teclas, o seu cdigo aparecer no
acumulador.
Outras experincias de entrada sero abordadas com mais detalhes na apostila de experincias.
Exemplo:
Admitindo-se que o contedo do acumulador seja 01, significa que o dado 01 ser escrito no endereo 00hex
de E/S.
Experincia:
Discusso:
O programa transfere dado 01hex para o portal 00hex que corresponde ao endereo de comando do display.
Neste endereo quando se manda um dado o display interpreta esse dado como um comando, no caso
01hex o comando para limpar o display, note que a mensagem Executando... no aparece.
Outras experincias de sada sero abordadas com mais detalhes na apostila de experincias.
A B C D E H L
IN .., (C) ED78 ED40 ED48 ED50 ED58 ED60 ED68
OUT (C), .. ED79 ED41 ED49 ED51 ED59 ED61 ED69
S Z H P/V N C
IN A, (n) DBXX - - - - - -
OUT (n), A D3XX - - - - - -
INI EDA2 ? * ? ? 1 -
INIR EDB2 ? 1 ? ? 1 -
IND EDAA ? * ? ? 1 -
INDR EDBA ? 1 ? ? 1 -
OUTI EDA3 ? * ? ? 1 -
OUTR EDB3 ? 1 ? ? 1 -
OUTD EDAB ? * ? ? 1 -
OTDR EDBB ? 1 ? ? 1 -
INTERRUPES
13 INTERRUPES
13.1 - INTRODUO
Os microprocessadores em geral tem pinos que permitem a dispositivos perifricos interromperem o
programa principal para operaes de I/O.
O processo de interrupo um processo complexo que permite diversas situaes. Para facilitar o estudo
das interrupes, inclusive abordando a terminologia existente, ser feita uma analogia com a seguinte
seqncia de eventos:
2 O Telefone toca;
4 Diz-se Al para indicar que est pronto para manter a conversa com a pessoa que chamou;
8 Abre-se a porta;
No cenrio anterior, ocorreu participao em trs tarefas: Leitura do livro, falar ao telefone e falar com a
pessoa da porta. Em qualquer instante dedicou-se a uma nica tarefa. As transies entre as tarefas foram
gatilhadas por dois mecanismos:
As transies foram ninhadas, isto , ocorreu uma interrupo dentro do atendimento de uma outra
interrupo. A ao da tarefa corrente foi suspensa e todos recursos foram dedicados a tarefa interruptora,
at complet-la, depois da qual o trabalho na tarefa interrompida foi retomado.
a) interrupo ocorre;
d) O servio de interrupo comea e continua at que outra interrupo ocorra, ou o servio seja
completado.
As transies causadas pela concluso das tarefas so caracterizadas pelos seguintes eventos:
Existem alternativas para o cenrio anterior. Suponha-se que por alguma razo no se deseja ser
interrompido enquanto est lendo o livro. Ento ao invs de reconhecer a interrupo do telefone, ou da
campainha da porta, pode-se escolher ignor-las (mascar-las) e no atend-las. Neste estado inabilitou as
interrupes (disable interrupts). Naturalmente que existem interrupes que no podem ser ignoradas, tal
como o alarme de incndio do prdio. Tal interrupo pode ser denominada No mascarvel. Deve ser
atendida antes de prosseguir. As interrupes no mascarveis tem prioridade maior do que as interrupes
que podem ser ignoradas (interrupes mascarveis).
o processamento no qual todas transies das tarefas ocorrem totalmente controladas por software.
Como exemplos tem-se as chamadas e retornos de sub-rotinas (call e return). Um tcnica comumente
usada na implementao das transies controladas por software recenseamento (polling), no qual
verifica-se qual perifrico est pronto para o atendimento da sub-rotina em operao.
o processamento no qual as transies das tarefas ocorrem pelo controle de hardware, ou pelo controle
de software. Como exemplos de transies controladas por hardware tem-se as solicitaes de
interrupes, onde um circuito solicita, atravs de pinos especficos da CPU, um servio a ser atentido. Um
exemplo de transferncia controlada por software a transferncias de dados com acesso direto a
memria (DMA) onde observa-se o instante em que a CPU executa tarefas internas para acessar a
memria diretamente.
Uma interrupo mascarvel se o microprocessador, sob controle de software, pode ser instrudo a
ignor-la. O microprocessador Z-80 tem uma linha de interrupo mascarvel, designada por INT (pino 16).
Para o Z-80 a instruo para desabilitar todas interrupes mascarveis DI (Desabilitar Interrupes). E a
instruo que reativa o reconhecimento de interrupes mascarveis EI (Habilitar Interrupes), toda vez
que o pino INT (pino 17) for para nvel lgico baixo o valor atual do contador de programas (PC) salvo na
pilha e em seguida carregado com o valor 0038HEX , que o endereo para onde o microprocessador ir
procurar a prxima instruo. Quando se termina o servio de interrupo mascarvel, o PC carregado
com o valor do endereo salvo na pilha, quando ocorreu a interrupo.
Para no permitir que ocorra uma Interrupo mascarvel, deve-se utilizar a instruo DI.
A instruo inabilitar interrupes, DI, de um nico byte e seu cdigo hexa F3Hex. Nesta instruo os
flips-flops habilitadores de interrupes IFF1 e IFF2 so resetados, portanto desarmando todas interrupes
mascarveis.
Para permitir que o servio de interrupo mascarvel funcione devemos seguir os seguintes passos:
A instruo habilitar interrupes EI de um nico byte e seu cdigo hexa FBHex. Nesta instruo os flip-
flops habilitadores de interrupes IFF1 e IFF2 so setados, portanto habilitando as interrupes
mascarveis aps a instruo seguinte a EI.
Nota: Uma propriedade importante da instruo antes das interrupes mascarveis serem aceitas pelo
microprocessador Z-80.
EI
RETI
A instruo IM 0 de dois bytes e seu cdigo hexa ED 46 hex. Nesta instruo definido modo zero de
interrupo. Nesta condio, o dispositivo de interrupo deve inserir uma instruo no barramento de
dados para execuo, o primeiro byte da qual deve ocorrer durante o ciclo de reconhecimento de
interrupo.
A instruo IM 1 de dois bytes e seu cdigo hexa ED 56 hex. Nesta instruo definido o modo 1 de
interrupo. Nesta condio uma instruo RST 0038Hex ser executada quando ocorrer uma interrupo.
A instruo IM 2 de dois bytes e seu cdigo hexa ED 5E hex. Nesta instruo definido o modo 2 de
interrupo. Nesta condio quando ocorrer uma interrupo um byte de dados deve ser fornecido pelo
perifrico, byte este que usado como endereo de ordem baixa. O byte de ordem alta deste valor de
endereo obtido do registro I. Este valor de endereo aponta para um segundo endereo guardado na
memria, o qual carregado no contador de programa e inicia a execuo.
Quando ocorrer a interrupo atravs de uma descida para nvel lgico baixo no pino INT (pino 16) o
contador de programa ir para o servio de tratamento de interrupo posio 0038HEX.
No final da rotina de tratamento de interrupo mascarvel deve-se possuir a instruo RETI que faz o
retorno do servio de tratamento de interrupo mascarvel. A instruo REI facilita o encadeamento de
interrupes permitindo que dispositivos com maior prioridade suspendam o tratamento de rotinas de menor
prioridade. Esta instruo tambm desliga os flip-flops IFF1 e IFF2.
A primeira tarefa da rotina de servio de interrupo guardar o atual valor do contador de programas PC
na pilha (ou stack), de modo que a tarefa interrompida possa ter uma execuo retomada aps atendimento
da interrupo, lembrando-se que os registros no so salvos na pilha (ou stack). Quando se gerada a
interrupo geralmente inabilita-se interrupes mascarveis.
REQUISIO DO
SERVIO
RECONHECIMENTO
DA INTERRUPO
IDENTIFICAO DO
SERVIO
OUTROS DADOS
Toda vez que o pino NMI (pino 17) for para nvel lgico baixo o valor atual do contador de programas (PC)
salvo na pilha e em seguida carregado com o valor 0066HEX que o endereo para onde o
microprocessador ir procurar a prxima instruo. Quando se termina o servio de interrupo no-
mascarvel, o PC carregado com o valor do endereo salvo na pilha, quando ocorreu a interrupo.
Lembrando que esse tipo de interrupo no mascarvel, por tanto, toda vez que ocorrer essa
interrupo, o microprocessador sempre deixar de fazer o que estava fazendo e ir para a posio 0066HEX
.
No final da rotina de tratamento de interrupo no-mascarvel dever estar a instruo RETN que funciona
da mesma maneira que a instruo RET. O controle devolvido ao fluxo original do programa; no prximo
ciclo de mquina o processador pega a prxima instruo da localizao de memria apontada pelo PC.
Tambm o estado de IFF2 copiado em IFF1 para o estado que existia antes da aceitao de um NMI.
Experincias com interrupes no mascarvel no sero possveis de ser testadas, porque a interrupo
no- mascarvel utilizada pelo mdulo, para execuo de programa passo-a-passo.
Execute o programa a partir do endereo 8000h e aperte a tecla INTER no mdulo ou INT no carto e
observe o que acontece no display.
DISCUSSO:
O programa inicialmente habilita o microprocessador para operar no modo 1 de interrupo. Logo em
seguida, o acumulador carregado com o valor 00h e o micro fica em um loop infinido. Quando uma
interrupo gerada, o programa ir para o endereo 8008h. Chegando nesse endereo desabilitda
qualquer tipo de interrupo do tipo mascarvel, tem-se um atraso para retirar o bounce gerado pela
chave, o display limpo e o novo valor do acumulador mostrado no display. Em seguida, o acumulador
incrementado e novamente habilita-se o micro para permitir qualquer tipo de interrupo do tipo
mascarvel. No final, ocorre o retorno de interrupo e o micro volta novamente no loop infinito
aguardando com que uma nova interrupo seja gerada.
1Hz
10Hz
1kHz
100Hz
CN18
CN6
CN11
WR\
RD\
CLK
INT
BUZZER
5 Altere os contedos das seguintes posies de memria 8001h, 8002h e 8003 (HH:MM:SS)
colocando o equivalente em hexadecimal.
EX: Se quisermos acertar o relgio para comear apartir de 16:23:50, altere os valores das posies
de memria para os seguintes valores: 16d = 10h ; 23d = 17h ; 50d = 32h. logo:
Altere novamente as posies de memria com outros valores, execute o programa e observe o que
acontece.
A B C D E H L
LD ..,(IX+d) DD7EXX DD46XX DD4EXX DD56XX DD5EXX DD66XX DD6EXX
LD ..,(IY+d) FD7EXX FD46XX FD4EXX FD56XX FD5EXX FD66XX FD6EXX
LD (IX+d),.. DD77XX DD70XX DD71XX DD72XX DD73XX DD74XX DD75XX
LD (IY+d),.. FD77XX FD70XX FD71XX FD72XX FD73XX FD74XX FD75XX
LD (IX+d),n DD36XXXX
LD (IY+d),n FD36XXXX
S Z H P/V N C
LD A,I ED 57 * * 0 * 0 -
LD A,R ED 5F * * 0 * 0 -
LD I,A ED 47 - - - - - -
LD R,A ED 4F - - - - - -
Instrues PUSH
BC DE HL AF IX IY
PUSH C5 D5 E5 F5 DDE5 FDE5
Instrues POP
BC DE HL AF IX IY
POP C1 D1 E1 F1 DDE1 FDE1
Instrues de Troca
EX (SP), HL E3 EX DE, HL EB
EX (SP), IX DDE3 EX AF, AF 08
EX (SP), IY FDE3 EXX D9
Instrues de Controle
S Z H P/V N C
NOP 00 - - - - - -
HALT 76 - - - - - -
CCF 3F - - ? - 0 *
SCF 37 - - 0 - 0 1
EI FB - - - - - -
DI F3 - - - - - -
IM O ED 46 - - - - - -
IM 1 ED 56 - - - - - -
IM 2 ED 5E - - - - - -
RETI ED 4D - - - - - -
RETN ED 45 - - - - - -
S Z H P/V N C
RRCA 0F - - 0 - 0 *
RLCA 07 - - 0 - 0 *
RRA 1F - - 0 - 0 *
RLA 17 - - 0 - 0 *
RLD ED6F * * 0 * 0 -
RRD ED67 * * 0 * 0 -
RES 0 CB80 CB81 CB82 CB83 CB84 CB85 CB86 CB87 DDCBXX86 DDCBXX86
RES 1 CB88 CB89 CB8A CB8B CB8C CB8D CB8E CB8F DDCBXX8E DFCBXX8E
RES 2 CB90 CB91 CB92 CB93 CB94 CB95 CB96 CB97 DDCBXX96 FDCBXX96
RES 3 CB98 CB99 CB9A CB9B CB9C CB9D CB9E CB9F DDCBXX9E FDCBXX9E
RES 4 CBA0 CBA1 CBA2 CBA3 CBA4 CBA5 CBA6 CBA7 DDCBXXA6 FDCBXXA6
RES 5 CBA8 CBA9 CBAA CBAB CBAC CBAD CBAE CBAF DDCBXXAE FDCBXXAE
RES 6 CBB0 CBB1 CBB2 CBB3 CBB4 CBB5 CBB6 CBB7 DDCBXXB6 FDCBXXB6
RES 7 CBB8 CBB9 CBBA CBBB CBBC CBBD CBBE CBBF DDCBXXBE FDCBXXBE
SET 0 CBC0 CBC1 CBC2 CBC3 CBC4 CBC5 CBC6 CBC7 DDCBXXC6 DDCBXXC6
SET 1 CBC8 CBC9 CBCA CBCB CBCC CBCD CBCE CBCF DDCBXXCE DFCBXXCE
SET 2 CBD0 CBD1 CBD2 CBD3 CBD4 CBD5 CBD6 CBD7 DDCBXXD6 FDCBXXD6
SET 3 CBD8 CBD9 CBDA CBDB CBDC CBDD CBDE CBDF DDCBXXDE FDCBXXDE
SET 4 CBE0 CBE1 CBE2 CBE3 CBE4 CBE5 CBE6 CBE7 DDCBXXE6 FDCBXXE6
SET 5 CBE8 CBE9 CBEA CBEB CBEC CBED CBEE CBEF DDCBXXEE FDCBXXEE
SET 6 CBF0 CBF1 CBF2 CBF3 CBF4 CBF5 CBF6 CBF7 DDCBXXF6 FDCBXXF6
SET 7 CBF8 CBF9 CBFA CBFB CBFC CBFD CBFE CBFF DDCBXXFE FDCBXXFE
A B C D E H L
IN .., (C) ED78 ED40 ED48 ED50 ED58 ED60 ED68
OUT (C), .. ED79 ED41 ED49 ED51 ED59 ED61 ED69
S Z H P/V N C
IN A, (n) DBXX - - - - - -
OUT (n), A D3XX - - - - - -
INI EDA2 ? * ? ? 1 -
INIR EDB2 ? 1 ? ? 1 -
IND EDAA ? * ? ? 1 -
INDR EDBA ? 1 ? ? 1 -
OUTI EDA3 ? * ? ? 1 -
OUTR EDB3 ? 1 ? ? 1 -
OUTD EDAB ? * ? ? 1 -
OTDR EDBB ? 1 ? ? 1 -
FLR