Você está na página 1de 156

MICROPROCESSADOR Z-80

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

2 - MICROPROCESSADOR Z-80 .................................................................................................................. 16


2.1 - INTRODUO ........................................................................................................................................ 16
2.2 - DIAGRAMA DE BLOCOS ....................................................................................................................... 16
2.3 - ESTRUTURA INTERNA DO MICROPROCESSADOR Z-80 ................................................................. 18
2.4 - REGISTROS DE FINALIDADES GERAIS.............................................................................................. 18
2.5 - F / F REGISTRO DE FLAG ................................................................................................................. 19
2.6 - REGISTROS DE FINALIDADES ESPECIAIS ........................................................................................ 20
2.7 - PC CONTADOR DE PROGRAMAS .................................................................................................... 20
2.8 - APONTADOR DE STACK....................................................................................................................... 20
2.9 - IX E IY REGISTROS DE NDICE......................................................................................................... 21
2.10 - I REGISTRO DO VETOR DE INTERRUPO ................................................................................. 21
2.11 - R REGISTRO DE RESTAURAO DE MEMRIA .......................................................................... 22
2.12 PINAGEM DO Z-80 .............................................................................................................................. 23
2.13 - A0 A15 VIA DE ENDEREOS .......................................................................................................... 24
2.14 - D0 D7 VIA DE DADOS ..................................................................................................................... 24
2.15 - M1 CICLO 1 DE MQUINA (PINO 27) .............................................................................................. 24
2.16 - MREQ PEDIDO DE MEMRIA (PINO 19) ........................................................................................ 24
2.17 - IORQ PEDIDO DE ENTRADA/SADA (PINO 20) .............................................................................. 24
2.18 - RD LEITURA DE MEMRIA OU DISPOSITIVO DE E/S (PINO 21) ................................................. 24
2.19 - WR ESCRITA DE MEMRIA OU DISPOSITIVO DE E/S (PINO 22)................................................ 24
2.20 - RFSH REFRESH / RESTAURAO (PINO 28)................................................................................ 24
2.21 - HALT ESTADO PARADO (PINO 18)................................................................................................. 25
2.22 - WAIT ESPERA (PINO 24).................................................................................................................. 25
2.23 - INT INTERRUPO MASCARVEL (PINO 16) ............................................................................... 25
2.24 - NMI INTERRUPO NO-MASCARVEL (PINO 17) ..................................................................... 25
2.25 - SINAIS DO Z-80 .................................................................................................................................... 25
2.26 - BUS DE ENDEREOS ......................................................................................................................... 25
2.27 - BUS DE DADOS ................................................................................................................................... 25
2.28 - SINAIS DO BUS DE CONTROLE......................................................................................................... 25
2.29 - SINAIS DE MEMRIA .......................................................................................................................... 26
2.30 - SINAIS DE ENTRADA / SAIDA............................................................................................................. 26
2.31 - OUTROS SINAIS DO MICROPROCESSADOR................................................................................... 26
2.32 - SINAIS RELACIONADOS COM INTERRUPO ................................................................................ 27
2.33 - TEMPORIZAO DO MICROPROCESSADOR .................................................................................. 28
2.34 - CICLO DE BUSCA DO CDIGO DE OPERAO OU CICLO - M1.................................................... 28
2.35 - CICLOS DE LEITURA E ESCRITA DE DADOS NA MEMRIA .......................................................... 31
2.36 - CICLOS DE LEITURA E ESCRITA DE I/O........................................................................................... 32
2.37 - CICLO DE REQUISIO / RECONHECIMENTO DE BUS ................................................................. 34
2.38 - CICLO DE REQUISIO / RECONHECIMENTO DE INTERRUPO............................................... 34
2.39 - CICLO DE REQUISIO DE INTERRUPO NO MASCARVEL.................................................. 35
2.40 - SADA DA INSTRUO HALT ............................................................................................................. 36
2.41 - ESTADOS WAIT DE MEMRIA OU I/O............................................................................................... 36
3 - INSTRUES DO Z-80 ............................................................................................................................. 38
3.1 - INTRODUO ........................................................................................................................................ 38
3.2 - CLASSES DE INSTRUES ................................................................................................................. 38
3.3 - INSTRUES DE TRANSFERNCIA DE DADOS ............................................................................... 38
3.4 - INSTRUES DE PROCESSAMENTO DE DADOS............................................................................. 38
3.5 - INSTRUES BRANCH......................................................................................................................... 38
3.6 - INSTRUES DE CONTROLE.............................................................................................................. 38
3.7 - INSTRUES DE ENTRADA / SADA................................................................................................... 39
3.8 - CONJUNTO DE INSTRUES DO Z-80............................................................................................... 39

4 - FORMATO DAS INSTRUES ................................................................................................................ 41


4.1 - INTRODUO ........................................................................................................................................ 41
4.2 - MODOS DE ENDEREAMENTO........................................................................................................... 41
4.3 - ENDEREAMENTO IMPLCITO ............................................................................................................ 41
4.4 - ENDEREAMENTO IMEDIATO ............................................................................................................. 42
4.5 - ENDEREAMENTO IMEDIATO ESTENDIDO....................................................................................... 42
4.6 - ENDEREAMENTO DE REGISTRO...................................................................................................... 43
4.7 - ENDEREAMENTO INDIRETO DE REGISTRO ................................................................................... 43
4.8 - ENDEREAMENTO ESTENDIDO ......................................................................................................... 44
4.9 - ENDEREAMENTO MODIFICADO DE PGINA ZERO........................................................................ 45
4.10 - ENDEREAMENTO RELATIVO........................................................................................................... 45
4.11 - FORMATO DA INSTRUO DE ENDEREAMENTO RELATIVO E ESQUEMA DE SUA
IMPLEMENTAO.......................................................................................................................................... 46
4.12 - ENDEREAMENTO INDEXADO.......................................................................................................... 46
4.13 - ENDEREAMENTO DE BIT................................................................................................................. 47

5 - INSTRUES DE TRANSFERNCIA DE DADOS .................................................................................. 50


5.1 - INTRODUO ........................................................................................................................................ 50
5.2.1 - TRANSFERNCIAS DE 8 BITS DE DADOS....................................................................................... 50
5.2.2 - INSTRUES DE TRANSFERNCIA DIRETA DE 8 BITS ENTRE REGISTROS LD R, R ..... 50
5.2.3 - INSTRUES LOAD IMEDIATAS OU LD R,N................................................................................. 50
5.2.4 - INSTRUES LOAD REGISTRO DE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDIRETAMENTE - LD R, (HL) ................................................................................................................... 52
5.2.5 - INSTRUES LOAD REGISTRO DE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDEXADAMENTE LD R, (IX+D) .............................................................................................................. 52
5.2.6 - INSTRUES LOAD LOCALIZAO DE MEMRIA ENDEREADA INDIRETAMENTE DE UM
REGISTRO R LD (HL),R............................................................................................................................ 53
5.2.7 - INSTRUES LOAD LOCALIZAO DE MEMRIA ENDEREADA INDEXADAMENTE DE UM
REGISTRO R LD (IX + D),R ...................................................................................................................... 53
5.2.8 - INSTRUES LOAD LOCALIZAO DE MEMRIA ENDEREADA INDEXADAMENTE DE UM
REGISTRO R LD (IY+D), R ....................................................................................................................... 53
5.2.9 - INSTRUO LOAD IMEDIATAMENTE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDIRETAMENTE LD (HL), N.................................................................................................................... 53
5.2.10 - INSTRUO LOAD IMEDIATAMENTE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDEXADAMENTE LD (IX+D), N .............................................................................................................. 54
5.2.11 - INSTRUO LOAD IMEDIATAMENTE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDEXADAMENTE LD (IY+D),N ............................................................................................................... 54
5.2.12 - INSTRUO LOAD ACUMULADOR DE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDIRETAMENTE PELO PAR DE REGISTROS BC LD A,(BC)............................................................... 54
5.2.13 - INSTRUO LOAD ACUMULADOR DE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDIRETAMENTE PELO PAR DE REGISTROS DE LD A,(DE)............................................................... 54
5.2.14 - INSTRUO LOAD ACUMULADOR DE UMA LOCALIZAO DE MEMRIA - LD A, (NN)........ 56
5.2.15 - INSTRUO LOAD LOCALIZAO DE MEMRIA ENDEREADA INDIRETAMENTE, DO
ACUMULADOR LD (BC), A ....................................................................................................................... 56
5.2.16 - INSTRUO LOAD LOCALIZAO DE MEMRIA ENDEREADA INDIRETAMENTE, DO
ACUMULADOR LD (DE), A ....................................................................................................................... 56
5.2.17 - INSTRUO LOAD UMA LOCALIZAO DE MEMRIA DIRETAMENTE ENDEREADA, DO
ACUMULADOR LD (NN), A ....................................................................................................................... 57
5.2.18 - INSTRUO LOAD ACUMULADOR, DO REGISTRO DE INTERRUPO I LD A, I ................ 57
5.2.19 - INSTRUO CARREGAR ACUMULADOR, DO REGISTRO DE RESTAURAO DE MEMRIA
LD A, R.......................................................................................................................................................... 57
5.2.20 - INSTRUO LOAD REGISTRO DO VETOR DE INTERRUPO DO ACUMULADOR LD I, A 57
5.2.21 - INSTRUO LOAD REGISTRO DE RESTAURAO DA MEMRIA DO ACUMULADOR LD R,
A ..................................................................................................................................................................... 57
5.3 - TRANSFERNCIA DE 16 BITS DE DADOS .......................................................................................... 58
5.3.1 - OPERAES DE STACK.................................................................................................................... 58
5.3.2 - INSTRUES DE TROCA .................................................................................................................. 58
5.3.3 - INSTRUES LOAD PAR DE REGISTROS ESPECIFICADO COM DADOS IMEDIATOS LD DD,
NN................................................................................................................................................................... 58
5.3.4 - INSTRUO LOAD REGISTRO IX COM DADOS IMEDIATOS LD IX, NN ..................................... 59
5.3.5 - INSTRUO LOAD REGISTRO IY COM DADOS IMEDIATOS LD IY, NN .................................. 59
5.3.6 - INSTRUO LOAD REGISTRO HL DA LOCALIZAO DE MEMRIA ENDEREADA POR NN
LD HL, (NN)................................................................................................................................................... 59
5.3.7 - INSTRUES LOAD PAR DE REGISTROS DE LOCALIZAES DE MEMRIA ENDEREADAS
POR NN LD DD, (NN) ................................................................................................................................ 60
5.3.8 - INSTRUO LOAD REGISTRO DE NDICE IX DE LOCALIZAES DE MEMRIA
ENDEREADAS POR NN LD IX, (NN) ..................................................................................................... 60
5.3.9 - INSTRUO LOAD REGISTRO DE NDICE IY DE LOCALIZAES DE MEMRIA
ENDEREADAS POR NN LD IY, (NN) ..................................................................................................... 60
5.310 - INSTRUO LOAD LOCALIZAES DE MEMRIAS ENDEREAAS POR NN, DE HL LD (NN),
HL ................................................................................................................................................................... 60
5.3.11 - INSTRUES LOAD LOCALIZAES DE MEMRIA ENDEREADOS POR (NN), DE PAR DE
REGISTROS LD (NN), DD......................................................................................................................... 60
5.3.12 - INSTRUO LOAD LOCALIZAES DE MEMRIA ENDEREADAS POR NN DE IX LD (NN),
IX .................................................................................................................................................................... 61
5.3.13 - INSTRUO LOAD LOCALIZAES DE MEMRIA ENDEREADAS POR NN DE IY LD (NN),
IY .................................................................................................................................................................... 61
5.3.14 - INSTRUO LOAD STACK POINTER DE HL LD SP, HL .......................................................... 61
5.3.15 - INSTRUO LOAD STACK POINTER DE IX LD SP, IX ............................................................ 61
5.3.16 - INSTRUO LOAD STACK POINTER DE IY LD SP, IY ............................................................ 62
5.3.17 - INSTRUES PUSH PAR DE REGISTROS NO STACK PUSH QQ ......................................... 63
5.3.18 - INSTRUES POP PAR DE REGISTROS NO STACK POP QQ .............................................. 64
5.3.19 - INSTRUES DE TROCA ................................................................................................................ 65
5.3.20 - INSTRUO EXCHANGE OS REGISTROS HL E DE EX DE, HL ............................................. 65
5.3.21 - INSTRUO EXCHANGE OS REGISTROS AF E AF EX AF, AF............................................. 66
5.3.22 - INSTRUO EXCHANGE REGISTROS ALTERNADOS EXX ................................................... 66
5.3.23 - INSTRUO EXCHANGE HL COM O ALTO DO STACK EX (SP), HL..................................... 67
5.3.24 - INSTRUO EXCHANGE IX COM O ALTO DO STACK EX (SP), IX ........................................ 67
5.3.25 - INSTRUO EXCHANGE IY COM O ALTO DO STACK EX (SP), IY ........................................ 67
5.4 - TRANSFERNCIAS DE BLOCO E PROCURA DE BLOCO.................................................................. 68
5.4.1 - INSTRUO LOAD BLOCO COM INCREMENTO LDI................................................................. 68
5.4.2 - INSTRUO LOAD BLOCO COM INCREMENTO LDIR .............................................................. 69
5.4.3 - INSTRUO LOAD BLOCO COM INCREMENTO LDD ............................................................... 70
5.4.4 - INSTRUO LOAD BLOCO COM DECREMENTO REPETINDO LDDR ..................................... 71
5.4.5 - INSTRUO COMPARAR COM INCREMENTO CPI ................................................................... 73
5.4.6 - INSTRUO COMPARAR COM INCREMENTO REPETINDO CPIR .......................................... 74
5.4.7 - INSTRUO COMPARAR COM INCREMENTO CPD ................................................................. 75
5.4.8 - INSTRUO COMPARAR BLOCO COM DECREMENTO REPETINDO CPDR.......................... 76

6 - INSTRUES DE PROCESSAMENTO DE DADOS................................................................................ 79


6.1 - INTRODUO ........................................................................................................................................ 79
6.2 - GRUPOS LGICOS E ARITMTICOS DE 8 BITS ................................................................................ 79
6.2.1 - INSTRUES SOMAR ACUMULADOR COM REGISTRO - ADD A,R ........................................... 79
6.2.2 - INSTRUO SOMAR ACUMULADOR COM DADO IMEDIATO - ADD A, N .................................. 80
6.2.3 - INSTRUO SOMAR ACUMULADOR COM LOCALIZAO DE MEMRIA ENDEREADA
INDIRETAMENTE - ADD A, (HL).................................................................................................................. 81
6.2.4 - INSTRUO SOMAR ACUMULADOR COM LOCALIZAO DE MEMRIA ENDEREADA
INDEXADAMENTE - ADD A, (IX+D) ............................................................................................................ 82
6.2.5 - INSTRUO SOMAR COM CARRY ACUMULADOR COM REGISTRO - ADC A,R ...................... 82
6.2.6 - INSTRUO SOMAR COM CARRY ACUMULADOR COM DADO IMEDIATO - ADC A, N ........... 84
6.2.7 - INSTRUO SOMAR COM CARRY ACUMULADOR COM LOCALIZAO DE MEMRIA
ENDEREADA INDIRETAMENTE - ADC A, (HL) ....................................................................................... 85
6.2.8 - INSTRUO SOMAR COM CARRY ACUMULADOR COM LOCALIZAO DE MEMRIA
ENDEREADA INDEXADAMENTE - ADC A, (IX+D) .................................................................................. 86
6.2.9 - INSTRUES SUBTRAIR REGISTRO DO ACUMULADOR - SUB A, R ........................................ 86
6.2.30 - INSTRUO SUBTRAIR DADO IMEDIATO DO ACUMULADOR SUB A, N ................................. 87
6.2.31 - INSTRUO SUBTRAIR LOCALIZAO DE MEMRIA ENDEREADA INDIRETAMENTE DO
ACUMULADOR - SUB A, (HL)...................................................................................................................... 88
6.2.32 - INSTRUO SUBTRAIR LOCALIZAO DE MEMRIA ENDEREADA INDEXAMENTE, DO
ACUMULADOR - SUB A, (IX+D) .................................................................................................................. 89
6.2.33 - INSTRUO SUBTRAIR LOCALIZAO DE MEMRIA ENDEREADA INDEXADAMENTE DO
ACUMULADOR - SUB A, (IY+D) .................................................................................................................. 90
6.2.34 - INSTRUO SUBTRAIR COM CARRY (BORROW) DE UM OPERANDO ESPECIFICADO DO
ACUMULADOR - SBC A, S .......................................................................................................................... 90
6.2.35 - INSTRUO SUBTRAIR COM CARRY REGISTRO DO ACUMULADOR - SBC A, R................. 90
6.2.36 - INSTRUES E LGICO DO ACUMULADOR COM REGISTRO R - AND R............................ 91
6.2.37 - INSTRUES E LGICO DO ACUMULADOR COM UM DADO IMEDIATO - AND N............... 92
6.2.38 - INSTRUES E LGICO DE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDIRETAMENTE COM O ACUMULADOR AND (HL) ............................................................................. 92
6.2.39 - INSTRUES E LGICO DE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDEXADAMENTE COM O ACUMULADOR - AND (IX+D)......................................................................... 93
6.2.40 - INSTRUES OU LGICO DO ACUMULADOR COM REGISTRO R - OR R ........................... 94
6.2.41 - INSTRUES OU LGICO DO ACUMULADOR COM UM DADO IMEDIATO - OR N .............. 95
6.2.42 - INSTRUES OU LGICO DE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDIRETAMENTE COM O ACUMULADOR OR (HL) ............................................................................... 95
6.2.43 - INSTRUES OU LGICO DE UMA LOCALIZAO DE MEMRIA ENDEREADA
INDEXADAMENTE COM O ACUMULADOR - OR (IX+D) ........................................................................... 95
6.2.44 - INSTRUES OU EXCLUSIVO DO ACUMULADOR COM REGISTRO R - XOR R .................. 95
6.2.45 - INSTRUES OU EXCLUSIVO DO ACUMULADOR COM DADO IMEDIATO - XOR N............ 96
6.2.46 - INSTRUES OU EXCLUSIVO DO ACUMULADOR COM LOCALIZAO DE MEMRIA
ENDEREADA INDIRETAMENTE XOR (HL)........................................................................................... 96
6.2.47 - INSTRUES OU EXCLUSIVO DO ACUMULADOR COM LOCALIZAO DE MEMRIA
ENDEREADA INDEXADAMENTE - XOR (IX+D)....................................................................................... 96
6.2.48 - INSTRUES COMPARAO DE UM REGISTRO R COM O ACUMULADOR - CP R............ 96
6.2.49 - INSTRUES INCREMENTAR REGISTRO R INC R................................................................. 98
6.2.50 - INSTRUES DECREMENTAR REGISTRO R DEC R.............................................................. 99
6.3 - FLAGS................................................................................................................................................... 101
6.3.1 - FLAG CARRY - C............................................................................................................................... 101
6.3.2 - FLAG - N ............................................................................................................................................ 101
6.3.3 - FLAG DE PARIDADE/OVERFLOW - (P/V) ....................................................................................... 102
6.3.4 - FLAG MEIO CARRY - H .................................................................................................................... 102
6.3.5 - FLAG ZERO - Z.................................................................................................................................. 103
6.3.6 - FLAG DE SINAL - S ........................................................................................................................... 103

7 - GRUPO ARITMTICO GERAL E DE CONTROLE DA CPU................................................................... 105


7.1 - INSTRUO AJUSTE DECIMAL DO ACUMULADOR - DAA ........................................................... 105
7.2 - INSTRUO COMPLEMENTAR ACUMULADOR - CPL .................................................................. 106
7.3 - INSTRUO NEGAR ACUMULADOR OU INSTRUO COMPLEMENTO DE DOIS - NEG ......... 107
7.4 - INSTRUO COMPLEMENTAR O FLAG CARRY - CCF................................................................. 108
7.5 - INSTRUO SET O FLAG DE CARRY - SCF .................................................................................. 108
7.6 - INSTRUO PARAR CPU - HALT .................................................................................................... 109
7.7 - INSTRUES INABILITAR INTERRUPES DI .......................................................................... 109
7.8 - INSTRUO HABILITAR INTERRUPES EI .............................................................................. 109
7.9 - INSTRUO SETAR CONDIO DE MODO ZERO DE INTERRUPES - IM 0.......................... 110
7.10 - INSTRUO SETAR CONDIO DE INTERRUPO DE MODO UM - IM 1.............................. 110
7.11 - INSTRUO SETAR CONDIO DE INTERRUPO DE MODO DOIS - IM 2 ........................... 110

8 - GRUPO ARITMTICO DE 16 BITS ......................................................................................................... 112


8.1 - INSTRUO SOMAR HL E PAR DE REGISTROS ESPECIFICADOS POR SS - ADD HL, SS ...... 112
8.2 - INSTRUO SOMAR CARRY HL E PAR DE REGISTROS ESPECIFICADOS POR SS - ADC HL, SS
....................................................................................................................................................................... 113
8.3 - INSTRUO SUBTRAIR COM CARRY CONTEDO DE REGISTROS ESPECIFICADOS DO
CONTEDO DE HL - SBC HL, SS ............................................................................................................. 113
8.4 - INSTRUO SOMAR PAR DE REGISTROS IX COM PAR DE REGISTROS ESPECIFICADOS RR -
ADD IX, RR ................................................................................................................................................. 114
8.5 - INSTRUO SOMAR PAR DE REGISTROS IY COM PAR DE REGISTROS ESPECIFICADOS RR -
ADD IY, RR ................................................................................................................................................. 115
8.6 - INSTRUO INCREMENTAR PAR DE REGISTROS RR - INC RR................................................ 115
8.7 - INSTRUES DECREMENTAR PAR DE REGISTROS - DEC RR.................................................. 116

9 - GRUPO DE DESLOCAMENTO E ROTAO......................................................................................... 119


9.1 - INSTRUO ROTAO CIRCULAR DO ACUMULADOR ESQUERDA RLCA......................... 119
9.2 - INSTRUO ROTAO CIRCULAR DO ACUMULADOR ESQUERDA ATRAVS DO CARRY
RLA.............................................................................................................................................................. 119
9.3 - INSTRUO ROTAO CIRCULAR DO ACUMULADOR DIREITA - RRCA ............................... 120
9.4 - INSTRUO ROTAO CIRCULAR DO ACUMULADOR DIREITA ATRAVS DO CARRY RRA
....................................................................................................................................................................... 120
9.5 - INSTRUO ROTAO CIRCULAR DE UM REGISTRO R ESQUERDA RLC R..................... 121
9.6 - INSTRUO ROTAO CIRCULAR ESQUERDA DE UMA LOCALIZAO DE MEMRIA
ENDEREADA INDIRETAMENTE RLC (HL) ......................................................................................... 121
9.7 - INSTRUO ROTAO CIRCULAR ESQUERDA DE UMA LOCALIZAO DE MEMRIA
ENDEREADA INDEXADAMENTE RLC (IX+D) E RLC (IY+D) ............................................................. 122
9.8 - INSTRUES ROTAO ESQUERDA DE UM REGISTRO RL R ............................................ 123
9.9 - INSTRUO ROTAO CIRCULAR ESQUERDA DE UMA LOCALIZAO DE MEMRIA
ENDEREADA INDIRETAMENTE RL (HL) ............................................................................................ 123
9.10 - INSTRUO ROTAO CIRCULAR ESQUERDA DE UMA LOCALIZAO DE MEMRIA
ENDEREADA INDEXADAMENTE RL (IX+D) E RL (IY+D) .................................................................. 124
9.11 - INSTRUES ROTAO CIRCULAR DIREITA RRC S .......................................................... 124
9.12 - INSTRUES ROTAO DIREITA ATRAVS DO CARRY RR S .......................................... 125
9.13 - INSTRUES DESLOCAMENTO ARITMTICO ESQUERDA SLA S..................................... 125
9.14 - INSTRUES DESLOCAMENTO ARITMTICO DIREITA SRA S .......................................... 125
9.15 - INSTRUO ROTAO DECIMAL ESQUERDA RL D ............................................................ 126
9.16 - INSTRUO ROTAO DECIMAL DIREITA RR D ................................................................. 126

10 - GRUPO DE TESTE, SET E RESET DE BIT ......................................................................................... 129


10.1- INSTRUES SET O BIT B DO OPERANDO SET B, S............................................................... 129
10.2 - INSTRUES RESET O BIT B DO OPERANDO RES B, S ........................................................ 130
10.3 - INSTRUES TESTE O BIT B DO OPERANDO BIT B, S .......................................................... 130

11 - INSTRUES BRANCH........................................................................................................................ 133


11.1 - INTRODUO .................................................................................................................................... 133
11.2 - INSTRUES JUMP .......................................................................................................................... 133
11.2.1 - INSTRUES JUMP PARA ENDEREO JP NN...................................................................... 133
11.2.2 - INSTRUES JUMP CONDICIONAL PARA ENDEREO JP CC, NN .................................... 133
11.3 - INSTRUO JUMP E RELATIVO JR E....................................................................................... 136
11.4 - INSTRUO CALL SUBROTINA NA LOCALIZAO PQ CALL PQ........................................... 136
11.5 - INSTRUO RETORNO DE SUBROTINA RET .......................................................................... 137

12 - GRUPO DE ENTRADA E SADA........................................................................................................... 140


12.1 - INSTRUO CARREGA ACUMULADOR COM O DADO ENDEREADO PELO PORTAL N - IN
A,(N)............................................................................................................................................................... 140
12.2 - INSTRUO CARREGAR O REGISTRO R COM O DADO DO PORTAL C IN R, (C) ............. 141
12.3 - INSTRUO CARREGA A POSIO (HL) COM ENTRADA DA PORTA (C), INCREMENTA HL E
DECREMENTA B INI............................................................................................................................. 141
12.4 - INSTRUO CARREGA A POSIO (HL) COM ENTRADA DA PORTA (C), INCREMENTA HL E
DECREMENTA B AT B=0 INIR ........................................................................................................ 141
12.5 - INSTRUO CARREGA A POSIO (HL) COM ENTRADA DA PORTA (C), DECREMENTA HL E
B IND ..................................................................................................................................................... 141
12.6 - INSTRUO CARREGA A POSIO (HL) COM ENTRADA DA PORTA (C), DECREMENTA HL E
B AT B=0 INDR................................................................................................................................. 141
12.7 - INSTRUO CARREGA O PORTAL (N) DE SADA COM O ACUMULADOR OUT (N), A......... 142
12.8 - INSTRUO CARREGA O PORTAL (C) DE SADA COM O REGISTRO R OUT (C), R............ 142
12.9 - INSTRUO CARREGA O PORTAL (C) DE SADA COM A POSIO (HL), INCREMENTA HL E
DECREMENTA B OUTI......................................................................................................................... 142
12.10 - INSTRUO CARREGA O PORTAL (C) DE SADA COM A POSIO (HL) INCREMENTA HL E
DECREMENTA B AT B=0 OUTLR ................................................................................................... 143
12.11 - INSTRUO CARREGAR O PORTAL (C) DE SADA COM A POSIO (HL), DECREMENTA HL
E B OUTD ............................................................................................................................................. 143
12.12 - INSTRUO CARREGAR O PORTAL (C) DE SADA COM A POSIO (HL), DECREMENTA HL
E B AT B=0 OUTDR ......................................................................................................................... 143

13 INTERRUPES .................................................................................................................................. 145


13.1 - INTRODUO .................................................................................................................................... 145
13.2 TIPOS BSICOS DE INTERRUPES ............................................................................................ 146
13.2.1 - INTERRUPO MASCARVEL...................................................................................................... 146
13.2.2 - HABILITAR A INTERRUPO ATRAVS DA INSTRUO EI (HABILITAR INTERRUPES); 146
13.3 - ESCOLHER O MODO DE INTERRUPO (IM0, IM1 OU IM2); ....................................................... 147
13.3.1 - INSTRUO SETAR CONDIO DE MODO ZERO DE INTERRUPES - IM 0..................... 147
13.3.2 - INSTRUO SETAR CONDIO DE INTERRUPO DE MODO UM - IM 1........................... 147
13.3.4 - INSTRUO SETAR CONDIO DE INTERRUPO DE MODO DOIS - IM 2 ........................ 147
13.4 - INTERRUPO NO MASCARVEL................................................................................................ 148
MICROPROCESSADOR Z-80

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.

1.2 - MICROPROCESSADOR, MICROCOMPUTADOR E TERMOS ASSOCIADOS


Um microprocessador um dispositivo lgico programvel, usado em sistemas digitais, tambm usado
como processador de finalidade geral. Deve-se ento distinguir entre microprocessador e microcomputador.
O microprocessador, ou MPU, um elemento lgico complexo que executa operaes lgicas, aritmticas e
de controle a programao do microprocessador feita atravs de um conjunto de cdigos binrios
denominados instruo. Um grupo de instrues ir definir a tarefa a ser realizada, ou seja, o programa a
ser executado pelo microprocessador. Geralmente o Microprocessador embalado em um nico CI. Um
microcomputador contm diversos circuitos alm do microprocessador. Entre estes circuitos tem-se
memrias para guardar informaes, adaptadores de interfaces para conectar o microcomputador ao mundo
exterior, clock para agir como temporizador para o sistema. A figura a seguir mostra um microcomputador
tpico. As setas representam condutores destinados ao fluxo de informaes binrias. As setas largas
representam diversos condutores em paralelo. Um grupo de condutores que conduzem informaes
chamado de barramento (BUS). Existem trs barramentos funcionais: o barramento de dados que se
destina a levar informaes do microprocessador para a memria, ou perifrico; este processo chamado
de escrita de dados, ou, ento, trazer informaes da memria, ou perifrico para o microprocessador; este
processo chamado de leitura de dados. O barramento de endereos responsvel pela seleo de qual
posio de memria ou qual perifrico est sendo usado no momento da transferncia de dados. O
barramento de controle contm sinais que identificam qual o tipo de operao que est sendo realizada pelo
microprocessador naquele instante. Estes sinais indicaro uma leitura de dados, uma escrita de dados, um
endereo vlido, um pedido de interrupo, etc.

FIG. 1.1 - MICROCOMPUTADOR BSICO

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.

1.3 - CONCEITO DE PROGRAMA ARMAZENADO


Um microcomputador capaz de executar muitas operaes diferentes. Pode somar e subtrair nmeros,
realizar operaes lgicas, ler informaes de um dispositivo de entrada e transmitir informao para um
dispositivo de sada. De fato, dependendo do microprocessador usado, podem existir mais de 100
operaes diferentes que o microcomputador pode executar. Alm disso, duas ou mais operaes
individuais podem ser combinadas para executar operaes muito mais complexas.

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.

1.4 - PALAVRAS DO COMPUTADOR


Na terminologia de computador uma palavra um grupo de algarismos binrios que podem ocupar uma
localizao de memria. Embora a palavra possa ser composta de diversos algarismos binrios (bits), o
computador manuseia cada palavra como se fosse uma unidade. Ento a palavra a unidade de
informao usada no computador. Ela representar o cdigo de uma instruo, ou um dado a ser
transportado pelo barramento de dados.

1.5 - COMPRIMENTO DA PALAVRA


Existe uma grande variedade de microprocessadores. Uma das caractersticas mais importantes de
qualquer microprocessador o tamanho, ou comprimento da palavra, que ele pode manusear. Isto se refere
ao nmero de bits da unidade fundamental de informao.

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

No conjunto de microprocessadores disponveis no mercado, existem tamanhos de palavras, tais como 1, 4,


8, 16, 32 e 64 bits.

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.

Neste texto sero discutidos os microprocessadores de 8 bits.

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.

O tamanho de palavra de 8 bits define diversos componentes do sistema do microprocessador. Por


exemplo, o barramento de dados deve ser formado de 8 condutores paralelos, a memria deve ser capaz
de guardar palavras de 8 bits, etc.

Os microprocessadores de 16 bits, ou 32 bits, podero manusear segmentos de dados de 8 bits em muitas


aplicaes. Por exemplo, as entradas das impressoras consistem de caracteres ASCII de 8 bits.

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.

FIG. 1.2 - PALAVRA E BYTES

1.6 - MICROCOMPUTADOR ELEMENTAR


A principal dificuldade encontrada para se aprender microcomputadores a complexidade do seu principal
componente, o microprocessador.

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.

FIG. 2.1 - MICROCOMPUTADOR BSICO

1.7 - SEQNCIA BUSCA - EXECUO


Quando o microcomputador est executando um programa, ele segue atravs de uma seqncia
fundamental que repetida constantemente.

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.

FIG. 2.2 - SEQNCIA DE BUSCA E EXECUSSO

DATAPOOL ELETRNICA 11
MICROPROCESSADOR Z-80

1.8 - UM MODELO DE PROGRAMA


Agora, que foi dado uma idia geral dos registros e circuitos encontrados num microcomputador,
examinaremos como todos estes circuitos trabalham juntos para executar um pequeno programa. A esta
altura estamos interessados em mostrar como o microcomputador opera, da a simplicidade do programa.

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.

NOME MNEMNICO (OP CODE) CDIGO DE OPERAO DESCRIO


Carregar Acumulador LD A,06 3Ehex Carregar o acumulador
A (load A) 06 hex com o dado 06hex
Carregar Acumulador LD B,09 06hex Carregar o registro B
B (load B) 09hex com o dado 09hex
Somar A com B ADD A,B 80hex Somar o registro B com
(Add) o acumulador A e
guarda no acumulador
Halt HLT 76hex Parar todas operaes

FIG. 2.3 - INSTRUES USADAS NUM PROGRAMA SIMPLES

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:

MEMRIA CORRESPONDENTE VALOR


0011 1110 Opcode para LD A,
1 Instruo 0000 0110 Operando 610
0000 0110 Opcode para LD B,
2 Instruo 0000 1001 Operando 910
3 Instruo 1000 0000 Opcode para ADD A,B
4 Instruo 0111 0110 Opcode para HLT

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

ENDEREO MEMRIA MNEMNICO/CONTEDO


Binrio Hexa Contedo Binrio
0000 0000 00
0000 0001 01
0000 0010 02
0000 0011 03 0011 1110 LD A,
0000 0100 04 0000 0110 06
0000 0101 05 0000 0110 LD B,
0000 0110 06 0000 1001 09
0000 0111 07 1000 0000 ADD A,B
0000 1000 08 0111 0110 HLT

FIG. 2.4 - PROGRAMA NA MEMRIA

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.

construdo com tecnologia MOS, canal N, com porta de silcio.

Trata-se de um microprocessador de 8 bits no tudo de dados e de 16 bits no duto de endereos, para


alcanar 64 kbytes de espao de endereamento de memria.

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.

As formas de endereamento so as seguintes: implcito, imediato, relativo, direto e indexado.

alimentado por 5V.

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.

Instrues adequadas para a manipulao a nvel de bit de registradores e de memria.

Instrues de reproduo e comparao a nvel de blocos (conjuntos de bytes).

2.2 - DIAGRAMA DE BLOCOS


O diagrama de blocos de um microcomputador, baseado no microprocessador Z-80, aparece na figura a
seguir:

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:

Um bus de dados bidirecional de 8 bits


Um bus de endereos unidirecional de 16 bits e
Um bus de controle.

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.

O bus de controle transporta os vrios sinais de sincronizao requeridos pelo sistema.

Cada microprocessador requer uma referncia precisa de tempo, que fornecida por um clock e um cristal,
que aparecem esquerda da figura.

Da figura, pode-se distinguir outros elementos do sistema, tais como:

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

2.3 - ESTRUTURA INTERNA DO MICROPROCESSADOR Z-80


A arquitetura do Z-80 est mostrada a seguir.

ARQUITETURA DO 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.

2.4 - REGISTROS DE FINALIDADES GERAIS


O Z-80 tem quatorze registros de 8 bits de finalidades gerais designados por:

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

A figura a seguir, mostra as possveis combinaes de A e F, A e F e os seis registros restantes de


finalidades gerais.

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

COMBINAES E BLOCOS DE REGISTROS

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.

2.5 - F / F REGISTRO DE FLAG


O registro de flag selecionado com o registro A . Em qualquer instante so selecionados A e F ou ento
Ae F. Embora o registro de flag seja um registro de 8 bits como so os outros sete registros do P, o
registro de flag mais um conjunto de 8 bits convenientemente grupados num registro do que um registro
de finalidades grais. Os bits dentro do registro de flag especificam vrias condies especiais no P que
ocorreram depois de determinadas operaes do P tais como operaes lgicas, operaes aritmticas e
outras. A figura a seguir mostra a disposio dos bits no registro de flag.

DATAPOOL ELETRNICA 19
MICROPROCESSADOR Z-80

FORMATO DO REGISTRO DE FLAGS

2.6 - REGISTROS DE FINALIDADES ESPECIAIS

Os registros restantes do P que so disponveis para o programador so os registros:

I, R, IX, IY, SP e PC.

2.7 - PC CONTADOR DE PROGRAMAS


O PC um registro de 16 bits que mantm a localizao da instruo corrente que est sendo buscada na
memria.

O PC disponvel para o programador no sentido de que pode ser carregado ou armazenado. No so


permitidas operaes aritmticas ou lgicas com o PC.

2.8 - APONTADOR DE STACK


Enquanto o PC um apontador para memria externa que especifica o endereo da prxima instruo a ser
executada, o SP um apontador para uma poro externa da memria denominada Stack. O stack externo
de memria simplesmente uma rea de memria separada para armazenamento temporrio dos registros
do P, registro de flag e PC. Armazenamentos estes se tornam necessrios em algumas situaes.

A figuras a seguir, mostraro as operaes do SP.

Fig. A O SP aponta para o endereo 0103, assim sendo, este endereo marca o incio o Stack.

DATAPOOL ELETRNICA 20
MICROPROCESSADOR Z-80

Fig. B Com a entrada de um Dado B o SP decrementado indicando 0102

Fig. C Com a sada de um Dado B o SP incrementado indicando 0103

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.

2.9 - IX E IY REGISTROS DE NDICE


Os registros de ndice IX e IY so dois registros de 16 bits que permitem endereamento indexado nos
programas do Z-80. Quando uma instruo executada num modo e endereamento indexado, um dos
dois registros de ndice usado para calcular o endereo e memria do operando. O endereo efetivo do
operando e memria obtido somando o contedo do registro de ndice com um valor de 8 bits contido no
campo de deslocamento da instruo usando o modo de endereamento indexado.

2.10 - I REGISTRO DO VETOR DE INTERRUPO


O registro do vetor de interrupo I um registro de 8 bits que pode ser carregado com 8 bits de dados
especificando um endereo de memria. Este endereo quando combinado com os 8 bits de endereos de
ordem baixa fornecidos pelo dispositivo de interrupo (o bit 0 sempre 0), representa um endereo de
memria cujo contedo por sua vez especifica o endereo de memria da Rotina de manuseio de
interrupo por Software (ISR) para o dispositivo. A figura a seguir, ilustra o uso deste registro:

DATAPOOL ELETRNICA 21
MICROPROCESSADOR Z-80

AO DO REGISTRO - I

Na figura em:

1 O dispositivo I/O solicita uma interrupo

2 O Z-80 reconhece a interrupo

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.

2.11 - R REGISTRO DE RESTAURAO DE MEMRIA


O ltimo registro de finalidades especiais o registro de restaurao de memria R, que de 7 bits.
Quando a memria externa formada de memrias dinmicas o registro R permite restaurao automtica
desta espcie de memria semicondutora que periodicamente (tipicamente a cada 2 milisegundos)
necessita ter cada clula lida ou restaurada para manter ser contedo. O contedo do registro R
incrementado de um aps cada busca de instruo e o contedo envido atravs dos 7 bits menos
significativos do bus de endereos enquanto o Z-80 no est acessando a memria. Cada clula de
memria externa com uma configurao predefinia de seus bits de endereos igual a do registro R pode ser
restaurada sem receio de conteno (leitura simultnea) da mesma clula de memria pelo P Z-80. O
registro R normalmente no usado pelo programador.

A figura a seguir, mostra o diagrama com maiores detalhes do Z-80.

DATAPOOL ELETRNICA 22
MICROPROCESSADOR Z-80

B (MUNDO EXT. Z80)


U
F
BARRAMENTO DE DADOS INTERNOS (8 BITS) F
E
A F BARRAMENTO
R
A' F' DE DADOS
REG. INT. I R B' C' B C TMP
D' E' D E
ACT
H' L' H L
DECOD. IX
IY
SP ALU
CONTR. DE PC
SEQUEN. +1
-
+
BARRAMENTO
B DE ENDEREO
U
F
BARRAMENTO DE ENDEREO (16 BITS)
F
E
R

B
U
F
BARRAMENTO DE CONTROLE
F
E
BARRAMENTO
R
DE CONTROLE

ORGANIZAO INTERNA DO Z-80

2.12 - PINAGEM DO Z-80


As especificaes eltricas do Z-80 so: Todas entradas e sadas so compatveis com TTL, facilitando as
interligaes. Existe somente uma fonte de + 5V. O consumo do Z-80 de no mximo 200 mA. existe
somente uma nica entrada de clock de uma fase. A freqncia do clock para o Z-80 original era de
2,5MHz, entretanto verso mais rpidas aceitam 4MHz.

Os pinos do Z-80 aparecem na Figura a seguir:

PINAGEM DO Z-80

DATAPOOL ELETRNICA 23
MICROPROCESSADOR Z-80

Conforme pode ser visto, o Z-80 um chip de 40 pinos.

Para efeito didtico os pinos do Z-80 foram grupados logicamente de acordo com as funes, invs de sua
posio fsica.

Veremos agora em detalhes, todos os pinos do microprocessador:

2.13 - A0 A15 VIA DE ENDEREOS


Sada de trs estados, ativa alta. A0 A15 constitui uma via de 16 bits de endereos. Esses sinais fornecem
o endereo para as mudanas de estados na memria (at 64K bytes) e para mudanas de dados nos
dispositivos de E/S. O endereamento de E/S utiliza os oito mais baixos bits de endereo para permitir ao
usurio selecionar diretamente at 256 entradas ou 256 portas de sadas. A0 o bit de endereo menos
significativo. Durante o tempo de restaurao os sete bits de mais baixa ordem possuem um endereo
vlido de restaurao.

2.14 - D0 D7 VIA DE DADOS


Entrada / Sada de trs estados, ativa alta. D0 D7 constitui uma via de dados bidirecional de 8 bits a qual
usada para trocas de dados com a memria e os dispositivos de E/S.

2.15 - M1 CICLO 1 DE MQUINA (PINO 27)


Sada, ativa baixa. M1 indica que o ciclo de mquina presente o ciclo de busca de uma execuo de
instruo. Note que durante a execuo de 2 bytes, M1 gerado medida que cada byte usado. A
codificao desses, 2 bytes sempre comea com CBH, DDH, EDH, ou FDH. M1 tambm ocorre com IORQ
para indicar o reconhecimento de um ciclo de interrupo.

2.16 - MREQ PEDIDO DE MEMRIA (PINO 19)


Sada de trs estados, ativa baixa. O sinal de pedido de memria indica que a via de endereo possui um
endereo vlido para uma operao de leitura ou escrita na memria.

2.17 - IORQ PEDIDO DE ENTRADA/SADA (PINO 20)


Sada de trs estados, ativa baixa. O sinal IORQ indica que a metade menos significativa da via de
endereo possui um endereo de E/S vlido para uma operao de leitura ou escrita em uma E/S. Um sinal
IORQ tambm gerado com um sinal M1, quando uma interrupo est sendo reconhecida, para indicar
que um vetor de resposta de interrupo pode ser colocado na via de dados. Operaes de reconhecimento
de interrupo podem ocorrer durante um tempo de M1 enquanto operaes de E/S so proibidas.

2.18 - RD LEITURA DE MEMRIA OU DISPOSITIVO DE E/S (PINO 21)


Sada de trs estados, ativa baixa. RD indica que o processador central quer ler da memria ou de um
dispositivo de E/S. O dispositivo E/S endereado ou a memria endereada devem usar este sinal para
colocar o dado na via de dados o processador central.

2.19 - WR ESCRITA DE MEMRIA OU DISPOSITIVO DE E/S (PINO 22)


Sada de trs estados, ativa baixa. WR indica que a via de dados do processador central possui um dado
vlido para ser armazenado na memria ou no dispositivo de E/S endereado.

2.20 - RFSH REFRESH / RESTAURAO (PINO 28)


Sada ativa baixa. RFSH indica que 7 bits de mais baixa ordem da via de endereo contm um endereo de
refresh para memrias dinmicas e o sinal MREQ deve ser usado para fazer uma leitura de refresh para dos
as memrias dinmicas.

DATAPOOL ELETRNICA 24
MICROPROCESSADOR Z-80

2.21 - HALT ESTADO PARADO (PINO 18)


Sada, ativa baixa. HALT indica que o processador central executou uma instruo HALT e est esperando
uma interrupo mascarvel ou no mascarvel antes de reassumir a operao. Enquanto parado, o
processador central executa NOPs (no operao) para manter ativo o refresh (restaurao) de memria.

2.22 - WAIT ESPERA (PINO 24)


Entrada, ativa baixo. O WAIT indica para o processador central Z80 que o dispositivo de E/S ou a memria
endereada no esto prontos para transferncia de dados. O processador central continua no estado de
espera tanto tempo quanto o sinal WAIT estiver ativo; este sinal permite a memria ou dispositivo de E/S
serem sincronizados com o processador central.

2.23 - INT INTERRUPO MASCARVEL (PINO 16)


Entrada, ativa baixa. O sinal de pedido de interrupo gerado pelos dispositivos de E/S. Um pedido ser
atendido no final da instruo presente se o flip-flop de interrupo controlado por software interno estiver
habilitado e se o final BUSRQ no estiver ativo. Quando o processador centrar aceita a interrupo, um
sinal de reconhecimento (IORQ durante M1) enviado para incio do prximo ciclo de instruo. O
processador central pode responder a uma interrupo de trs modos diferentes.

2.24 - NMI INTERRUPO NO-MASCARVEL (PINO 17)


Entrada, gatilhada (trigger) na descida. A linha de pedido de interrupo no mascarvel tem prioridade
maior do que o INT e sempre reconhecida no final da instruo presente, indiferente ao status do flip-flop
de interrupo. NMI fora o processador central a recomear da posio 006616. O contador de programa
automaticamente salvo na pilha externa, dessa forma o usurio pode retornar ao programa que foi
interrompido. Note que ciclos contnuos de WAIT podem impedir o trmino da instruo presente e que um
BUSRQ anular um NMI.

2.25 - SINAIS DO Z-80


Nos pargrafos seguintes sero examinados os sinais o Z-80. No indispensvel o entendimento das
funes destes sinais afim de se poder programar o Z-80.

2.26 - BUS DE ENDEREOS


O Bus de endereos representado pelos sinais A15 at A0, onde A15 o bit mais significativo do bus de
endereos e A0 o bit menos significativo. A15 at A0 so tri-state, o que significa que quando o bus de
endereos est inativo, suas sadas esto no estado de alta impedncia. Existem 216 possveis combinaes
de endereos o que significa que 65536 (64k) posies de memria podem ser endereadas diretamente
pelo Z-80. Quando so endereados dispositivos I/O, so usadas as oito linhas menos significativos do bus
de endereos (A6 A0) transportam tambm o contedo de R, ou registro de restaurao de memria, por
certos momentos durante a execuo de cada instruo.

2.27 - BUS DE DADOS


Os sinais do bus de dados D7 at D0, so sinais tri-state ativos com nvel H tal como no caso dos sinais do
bus de endereos. D7 representa o bit mais significativo e D0 o bit menos significativo. O bus de dados
bidirecional, permitindo que os dados sejam transferidos tanto dos registros do P para memria externa ou
I/O, como de memria externa ou I/O para os registros do P.

2.28 - SINAIS DO BUS DE CONTROLE


Existem dois sinais associados com o bus de endereos e com o bus de dados. So os dois sinais de
controle dos buses do P:

. Sinal de entrada BUSRQ (Requisio de bus)


. Sinal de sada BUSAK (Reconhecimento de bus)

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.

2.29 - SINAIS DE MEMRIA


Existem quatro sinais associados com a operao de memria

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.

2.30 - SINAIS DE ENTRADA / SAIDA


O sinal IORQ um sinal de sada tri-state ativo baixo usado para REQUISIO DE ENTRADA/SADA.
Quando o sinal IORQ vai para L, os 8 bits menos significativos do bus de endereos A7 A0, tem o
endereo de um dispositivo I/O. Os sinais RD e WR devem ento serem usados para determinar se a
operao I/O uma operao de escrita ou leitura de I/O . O sinal IORQ tambm usado em conjunto com
o sinal M1 para responder a interrupes como ser visto a seguir.

2.31 - OUTROS SINAIS DO MICROPROCESSADOR

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:

1. O flip flop habilitador de interrupes desarmado, impedindo a interrupo do sistema exceto


para NMI.
DATAPOOL ELETRNICA 26
MICROPROCESSADOR Z-80

2. O registro I, registro do vetor de interrupo, levado para 00 Hex.


3. O registro R, registro de restaurao levado para 00 Hex.
4. setado o modo de interrupo 0.
5. O bus de endereos vai para o estado de alta impedncia.
6. O bus de dados vai para o estado de alta impedncia.

Todos sinais de sada de controle vo para o estado inativo.

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.

1. Ou o programa executou todas suas funes e terminou;


2. Ou coloca-se uma HALT para que o programa espere a ocorrncia de uma interrupo.

Quando o P est num estado HALT ele executa instrues de no-operao (NOP) para assegurar
atividade adequada de restaurao de memria.

2.32 - SINAIS RELACIONADOS COM INTERRUPO


Os sinais lgicos restantes esto associados com o processamento de interrupes. O sinal NMI uma
entrada gatilhada por EDGE Negativo( ) e que especifica que uma interrupo no MASCARVEL deve
ser executada. Quando este sinal trazido momentaneamente para L, o P reconhecer esta interrupo
no final da instruo corrente. Quando o P reconhece a interrupo NMI, ocorrem as seguintes aes:

1. O contedo corrente do PC salvo no STACK de memria;


2. O P transfere o controle para a localizao de memria 006 Hex, insto a execuo da
instruo inicia na localizao 0066 que deve conter o programa para processamento da
interrupo NMI (ISR).

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

AES OCORRIDAS DURANTE UMA INTERRUPO NMI

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

programa e se o sinal BUSRQ no ativo. E estas condies so preenchidas, o P aceita a interrupo e


reconhece a interrupo enviando um sinal IORQ durante o tempo de busca (M1) da prxima instruo.
Desde que IORQ nunca ocorre durante M1 para uma instruo I/O, o dispositivo de interrupo reconhece a
condio IORQ e M1 como um reconhecimento de interrupo. Posteriormente sero discutidas outras
aes que ocorrem para esta interrupo.

2.33 - TEMPORIZAO DO MICROPROCESSADOR


A execuo de todas instrues do Z-80 pode ser dividida em um conjunto de ciclos bsicos. Existem duas
espcies de ciclos, o mais bsico sendo um ciclo de clock, ou ciclo T. Se for usado um clock de 4MHz, cada
ciclo T ser um perodo constante de 250nS como mostrado na figura a seguir.

CICLO T 250ns

TPICO DE 3 A 6 CICLO T
1CICLO DE MQUINA

CICLOS BSICOS DE INSTRUO

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:

1. Ciclo de busca do cdigo de operao (ciclo M1).


2. Ciclo de leitura ou escrita de dados de memria.
3. Ciclo de leitura ou escrita de I/O .
4. Ciclo de Requisio / Reconhecimento bus.
5. Ciclo de Requisio / Reconhecimento de interrupo.
6. Ciclo de Requisio / Reconhecimento de interrupo no mascarvel.
7. Sada da instruo HALT.

2.34 - CICLO DE BUSCA DO CDIGO DE OPERAO OU CICLO - M1


Cada execuo da instruo composta de um ciclo de busca do cdigo de operao ou ciclo M1. Algumas
instrues tem do cdigo de operao ou ciclo M1. Algumas instrues tem dois bytes para o cdigo de
operao e portanto tem dois ciclos M1. Um ciclo M1 permite que o P leia o byte do cdigo de operao
(opcode) da memria externa, decodifique a operao a ser executada, e implemente uma poro ou
possivelmente toda operao ( o caso de instrues de um nico ciclo de mquina).

DATAPOOL ELETRNICA 28
MICROPROCESSADOR Z-80

CONTROLE DE MEMRIA
INST

PC
1800

BUS DE ENDEREO
DECODIFICADOR DE
1800 ENDEREOS

CICLO M1 - O CONTEDO DO PC COLOCADO NO BUS DE ENDEREOS

As figuras a seguir, ilustram um Ciclo M1.

MEMRIA

CONTROLE DE MEMRIA

INST
PC
1801
+1
BUS DE ENDEREO
DECODIFICADOR DE
1800 ENDEREOS

CICLO M1 - O CONTEDO DO PC COLOCADO NO BUS DE ENDEREOS

Na figura anterior, o contedo do PC (no caso 1800) colocado no bus de endereos.

MEMRIA
CONTROLE DE MEMRIA

INST
PC
1801
+1

BUS DE ENDEREO
DECODIFICADOR DE
1800 ENDEREOS

CICLO M1 - O CONTADOR DE PROGRAMAS INCREMENTADO

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

CICLO M1. OS SINAIS MREQ E RD VO PARA 0

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

O OPCODE DA INSTRUO EXISTENTE NO ENDEREO 1800HEX COLOCADO NO BUS DE DADOS


E DA PARA O REGISTRO DE INSTRUO (IR)

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

A0 - A15 PC END. P/ RESTAURAO


(refresh)
MREQ

RD

WAIT

MT
ENTRADA
DB0 - DB7

RFSH

EXECUO INC R

DIAGRAMA DE TEMPO DE UM CICLO DE BUSCA DO OPCODE OU CICLO M1 DE UMA INSTRUO


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

2.35 - CICLOS DE LEITURA E ESCRITA DE DADOS NA MEMRIA


Os ciclos de leitura e escrita sero ilustrados com exemplos da execuo de duas instrues.

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)

CICLO M1 CICLO DE LEITURA DE MEMRIA

T1 T2 T3 T4 T1 T2 T3

A0 - A15 ENDEREO DE MEMRIA

MREQ

RD

WR
ENTRADA
BUS DE DADOS
D0 - D7

WAIT

BUSCA DA INSTRUO EXECUO DE LD R. (HL)

CICLO DE LEITURA

A escrita de memria est mostrada no diagrama da figura a seguir.

INSTRUO LD (HL) R.

CICLO M1 CICLO DE ESCRITA EM MEMRIA

T1 T2 T3 T4 T1 T2 T3

A0 - A15 ENDEREO DE MEMRIA

MREQ

RD

WR

BUS DE DADOS
SAIDA DE DADO
D0 - D7

WAIT

BUSCA DA INSTRUO EXECUO DE LD (HL) R.

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.

2.36 - CICLOS DE LEITURA E ESCRITA DE I/O


Um ciclo de leitura ou escrita de I/O ocorre durante uma instruo de entrada ou sada.

As instrues de entrada e sada geralmente so de 3 ou 4 ciclos de mquina e de 10 a 20 ciclos T


(Durao de 2,5 a 5 microssegundos para clock de 4MHz). As instrues mais sofisticadas de transferncia
de bloco de I/O (INIR, INDR, OTIR, OTDR) transferem at 256 bytes, entretanto, repetem os ciclos de
DATAPOOL ELETRNICA 32
MICROPROCESSADOR Z-80

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.

CICLO DE LEITURA DE I/O

T1 T2 Tw T3 T1

A0 - A7 ENDEREO DA PORTA

IORQ

RD
ENTRADA
BUS DE DADOS

WAIT

CICLO DE LEITURA I/O

CICLO DE ESCRITA DE I/O

T1 T2 Tw T3 T1

A0 - A7 ENDEREO DA PORTA

IORQ

RD

BUS DE DADOS SAIDA

WAIT

CICLO DE ESCRITA I/O

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

2.37 - CICLO DE REQUISIO / RECONHECIMENTO DE BUS


Em qualquer instante um dispositivo externo pode ganhar o controle do bus de endereos A15 A0, do bus
de dados D7 D0, e das linhas MREQ, RD, WR, IORQ e RFSH, habilitando o sinal de entrada BUSRQ.
Normalmente a razo para isto seria permitir que um dispositivo externo se comunique diretamente com a
memria externa para transferir dados entre dos dispositivos I/O de alta velocidade e a memria sem
interferncia do P (acesso direto memria DMA).

QUALQUER CICLO M ESTADO DE BUS DISPONIVEL

ULTIMO
Tx Tx Tx T1
ESTADO T

BUSRQ
AMOSTRAGEM
AMOSTRAGEM
BUSAK

A0 - A15

D0 - D7

MREQRD
IORQWR FLUTUANDO
MREQ

CICLO DE REQUISIO / RECONHECIMENTO DE BUS

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.

2.38 - CICLO DE REQUISIO / RECONHECIMENTO DE INTERRUPO

Se o Flip-Flop habilitador de interrupo do P foi setado para permitir interrupes externas, e se no


estiver ocorrendo uma ao de requisio de bus, o P est livre para reconhecer uma interrupo externa.
Um dispositivo externo faz uma requisio de interrupo habilitando o sinal INT. Durante o edge de
subida do ltimo ciclo T do ltimo ciclo de mquina de uma instruo, o P recenseia o estado de linha INT,
e se esta estiver L, inicia um ciclo de interrupo como mostrado na figura a seguir.

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

CICLO REQUISIO / RECONHECIMENTO DE INTERRUPO

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.

2.39 - CICLO DE REQUISIO DE INTERRUPO NO MASCARVEL

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

CICLO DE REQUISIO DE INTERRUPO NO MASCARVEL

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

externa. As operaes de restaurao ocorrem em T3 e T4 quando RFSH e MREQ so habilitadas, e o


contedo do registro R colocado no bus de endereos A7 A0 . Posteriormente ser discutida a seqncia
de interrupo NMI.

2.40 - SADA DA INSTRUO HALT

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

INSTRUO HALT RECEBIDA


DURANTE ESTE CICLO DE MEMRIA

SADA DA INSTRUO HALT

2.41 - ESTADOS WAIT DE MEMRIA OU I/O


Em geral os estados WAIT (espera) podem ser iniciados aps qualquer requisio de memria ou I/O.
Quando a memria externa ou I/O recebe um sinal RD ou WR e MREQ ou IORQ pode responder por uma
entrada WAIT para o P. O P detectar a condio WAIT e adiar outro processamento at que a memria
ou o dispositivo I/O tenha tempo para responder. As memrias externas devem ser capazes de responder
num ciclo T, ou 250 nanosegundos para clock de 4MHz, enquanto os dispositivos I/O transferem dados
para o P em torno de dois ciclos T ou 500 nanosegundos.

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.

3.2 - CLASSES DE INSTRUES


As instrues podem ser classificadas de muitas maneiras; neste texto sero classificadas em cinco
categorias principais que so:

TRANSFERNCIA DE DADOS
PROCESSAMENTO DE DADOS
BRANCH
CONTROLE
ENTRADA / SADA

Nos pargrafos seguintes sero descritas estas cinco classes de instrues.

3.3 - INSTRUES DE TRANSFERNCIA DE DADOS


As instrues de transferncia de dados, transferem dados entre registros ou entre um registro e memria,
ou entre um registro e um dispositivo de entrada/sada. Alm disso, instrues especializadas de
transferncia podem existir para registros especficos. Por exemplo, as operaes PUSH e POP existem
para operao eficiente do STACK. Tais operaes movem uma palavra de dados entre o alto do STACK e
o acumulador numa nica instruo, enquanto atualizam automaticamente o registro STACK POINTER.

3.4 - INSTRUES DE PROCESSAMENTO DE DADOS


As instrues de processamento de dados podem ser classificadas em cinco categorias gerais:

Operaes Aritmticas
Manipulao de Bit
Incremento e Decremento
Operaes Lgicas
Operaes de Rotao e Deslocamento
Operaes de Teste, Set, Reset de Bit.

3.5 - INSTRUES BRANCH


As instrues JUMP, CALL e RETURN formam a classe de instrues do Z-80 chamada de instrues
BRANCH (Desvio ou Transferncia).

As instrues BRANCH podem ser de dois tipos: Incondicional e Condicional.

As instrues BRANCH normalmente esto entre as instrues mais poderosas de um P.

3.6 - INSTRUES DE CONTROLE


As instrues de controle fornecem sinais de sincronizao e podem suspender ou interromper um
programa. Podem tambm funcionar como uma interrupo simulada (as interrupes sero descritas
posteriormente).

DATAPOOL ELETRNICA 38
MICROPROCESSADOR Z-80

3.7 - INSTRUES DE ENTRADA / SADA


As instrues de ENTRADA/SADA so instrues especializadas para o manuseio de dispositivos de
entrada/sada (I/O). O mtodo de transferncia de dados entre o P e I/O atravs das instrues de
entrada/sada chamado ENTRADA/SADA PROGRAMADA. Tem a vantagem de no necessitar de
reserva de nenhum espao no sistema de memria para dispositivos de entrada/sada.

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.

3.8 - CONJUNTO DE INSTRUES DO Z-80

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.

importante lembrar as categorias de instrues e estudar os exemplos tpicos.

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

FORMATO DAS INSTRUES

DATAPOOL ELETRNICA 40
MICROPROCESSADOR Z-80

4 - FORMATO DAS INSTRUES


4.1 - INTRODUO
As instrues do Z-80 podem ser de 1 byte ou de 2 bytes ou de 3 at 4 bytes. Uma instruo especifica a
operao a ser executada pelo P.

4.2 - MODOS DE ENDEREAMENTO


Alm do nmero de bytes as instrues podem ser diferenciadas na forma como a memria externa
endereada. Algumas instrues no requerem operando e podem ser executadas durante a ltima poro
de um ciclo de busca. Outras instrues requerem um operando de um registro do P e um segundo
operando que pode ser de outro registro do P ou memria externa. O segundo operando pode ser
especificado de vrios modos. Com um exemplo a instruo ADD soma dois operandos de 8 bits. Um dos
operandos est no registro A, enquanto o segundo operando pode estar em outro registro do P
(endereamento de registro), ou ento o segundo pode ser um valor imediato na prpria instruo ADD
(endereamento imediato), ou ainda o segundo operando pode estar na memria e ser apontado pelo
contedo do par de registros HL (endereamento indireto de registros). Finalmente o segundo operando
pode estar numa localizao de memria cujo endereo computado pela soma de um byte especial a
instruo e o contedo do registro de ndice (endereamento indexado). Conforme foi exposto o Z-80 tem
vrios modos de endereamento, que podem ser ordenados do seguinte modo:

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

Nos pargrafos seguintes sero examinados os detalhes de cada modo e endereamento.

4.3 - ENDEREAMENTO IMPLCITO


Neste modo de endereamento, o cdigo de operao da instruo fixo. No existem campos de variveis
na instruo, e a instruo sempre executa exatamente a mesma funo.

Como exemplos de instrues que usam o endereamento implcito pode-se citar as instrues:

CPL e LD SP,IY

O formato da instruo CPL, complementar acumulador, est mostrado na figura a seguir.

Byte 0 0 0 1 0 1 1 1 1 OP CODE HEX 2F

INSTRUO CPL NO MODO DE ENDEREAMENTO IMPLCITO

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

A instruo LD SP,IY est mostrada na figura a seguir.

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.

O contedo do registro IY permanece inalterado e os bits dos cdigos de condio no so afetados.

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.

4.4 - ENDEREAMENTO IMEDIATO


No modo de endereamento imediato, o segundo ou terceiro byte da instruo o prprio operando. Como
exemplos de instrues deste grupo tem se as instrues

ADD A,N e XOR N

O formato da instruo ADDA,N est mostrado na figura a seguir.

Byte 0 1 1 0 0 0 1 1 0 OP CODE HEX C6 NN


Byte 1 N N

FORMATO DA INSTRUO ADDA, N

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.

A figura a seguir mostra o formato da instruo XOR N.

Byte 0 1 1 1 0 1 1 1 0 OP CODE HEX EE NN


Byte 1 N N

FORMATO DA INSTRUO XOR N

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.

4.5 - ENDEREAMENTO IMEDIATO ESTENDIDO


Quando a instruo uma instruo do tipo imediata, porm que requer dados imediatos de 16 bits, o
formato da instruo denominado IMEDIATO ESTENDIDO.

Como exemplos de instrues deste grupo tem-se a instruo:

LD IY, NN

DATAPOOL ELETRNICA 42
MICROPROCESSADOR Z-80

Que est mostrada na figura a seguir.

Byte 0 1 1 1 1 1 1 0 1 OP CODE HEX FD 21


Byte 1 0 0 1 0 0 0 0 1 NNLS NNMS
Byte 2 Byte NN menos
significativo
Byte 3 Byte NN mais
significativo

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.

4.6 - ENDEREAMENTO DE REGISTRO

No modo de endereamento de registro, um ou mais dos registros do P endereado pela instruo.


Como exemplo tem-se a instruo RLR cujo formato est mostrado na figura a seguir.

1 1 0 0 1 0 1 1
0 0 0 1 0 R R R OP CODE HEX CB 1-

INSTRUO RLR MODO DE ENDEREAMENTO DE REGISTRO

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.

4.7 - ENDEREAMENTO INDIRETO DE REGISTRO


As instrues deste grupo incluem as instrues que usam o par de registros H e L ou BC ou DE ou SP
como apontador de endereo de memria *. Estas instrues so eficiente no acesso de dados contnuos.
DATAPOOL ELETRNICA 43
MICROPROCESSADOR Z-80

Como exemplos de instrues que usam este mtodo de endereo tem-se a instruo LDA,(BC) que
instruo de 1 byte (figura a seguir).

Byte 0 0 0 0 0 1 0 1 0 OP CODE HEX 0A

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.

Entre estes pares de registros tem-se:

Par de registros Byte mais significativo Byte menos significativo


B,C B C
D,E D E
H,L H(igh) L(ow)
SP SP bits 15-8 SP bits 7-0

*Outros pares de registros podem ser usados como apontadores.


Por exemplo, os pares BC, DE, SP.

4.8 - ENDEREAMENTO ESTENDIDO


As instrues de endereamento estendido tm o endereo dos dados na prpria instruo. Embora isto
signifique que a palavra da instruo mais longa, todas localizaes de memria podem ser endereadas
diretamente, e este modo muitas vezes denominado endereamento direto. O formato de uma instruo
que usa este tipo de endereamento est mostrado na figura a seguir, para uma instruo LDA,(NN).

byte 0 0 0 1 1 1 0 1 0 OP CODE HEX 3A


byte 1 NN Byte menos NN
significativo
byte 2 NN byte mais NN
significativo

INSTRUO LD A, NN

Na instruo LDA,(NN) mostrada na figura anterior, os bytes 1 e 2 da instruo especificam a localizao na


memria. O contedo de 8 bits desta localizao carregado no acumulador. Os cdigos de condio no
so afetados. O byte 1 do endereo o byte menos significativo, enquanto o byte 2 o mais significativo.

Como outro exemplo de ma instruo que usa o modo de endereamento estendido tem-se a instruo:

LD (NN), HL mostrada na figura a seguir.

byte 0 0 0 1 0 0 0 1 0 OP CODE HEX 22


byte 1 NN Byte menos NN
significativo
byte 2 NN byte mais NN
significativo

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

contedo do registro L guardado na localizao de memria NN e o contedo do registro H guardado na


localizao de memria N+1.

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.

4.9 - ENDEREAMENTO MODIFICADO DE PGINA ZERO


Este modo de endereamento usado somente para uma instruo que a instruo RST P ou RESTART
PAGE ZERO (Reiniciar Pgina Zero). O efeito desta instruo provocar um desvio para uma das oito
localizaes pgina zero aps empurrar o contedo corrente do contador de programa no STACK. Pgina
zero no Z-80 como em outros computadores definido como a rea de memria externa que pode ser
endereada com 8 bits. Ento, a pgina se compe de 28=256 localizaes de memria que so as
localizaes desde 0 at 255. Um desvio pode ser feito para as localizaes Hexa 00, 08, 10, 18, 20, 28, 30,
38. Esta instruo ser discutida posteriormente com mais detalhes.

4.10 - ENDEREAMENTO RELATIVO


O endereamento relativo usado principalmente para diminuir o tamanho das instrues e,
conseqentemente, reduzir a quantidade de memria que os programas ocupam. A poro de endereo
nas instrues do formato endereamento direto (estendido) de 2 bytes e permite enderear todas as
localizaes de memria (16 bits podem enderear 64k localizaes). J nas instrues do formato relativo
poro de endereo de 1 byte permitindo enderear 256 localizaes de memria em torno do endereo
da corrente instruo. A figura a seguir, mostra o formato da instruo de endereamento relativo e o
esquema da sua implementao.

byte 0 OP CODE
byte 1 Valor do deslocamento

Memria

1- O micro no endereo 0300 encontra uma instruo JUMP relativo se zero.


2- Durante a execuo da instruo de 2 bytes existentes nos endereos 0300
E 0301 0 PC incrementado para 0302.
3- A instruo JRZ,E 04 faz com que a prxima instruo a ser executada seja a do
Endereo 0302 + 04 = 0306, se o flag zero estiver setado. Caso contrrio prxima instruo
ser a do endereo 0302.

DATAPOOL ELETRNICA 45
MICROPROCESSADOR Z-80

4.11 - FORMATO DA INSTRUO DE ENDEREAMENTO RELATIVO E ESQUEMA


DE SUA IMPLEMENTAO.
Na figura anterior, o segundo byte de uma instruo de endereamento relativo um valor sinalizado dede
12810 at +12710 (80 Hex at 7F). Quando este valor somado ao contedo corrente do contador de
programa, uma localizao de memria anterior, dede 126 bytes ou posterior, at +129 byte do endereo
do op code da instruo pode ser acessada.

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.

4.12 - ENDEREAMENTO INDEXADO


O endereamento indexado um modo de endereamento que utiliza os dois registros de ndice (INDEX
REGISTERS) do Z-80 que so o

Registro de ndice X (IX) e o


Registro de ndice Y (IY).

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)

FORMATO DE UMA INSTRUO QUE UTILIZA O MODO DE ENDEREAMENTO INDEXADO

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.

Por exemplo, a instruo.

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.

ENDEREO CONTEDO HEX MNEMNICO COMENTRIO

CONTEDO 1803 FD LD IY OP CODE


DE 1804 36 OP CODE
IY 1805 40 D Deslocamento
1840 1806 24 N=24 Valor a ser
guardado
1807

1880 24 N=24 Valor guardado


ILUSTRAO A EXECUO DA INSTRUO LD (IY+40), 24

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:

Instrues LOAD de 8 bits


Instrues lgicas e aritmticas de 8 bits
Instrues de rotao e deslocamento
Instrues SET, RESET e de teste de bits.

4.13 - ENDEREAMENTO DE BIT


O ltimo grupo de endereamento o grupo de endereamento de bit. O endereamento de bit usado em
conjuno com os modos anteriores de endereamento para possibilitar o setamento, resetamento ou teste
de qualquer um dos 8 bits num operando.

Como exemplo, tem-se a instruo


SET B,(IX+D) mostra na figura a seguir.

Byte 0 OP CODE = DD
Byte 1 OP CODE = CB
Byte 2 D = DESLOCAMENTO
1 1 B B B 1 1 0

INSTRUO SET B, (IX+D) USANDO O MODO DE ENDEREAMENTO INDEXADO E


ENDEREAMENTO DE BIT

Nesta instruo o bit especificado pelo campo BBB da instruo ser setado aps a execuo a instruo.
Nenhum cdigo de condio afetado.

A seleo do bit a ser setado a seguinte:

CAMPO BIT A SER


BBB SETADO
000 0 (LSB)
001 1
010 2
011 3
100 4
101 5
110 6
111 7 (MSB)

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

ENDEREO OP CODE MENNICO COMENTRIO


HEX

1800

1810 DD SET IX Setar bit indicado


1811 CB No campo B no byte
cujo
1812 50 50=Deslocam.
1813 F6 endereo 50 + 1840

1890 80 80 Contedo existente

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.

Os bits 5 4 e 3 especificam o campo B, no caso estabelecendo bit 6 110 = 610.

DATAPOOL ELETRNICA 48
MICROPROCESSADOR Z-80

INSTRUES DE TRANSFERNCIA DE DADOS

DATAPOOL ELETRNICA 49
MICROPROCESSADOR Z-80

5 - INSTRUES DE TRANSFERNCIA DE DADOS


5.1 - INTRODUO
As instrues de transferncia de dados do Z-80 podem ser classificadas em 3 categorias:

1. Transferncias de 8 bits de dados


2. Transferncias de 16 bits de dados
3. Transferncias de bloco e procura de bloco.

5.2.1 - TRANSFERNCIAS DE 8 BITS DE DADOS

Todas as transferncias de 8 bits e dados so executadas pelas instrues LOAD.

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.

5.2.2 - INSTRUES DE TRANSFERNCIA DIRETA DE 8 BITS ENTRE REGISTROS LD R, R

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

As instrues LD r,r so de um nico byte, os flags no so afetados durante a execuo as instrues LD


r,r.

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.

5.2.3 - INSTRUES LOAD IMEDIATAS OU LD R,N

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:

Deseja-se fazer um programa comeando no endereo 8000h, que carrega os registros A, B, C, D, E e H


com o valor FF.

Obs: As ltimas instrues retornam ao programa monitor.

Soluo:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD A, 3E Carregar A com
8001 FF FF FF
8002 LD B, A 47 Mover contedo de A(FF) para B
8003 LD C, A 4F Mover contedo de A(FF) para C
8004 LD E, A 5F Mover contedo de A(FF) para E
8005 LD H, A 67 Mover contedo de A(FF) para H
8006 MONITOR CD RETORNA
8007 MONITOR E2 AO
8008 MONITOR 01 PROGRAMA MONITOR

PROGRAMA QUE CARREGA OS REGISTROS A, B, C, E e H COM FF

Experincia:

Utilizando o mdulo microcomputador SDM-Z80:

1 Entrar com o programa anterior a partir do endereo 8000h:

Para entrarmos com o programa anterior no mdulo, realizaremos os seguintes procedimentos:

Pressione a tecla INS/VER e entre com o endereo 8000h utilizando o teclado hexadecimal do mdulo. Em
seguida pressione a tecla ENTER.

Digite os seguintes bytes:

3E, FF, 47, 4F, 5F, 67, CD, E2, 01.

Sempre no final de cada programa insira os bytes CD E2 01 no lugar de 76h para retornar ao
programa monitor

Pressione a tecla ESC

2 Execute o programa a partir do endereo 8000h:

Para executarmos o programa no mdulo, realizaremos os seguintes procedimentos:

DATAPOOL ELETRNICA 51
MICROPROCESSADOR Z-80

Pressione a tecla EXEC para executar o programa (se j estiver em 8000h somente pressione
ENTER);.

3 Verificar o contedo dos registros A, B, C, D, E e H.

Para examinarmos o contedo dos registros, faamos da seguinte forma:

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:

REGISTRO CONTEDO HEX


A
B
C
D
E
H

Pressione a tecla RESET e em seguida a tecla E_REG e examine novamente o contedo dos registros.

5.2.4 - INSTRUES LOAD REGISTRO DE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDIRETAMENTE - LD R, (HL)

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.

Os flags no so afetados nas instrues LD r,(HL).

Exemplo:

LD B, (HL) Cd. Hex 46

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).

5.2.5 - INSTRUES LOAD REGISTRO DE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDEXADAMENTE LD R, (IX+D)

As instrues LD r, (IX+D) so usadas para transferir o contedo de localizao de memria endereada


pelo registro de ndice IX mais um dado valor de deslocamento (offset), para um registro especificado, que
pode ser qualquer um dos registros: A, B, C, D, E, H e L.

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.

Os flags no so afetados nas instrues LD r,(IX+d).

Exemplo:

LD C, (IX+04) Cd. Hex DD 4E 04

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).

5.2.6 - INSTRUES LOAD LOCALIZAO DE MEMRIA ENDEREADA INDIRETAMENTE DE UM


REGISTRO R LD (HL),R

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.

O registro r pode ser qualquer um dos registros.

Os flags no so afetados nas instrues LD (HL),R.

Exemplo:

LD (HL), C Cd. Hex 71

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.

5.2.7 - INSTRUES LOAD LOCALIZAO DE MEMRIA ENDEREADA INDEXADAMENTE DE UM


REGISTRO R LD (IX + D),R

Nas instrues LD (IX+d),r o contedo do registro especificado carregado na localizao de memria


endereada pelo registro de ndice IX mais um valor de offset d. Nestas instrues o contedo do registro
especificado no byte 1 da instruo guardado na posio de memria endereada pelo contedo do
registro de ndice IX mais o valor do byte 2 da instruo (d). O registro r pode ser qualquer um dos 7
registros cujos cdigos binrios j foram dados vrias vezes em instrues anteriores.

Os flags no so afetos nas instrues LD (IX+d),R.

Exemplo:

LD (IX+20), E - Cd. Hex DD 73 20

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.

5.2.8 - INSTRUES LOAD LOCALIZAO DE MEMRIA ENDEREADA INDEXADAMENTE DE UM


REGISTRO R LD (IY+D), R

As instrues LD (IY+d),r so idnticas s instrues LD (IX+d),r, exceto que utilizam o registro de ndice IY.

Existem 7 instrues LD (IY+d).

Tudo que foi escrito para as instrues LD (IX+d),R vlido de modo anlogo par as instrues LD
(IY+d),R.

5.2.9 - INSTRUO LOAD IMEDIATAMENTE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDIRETAMENTE LD (HL), N

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.

Os flags no so afetados nas instrues LD (HL),n.

Exemplo:

LD (HL), CE Cd. Hex 36 CE

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.

5.2.10 - INSTRUO LOAD IMEDIATAMENTE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDEXADAMENTE LD (IX+D), N

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).

Os flags no so afetados nas instrues LD (IX+d),n.

Exemplo:

LD (IX+10), 49 Cd. Hex DD 36 10 49

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).

5.2.11 - INSTRUO LOAD IMEDIATAMENTE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDEXADAMENTE LD (IY+D),N

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.

5.2.12 - INSTRUO LOAD ACUMULADOR DE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDIRETAMENTE PELO PAR DE REGISTROS BC LD A,(BC)

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.

5.2.13 - INSTRUO LOAD ACUMULADOR DE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDIRETAMENTE PELO PAR DE REGISTROS DE LD A,(DE)

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE COMENTRIO


8000 LD H, 26 Carregar imediatamente H com 90
8001 90 90
8002 LD L, 2E Carregar imediatamente L com 00
8003 00 00
8004 LD (HL), 36 Carregar imediatamente M* com 00

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.

PROCURE SEMPRE INTERPRETAR O PROGRAMA ANTES DE EXECUT-LO

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE COMENTRIO


8000 LD H, 26
8001 80 80
8002 LD L, 2E
8003 07 07
8004 LD (HL), 36
8005 76 76
8006 LD A,(HL) 7E
8007 LD B, 06
8008 BB BB
8009 RETORNA CD MONITOR
800A AO E2 MONITOR
800B MONITOR 01 MONITOR

DATAPOOL ELETRNICA 55
MICROPROCESSADOR Z-80

2 Executar o programa;

3 Examinar o contedo dos registros;

A = __ __

B = __ __

H = __ __

L = __ __

4 Examinar o contedo da localizao de memria 8007 __ __.

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.

5.2.14 - INSTRUO LOAD ACUMULADOR DE UMA LOCALIZAO DE MEMRIA - LD A, (NN)

A instruo LD A,(nn) de 3 bytes. Nesta instruo o contedo da localizao de memria endereada


pelos contedos dos 2 e 3 bytes da instruo carregada no acumulador.

Os flags no so afetados na instruo LD A,(nn).

Exemplo:

LD A, (1905) Cd. Hex 3A 05 19

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.

5.2.15 - INSTRUO LOAD LOCALIZAO DE MEMRIA ENDEREADA INDIRETAMENTE, DO


ACUMULADOR LD (BC), A

A instruo LD (BC),A de 1 byte. Nesta instruo o contedo do acumulador carregado na localizao


de memria endereada pelo par de registros BC.

Exemplo:

LD (BC), A Cd. Hex 02

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).

5.2.16 - INSTRUO LOAD LOCALIZAO DE MEMRIA ENDEREADA INDIRETAMENTE, DO


ACUMULADOR LD (DE), A

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.

5.2.17 - INSTRUO LOAD UMA LOCALIZAO DE MEMRIA DIRETAMENTE ENDEREADA, DO


ACUMULADOR LD (NN), 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).

Os flags no so afetados nas instrues LD (nn),A.

Exemplo:

LD (1860), A Cd. Hex 32 60 18

Admitindo-se que o acumulador A contenha AA. significa que o contedo do acumulador AA ser carregado
na posio e memria, cujo endereo 1860HEX.

5.2.18 - INSTRUO LOAD ACUMULADOR, DO REGISTRO DE INTERRUPO I LD A, I

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.

5.2.19 - INSTRUO CARREGAR ACUMULADOR, DO REGISTRO DE RESTAURAO DE MEMRIA


LD A, R

A instruo LD A,R de 2 bytes e usada para carregar o contedo do registro de restaurao de


memria 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.

5.2.20 - INSTRUO LOAD REGISTRO DO VETOR DE INTERRUPO DO ACUMULADOR LD I, A

A instruo LD I, A de 2 bytes e usada para carregar o contedo do acumulador no registro do vetor de


interrupo.

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.

5.2.21 - INSTRUO LOAD REGISTRO DE RESTAURAO DA MEMRIA DO ACUMULADOR LD


R, A

A instruo LD R, A de 2 bytes e usada para carregar o contedo do acumulador no registro de


restaurao da memria.
Exemplo:

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.

5.3 - TRANSFERNCIA DE 16 BITS DE DADOS


Este grupo permite que qualquer dos pares de registro de 16 bits, BC, DE, HL, SP, IX, IY sejam carregados
com um operandos de 16 bits, ou de um endereo especificado de memria (endereo estendido), ou do
alto do stack, isto , do endereo contido no SP.

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.

5.3.1 - OPERAES DE 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.

5.3.2 - INSTRUES DE TROCA

Outras instrues que so includas no grupo de transferncia de 16 bits de dados so as instrues


EXCHANGE. EX no uma simples transferncia de dados, mas sim uma dupla transferncia. A operao
EXCHANGE usada para trocar o contedo de duas localizaes especificadas. Pode ser usada para
trocar o alto do stack com HL, IX e IY. EXCHANGE pode ser usada para trocar o contedo do par de
registros corrente AF com o contedo do par de registros inatios AF.

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.

Os flags no so afetados nas instrues LD dd,nn.

Exemplo:

LD BC, 1122 Cd. Hex 01 22 11

Significa que o registro BC ser carregado com os dados 22 em B e 11 em C.

Experincia:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD BC, 01 Carregar BC com BBCC
8001 BBCC CC
8002 BB
8003 LD DE, 11 Carregar DE com DDEE

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.

3 Com o auxlio de E_REG examinar o contedo dos pares de registros:

BC __ __ __ __;

DE __ __ __ __;

HL __ __ __ __;

SP __ __ __ __.

5.3.4 - INSTRUO LOAD REGISTRO IX COM DADOS IMEDIATOS LD IX, NN

Esta instruo de 4 bytes. Transfere os bytes 2 e 3 da instruo para o registro IX.

Os flags no so afetados na instruo LD IX, nn.

Exemplo:

LD IX, 1900 Cd. Hex DD 21 00 19


Significa que o registro de ndice IX ser carregado com o valor 1900.

5.3.5 - INSTRUO LOAD REGISTRO IY COM DADOS IMEDIATOS LD IY, NN

A instruo LD IY,nn idntica instruo LD IX,nn exceto que utiliza o registro IY.

Os flags no so afetados na instruo LD IX, nn.

Tudo o que foi escrito para a instruo LD IX,nn vlido de modo anlogo para a instruo LD IY,nn.

5.3.6 - INSTRUO LOAD REGISTRO HL DA LOCALIZAO DE MEMRIA ENDEREADA POR NN


LD HL, (NN)

A instruo LD HL,(nn) de 3 bytes. Na execuo desta instruo o contedo do endereo de memria


especificado pelos bytes 1 e 2 da instruo carregado no registro L. E o contedo da localizao de
memria especificada pelos bytes 1 e 2 acrescido de 1 carregado no registro H.

Os flags no so afetados na instruo LD HL,(nn).

Exemplo:

LD HL, (1808) Cd. Hex 2A 08 18


Admitindo-se que o endereo 1808 contenha 00 e o endereo 1809 contenha 55, significa que o registro L
ser carregado com o contedo do endereo 1808 (00) e o registro H com o contedo do endereo 1809
(55).

DATAPOOL ELETRNICA 59
MICROPROCESSADOR Z-80

5.3.7 - INSTRUES LOAD PAR DE REGISTROS DE LOCALIZAES DE MEMRIA ENDEREADAS


POR NN LD DD, (NN)

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:

LD DE, (1850) Cd. Hex ED 5B 50 18

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).

5.3.8 - INSTRUO LOAD REGISTRO DE NDICE IX DE LOCALIZAES DE MEMRIA


ENDEREADAS POR NN LD IX, (NN)

A instruo LD IX,(nn) de 4 bytes e carrega o contedo da localizao de memria endereada pelos


bytes 2 e 3 da instruo no registro de ordem baixa de IX, enquanto o contedo da localizao de memria
seguinte carregado no registro de ordem alta de IX.

Exemplo:

LD IX, (1920) Cd. Hex DD 2A 20 19

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).

5.3.9 - INSTRUO LOAD REGISTRO DE NDICE IY DE LOCALIZAES DE MEMRIA


ENDEREADAS POR NN LD IY, (NN)

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).

5.310 - INSTRUO LOAD LOCALIZAES DE MEMRIAS ENDEREAAS POR NN, DE HL LD


(NN), HL

A instruo LD (nn),HL de 3 bytes. Esta instruo carrega o contedo do registro L na localizao de


memria endereada pelos bytes 1 e 2 da instruo. E o contedo do registro H carregado na localizao
de memria seguinte.

Exemplo:

LD (1900), HL Cd. Hex 22 00 19

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).

5.3.11 - INSTRUES LOAD LOCALIZAES DE MEMRIA ENDEREADOS POR (NN), DE PAR DE


REGISTROS LD (NN), DD

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:

LD (1902), BC Cd. Hex ED 43 02 19

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.

5.3.12 - INSTRUO LOAD LOCALIZAES DE MEMRIA ENDEREADAS POR NN DE IX LD


(NN), IX

A instruo LD (nn),IX de 4 bytes. Esta instruo carrega o contedo do registro baixo de IX na


localizao de memria endereada pelos bytes 2 e 3 da instruo e o contedo do registro alto de IX na
localizao de memria seguinte.

Exemplo:

LD (1908), IX Cd. Hex DD 22 08 19

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.

5.3.13 - INSTRUO LOAD LOCALIZAES DE MEMRIA ENDEREADAS POR NN DE IY LD


(NN), IY

A instruo LD (nn), IY idntica instruo LD (nn), IX, exceto que utiliza o registro IY.

Os flags no so afetados na instruo LD (nn),IY

Tudo o que foi escrito para a instruo LD (nn),IX vlido de modo anlogo para a instruo LD (nn),IY.

5.3.14 - INSTRUO LOAD STACK POINTER DE HL LD SP, HL

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).

Os flags no so alterados na instruo LD SP,HL.

Exemplo:

LD SP, HL Cd. Hex F9

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.

5.3.15 - INSTRUO LOAD STACK POINTER DE IX LD SP, IX

A instruo LD SP, IX de 2 bytes. Nesta instruo o contedo do par de registros IX carregado no stack
pointer.

Os flags no so alterados na instruo LD SP, IX.

Exemplo:

LD SP, IY Cd. Hex DDF9

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.

5.3.16 - INSTRUO LOAD STACK POINTER DE IY LD SP, IY

A instruo LD SP, IY de 2 bytes. Nesta instruo o contedo do par de registros IY carregado no stack
pointer.

Os flags no so alterados na instruo LD SP, IY.

Exemplo:

LD SP, IY Cd. Hex FDF9

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 SEGUIR TABELA COM AS INSTRUES TRANSFERNCIA ESTUDADAS:

Instrues de Transferncia de 8 bits


A B C D E H L (HL) (BC) (DE) (nn) n
LD A,.. 7F 78 79 7A 7B 7C 7D 7E 0A 1A 3AXXXX 3EXX
LD B,.. 47 40 41 42 43 44 45 46 06XX
LD C,.. 4F 48 49 4A 4B 4C 4D 4E 0EXX
LD D,.. 57 50 51 52 53 54 55 56 16XX
LD E,.. 5F 58 59 5A 5B 5C 5D 5E 1EXX
LD H,.. 67 60 61 62 63 64 65 66 26XX
LD L,.. 6F 68 69 6A 6B 6C 6D 6E 2EXX
LD (HL),.. 77 70 71 72 73 74 75 36XX
LD (BC),.. 02
LD (DE),.. 12
LD (nn),.. 32XXXX

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 de Transferncia e Permuta de 16 bits


BC DE HL SP IX IY
LD .., nn 01XXXX 11XXXX 21XXXX 31XXXX DD21XXXX FD21XXXX
LD .., (nn) ED4BXXXX ED5BXXXX 2AXXXX ED7BXXXX DD2AXXXX FD2AXXXX
LD (nn), .. ED43XXXX ED53XXXX 22XXXX ED73XXXX DD22XXXX FD22XXXX
LD SP, .. F9

5.3.17 - INSTRUES PUSH PAR DE REGISTROS NO STACK PUSH QQ

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD SP, 31 Carregar SP com 9007
8001 9007 07
8002 90
8003 LD BC, 01 Carregar BC com BBCC
8004 BBCC CC
8005 BB
8006 PUSH BC C5 Empurrar BC no stack
8007 RETORNA CD MONITOR
8008 AO E2 MONITOR
8009 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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.

A SEGUIR TABELA COM AS PUSH ESTUDADAS:

Instrues PUSH
BC DE HL AF IX IY
PUSH C5 D5 E5 F5 DDE5 FDE5

5.3.18 - INSTRUES POP PAR DE REGISTROS NO STACK POP QQ

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:

POP IX Cd. Hex DD E1

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD SP, 31 Carregar SP com 9006
8001 9006 06
8002 90
8003 POP DD POP IX
8004 IX E1
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

9006 DADO 06 DADO


9007 DADO 07 DADO

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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.

A SEGUIR TABELA COM AS PUSH ESTUDADAS:


Instrues POP
BC DE HL AF IX IY
POP C1 D1 E1 F1 DDE1 FDE1

5.3.19 - INSTRUES DE TROCA

Outras instrues que so includas no grupo de transferncia de 16 bits de dados so as instrues


EXCHANGE.

5.3.20 - INSTRUO EXCHANGE OS REGISTROS HL E DE EX DE, HL

A instruo EX DE, HL de 1 byte. Nesta instruo os contedos dos pares de registros DE e HL so


trocados.

Exemplo:

EX DE, HL Cd. Hex EB

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD DE, 11 Carregar SP com DDEE
8001 DDEE EE
8002 DD
8003 LD HL, 21 Carregar HL com FF00
8004 FF00 00
8005 FF
8006 EX DE,HL EB Trocar contedos DE e HL
8007 RETORNA CD MONITOR
8008 AO E2 MONITOR
8009 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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.

5.3.21 - INSTRUO EXCHANGE OS REGISTROS AF E AF EX AF, AF

A instruo EX AF, AF de 1 byte. Nesta instruo os contedos dos pares de registros AF e AF so


trocados.

Exemplo:

EX AF, AF Cd. Hex 08

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.

5.3.22 - INSTRUO EXCHANGE REGISTROS ALTERNADOS EXX

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).

Os flags no so afetados na instruo EXX.

Exemplo:

EXX Cd. Hex D9

Admitindo-se que os contedos dos registros BC, DE e HL so respectivamente BC=3926, DE=5402 e


HL=F1D0 e que os contedos dos registros BC, DE e HL so respectivamente BC=8C00, DE=93D0 e
HL=4FE3, aps a execuo da instruo EXX os registros BC, DE e HL contero BC=8C00, DE=93D0 e
HL=4FE3 e os registro BC, DE, HL contero BC=3926, DE=5402 e HL=4FE3.
DATAPOOL ELETRNICA 66
MICROPROCESSADOR Z-80

5.3.23 - INSTRUO EXCHANGE HL COM O ALTO DO STACK EX (SP), HL

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.

Os flags no so alterados na instruo EX (SP), HL

Exemplo:

EX (SP), HL Cd. Hex E3

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.

5.3.24 - INSTRUO EXCHANGE IX COM O ALTO DO STACK EX (SP), IX

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.

Os flags no so afetados na instruo EX (SP), IX

Exemplo:

EX (SP), IX Cd. Hex DD 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 IX 9050, significa que aps a execuo da instruo EX (SP), IX o registro IX conter
8000 e a posio de memria 9006 conter 50, enquanto que a posio de memria 9007 conter 19.

5.3.25 - INSTRUO EXCHANGE IY COM O ALTO DO STACK EX (SP), IY

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.

Os flags no so afetados na instruo EX (SP), IY

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.

A SEGUIR TABELA COM AS INSTRUES DE TROCA ESTUDADAS:

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

5.4 - TRANSFERNCIAS DE BLOCO E PROCURA DE BLOCO


As instrues de transferncia de bloco so instrues que resultam na transferncia de blocos de dados
em vez de 1 ou 2 bytes.
As instrues de transferncia de bloco so de implementao mais complexa e usualmente no so
disponveis nos microprocessadores. Tais instrues so convenientes para programao e podem
melhorar o desempenho de um programa, especialmente durante as operaes de entrada e sada.

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.

Existem 4 instrues de transferncia de bloco no Z-80, que so:

LDI, LDIR, LDD, LDDR.

Todas elas decrementam o registro BC com cada transferncia. A letra R no final dos mnemnicos indica
uma REPETIO automtica.

As instrues procura de bloco (SEARCH) so similares s instrues de transferncia de bloco. Existem 4


instrues SEARCH:

CPI, CPIR, CPD, CPDR.

5.4.1 - INSTRUO LOAD BLOCO COM INCREMENTO LDI

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:

LDI Cd. Hex ED A0

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD HL, 21 Carregar HL com 9000
8001 9000 00
8002 90
8003 LD DE, 11 Carregar DE com 8040
8004 8040 40
8005 80
8006 LD BC, 01 Carregar BC com 8031
8007 8031 31
8008 80
8009 LDI ED Carregar bloco com
800A A0 incremento
800B RETORNA CD MONITOR
800C AO E2 MONITOR
800D MONITOR 01 MONITOR

DATAPOOL ELETRNICA 68
MICROPROCESSADOR Z-80

9000 DADO 24 Contedo

2 Executar o programa.

3 Examinar os contedos de:

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.

5.4.2 - INSTRUO LOAD BLOCO COM INCREMENTO LDIR

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:

LDIR Cd. Hex ED B0

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD HL, 21 Carregar HL com 8050
8001 8050 50
8002 80
8003 LD DE, 11 Carregar DE com 8000
8004 8000 00
8005 80
8006 LD BC, 01 Carregar BC com (dez)
8007 000A 0A 000A
8008 00
8009 LDIR ED Carregar bloco com
800A B0 incremento
800B RETORNA CD MONITOR
800C AO E2 MONITOR
800D MONITOR 01 MONITOR

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.

3 Examinar os contedos de:

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).

5.4.3 - INSTRUO LOAD BLOCO COM INCREMENTO LDD

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:

LDD Cd. Hex ED A8

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD HL, 21 Carregar HL com 8061
8001 8061 61
8002 80
8003 LD DE, 11 Carregar DE com 8041
8004 8041 41
8005 80
8006 LD BC, 01 Carregar BC com 8031
8007 8031 31
8008 80
8009 LDD ED Carregar bloco com
800A A8 decremento
800B RETORNA CD MONITOR
800C AO E2 MONITOR
800D MONITOR 01 MONITOR

8061 DADO FF Contedo

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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.

5.4.4 - INSTRUO LOAD BLOCO COM DECREMENTO REPETINDO LDDR

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD HL, 21 Carregar HL com 8059
8001 8059 59
8002 80
8003 LD DE, 11 Carregar DE com 8009
8004 8009 09
8005 80
8006 LD BC, 01 Carregar BC com (dez)
8007 000A 0A 000A
8008 00
8009 NOP 00 Nada faz
800A LDDR ED Carregar bloco com
800B B8 decremento repetido
800C RETORNA CD MONITOR
800D AO E2 MONITOR
800E MONITOR 01 MONITOR

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.

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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).

5.4.5 - INSTRUO COMPARAR COM INCREMENTO CPI

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:

CPI Cd. Hex ED A1

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).

Os flags so afetados do seguinte modo:

S=0 j que o resultado 00Hex nmero positivo


Z=1 j que o resultado 00Hex
H=0 no h emprstimo do bit 4 para o 3
P/V=0 pois aps a execuo BC decrementado, ficando com o valor 0000Hex
N=1
C= permanece, ou seja, 0 (no caso)

HL foi incrementado indo para 8051 e BC foi decrementado indo para 0000.

Experincia:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD BC, 01 Carregar BC com 0001
8001 0001 01
8002 00
8003 LD HL, 21 Carregar HL com 8050
8004 8050 50
8005 80
8006 LD A, 3E Carregar A com 22
8007 22 22
8008 CPI ED Comparar com incremento
8009 A1
800A RETORNA CD MONITOR
800B AO E2 MONITOR
800C MONITOR 01 MONITOR

8050 DADO 22 Contedo

2 Carregar o registro F com 00.

DATAPOOL ELETRNICA 73
MICROPROCESSADOR Z-80

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos de:

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.

5.4.6 - INSTRUO COMPARAR COM INCREMENTO REPETINDO CPIR

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:

CPIR Cd. Hex ED B1

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD BC, 01 Carregar BC com 0025
8001 0025 25
8002 00
8003 LD HL, 21 Carregar HL com 8050
8004 8050 50
8005 80
8006 LD A, 3E Carregar A com FF
8007 FF FF
8008 CPIR ED Comparar bloco com
8009 B1 incremento repetindo
800A RETORNA CD MONITOR
800B AO E2 MONITOR
800C MONITOR 01 MONITOR
DATAPOOL ELETRNICA 74
MICROPROCESSADOR Z-80

8050 DADO 47 Contedo


8051 DADO 52 Contedo
8052 DADO FF Contedo
8053 DADO 90 Contedo

2 Carregar o registro F com 00.

3 Executar o programa. a partir do endereo 8000h;

4 Examinar os contedos de:

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.

5.4.7 - INSTRUO COMPARAR COM INCREMENTO CPD

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:

CPI Cd. Hex ED A9

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).

Os flags so afetados do seguinte modo:


S=0 j que o resultado 00Hex nmero positivo
Z=1 j que o resultado 00Hex
H=0 no h emprstimo do bit 4 para o 3
P/V=0 pois aps a execuo BC decrementado, ficando com o valor 0000Hex
N=1
C= permanece, ou seja, 0 (no caso)

A seguir, HL foi decrementado indo para 8050 e BC foi decrementado indo para 0000Hex.

Experincia:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD BC, 01 Carregar BC com 0001
8001 0001 01
8002 00
8003 LD HL, 21 Carregar HL com 8051
DATAPOOL ELETRNICA 75
MICROPROCESSADOR Z-80

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

8050 DADO 45 Contedo

2 Carregar o registro F com 00.

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos de:

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.

5.4.8 - INSTRUO COMPARAR BLOCO COM DECREMENTO REPETINDO CPDR

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:

CPDR Cd. Hex ED B9

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:

1 Entrar com o seguinte programa:

ENDEREO MNEMNICO OP CODE HEX COMENTRIO


8000 LD BC, 01 Carregar BC com 0025
8001 0025 25
DATAPOOL ELETRNICA 76
MICROPROCESSADOR Z-80

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

8050 DADO 47 Contedo


8051 DADO 52 Contedo
8052 DADO FF Contedo
8053 DADO 90 Contedo

2 Carregar o registro F com 00.

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos de:

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.

A SEGUIR TABELA COM AS INSTRUES DE TRANSFERNCIA DE BLOCO E PESQUISA


ESTUDADAS:

Transferncia de Blocos e Pesquisa


S Z H P/V N C
LDI EDA0 - - 0 * 0 -
LDIR EDB0 - - 0 0 0 -
LDD EDA8 - - 0 * 0 -
LDDR EDB8 - - 0 0 0 -
CPI EDA1 * * * * 1 -
CPIR EDB1 * * * * 1 -
CPD EDA9 * * * * 1
CPDR EDB9 * * * * 1

DATAPOOL ELETRNICA 77
MICROPROCESSADOR Z-80

INSTRUES DE PROCESSAMENTO DE DADOS

DATAPOOL ELETRNICA 78
MICROPROCESSADOR Z-80

6 - INSTRUES DE PROCESSAMENTO DE DADOS


6.1 - INTRODUO
As instrues de processamento de dados podem ser classificadas em cinco categorias gerais, quanto a
operaes que executam.

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.

A. Grupo lgico e Aritmtico de 8 bits;


B. Grupo Aritmtico Geral e de controle da CPU;
C. Grupo Aritmtico de 16 bits;
D. Grupo de Teste, SET, RESET de bit.

6.2 - GRUPOS LGICOS E ARITMTICOS DE 8 BITS


As instrues lgicas e aritmticas de 8 bits so usadas para as operaes: soma, subtrao, E, OU, OU
exclusivo e comparao de dois operandos de 8 bits, um dos quais deve estar no registro A. O segundo
operando pode ser um operando imediato, pode estar em outro registro do P, ou pode estar na memria e
referenciado pelo registro HL (endereamento indireto), ou pelo registro IX (endereamento indexado).

Aps a obteno dos dois operandos, a funo designada executada, e o resultado vai para o registro A.
Os cdigos de condio so atuados.

Vamos estudar agora, alguns exemplos.

6.2.1 - INSTRUES SOMAR ACUMULADOR COM REGISTRO - ADD A,R

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:

ADD A, B Cd. Hex 80

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 10 10 com 10
8002 LD B, 06 Carregar B
8003 21 21 com 21
8004 ADD A,B 80 Somar A com B
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

DATAPOOL ELETRNICA 79
MICROPROCESSADOR Z-80

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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

Os flags devero ser em binrio:

S=0, Z=0, H=0, P/V=0, N=0 e C=0.

Assim sendo um, um valor de F=20hex por exemplo, satisfaz.

Oportunamente ser feita uma explanao sobre os flags.

6.2.2 - INSTRUO SOMAR ACUMULADOR COM DADO IMEDIATO - ADD A, N

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:

ADD A, 50 Cd. Hex C6 50

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 10 10 com 10
8002 ADD A, C6 Somar a A
8003 50 50 o valor 50
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

DATAPOOL ELETRNICA 80
MICROPROCESSADOR Z-80

A = __ __

F = __ __ equivalente binrio:

S Z H P/H N C

Discusso:

O programa carrega inicialmente A com 10 e o registro de flag colocado em 00 antes da execuo do


programa. Durante a execuo a instruo ADD A,50 soma 50 ao contedo de A (10) e coloca o resultado
em A. Assim sendo os contedos no item 4 devem ser: A=60, 8003=50.

Os flags devero ser em binrio:

S=0, Z=0, H=0, P/V=0, N=0 e C=0.

Assim sendo um, um valor de F=20hex por exemplo, satisfaz.

6.2.3 - INSTRUO SOMAR ACUMULADOR COM LOCALIZAO DE MEMRIA ENDEREADA


INDIRETAMENTE - ADD A, (HL)

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:

ADD A, (HL) Cd. Hex 86

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 10 10 com 10
8002 LD HL, 21 Carregar HL
8003 nn 22 Com 8022
8004 nn 80
8005 ADD A,(HL) 86 Somar contedo do
endereo 8022 a A
8006 RETORNA CD MONITOR
8007 AO E2 MONITOR
8008 MONITOR 01 MONITOR

8022 DADO 21 Contedo

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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

Os flags devero ser em binrio:

S=0, Z=0, H=0, P/V=0, N=0 e C=0.

Assim sendo um, um valor de F=20hex por exemplo, satisfaz.

6.2.4 - INSTRUO SOMAR ACUMULADOR COM LOCALIZAO DE MEMRIA ENDEREADA


INDEXADAMENTE - ADD A, (IX+D)

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:

ADD A, (IX+03) Cd. Hex DD 86 03

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.

Este mesmo exemplo vlido usando o registro de ndice IY.

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:

ADC A,B Cd. Hex 86

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 33 33 com 33
8002 LD B, 06 Carregar B
8003 24 24 com 24
8004 STF 37 Levar Flag de carry C
para 1
DATAPOOL ELETRNICA 82
MICROPROCESSADOR Z-80

8005 ADC A,B 88 Somar A com B com C


8006 RETORNA CD MONITOR
8007 AO E2 MONITOR
8008 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos dos registros:

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

Exemplo de execuo da instruo ADC A,B

Experincia:

1 Modificar no programa anterior o contedo do endereo 8003h para E8:

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos dos registros:

A = __ __

B = __ __

F = __ __ equivalente binrio:

S Z H P/H N C

No quadro anterior C=1

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:

ADC A, 30 Cd. Hex CE 30.

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 10 10 com 10
8002 STF 37 Levar carry para 1
8003 CCF 3F Complementar carry isto
, levar C para 0
8004 ADC A, CE Somar A com 30 com
8005 30 30 Carry
8006 RETORNA CD MONITOR
8007 AO E2 MONITOR
8008 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos dos registros:

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

6.2.7 - INSTRUO SOMAR COM CARRY ACUMULADOR COM LOCALIZAO DE MEMRIA


ENDEREADA INDIRETAMENTE - ADC A, (HL)

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:

ADC A,(HL) Cd. Hex 8E

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 10 10 com 10
8002 LD HL, 21 Carregar HL
8003 nn 22 Com 8022
8004 nn 80
8005 STF 37 Levar C para 1
8006 ADC A,(HL) 8E Somar A com 43 com 1
8007 RETORNA CD MONITOR
8008 AO E2 MONITOR
8009 MONITOR 01 MONITOR

8022 DADO 21 Contedo

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo dos registros:

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

6.2.8 - INSTRUO SOMAR COM CARRY ACUMULADOR COM LOCALIZAO DE MEMRIA


ENDEREADA INDEXADAMENTE - ADC A, (IX+D)

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:

ADC A, (IX+03) Cd. Hex 8E DD 03

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.

Este mesmo exemplo vlido usando o registro de ndice IY.

6.2.9 - INSTRUES SUBTRAIR REGISTRO DO ACUMULADOR - SUB A, R

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:

SUB A,B Cd. Hex 90

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 71 71 com 71
8002 LD B, 06 Carregar B
8003 41 41 com 41
8004 SUB A,B 90 Subtrair B com A
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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

OPERAO SUBTRAO FEITA PELO MTODO CONVENCIONAL

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

OPERAO SUBTRAO FEITA PELO PROCESSO DO COMPLEMENTO DE 2.

No processo do complemento de 2, a presena de 1 no carry, significa que NO H CARRY; ento, tal


carry complementado automaticamente durante a subtrao, a fim de se obter C=0. Na experincia em
foco os contedos no item 4 devem ser:

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.

6.2.30 - INSTRUO SUBTRAIR DADO IMEDIATO DO ACUMULADOR SUB A, N

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:

SUB A, 31 Cd. Hex D6 31

Admitindo-se que o contedo n (31) ser subtrado do contedo de A (61) e o resultado 30 ficar em A.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 61 61 com 61
8002 SUB A, D6 Subtrair 31de 61
8003 31 31
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

6.2.31 - INSTRUO SUBTRAIR LOCALIZAO DE MEMRIA ENDEREADA INDIRETAMENTE DO


ACUMULADOR - SUB A, (HL)

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:

SUB A, (HL) Cd. Hex 96

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 73 73 com 73
8002 LD HL, 21 Carregar HL com
8003 8022 22 8022
8004 80
8005 SUB A,(HL) 96 Subtrair contedo
de 8022 de A
8006 RETORNA CD MONITOR
8007 AO E2 MONITOR
8008 MONITOR 01 MONITOR

8022 DADO 53 Contedo

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

6.2.32 - INSTRUO SUBTRAIR LOCALIZAO DE MEMRIA ENDEREADA INDEXAMENTE, DO


ACUMULADOR - SUB A, (IX+D)

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:

SUB A, (IX+03) Cd. Hex DD 96 03

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 75 75 com 75
8002 LD IX, DD Carregar IX com
8003 8020 21 8020
8004 20
8005 80
8006 SUB A, DD Subtrair contedo
8007 (IX+03) 96 do endereo 8023
8008 03 de A
8009 RETORNA CD MONITOR
800A AO E2 MONITOR
800B MONITOR 01 MONITOR

8023 DADO 35 Contedo

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

6.2.33 - INSTRUO SUBTRAIR LOCALIZAO DE MEMRIA ENDEREADA INDEXADAMENTE DO


ACUMULADOR - SUB A, (IY+D)

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).

6.2.34 - INSTRUO SUBTRAIR COM CARRY (BORROW) DE UM OPERANDO ESPECIFICADO DO


ACUMULADOR - SBC A, S

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.

6.2.35 - INSTRUO SUBTRAIR COM CARRY REGISTRO DO ACUMULADOR - SBC A, R

As instrues SBC A, r so de um nico byte. Nestas instrues o contedo do registro especificado e o


contedo do flag C so ambos subtrados do acumulador.

Exemplo:

SBC A, B Cd. Hex 96

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 36 36 com 36
8002 LD B, 06 Carregar B
8003 24 24 Com 24
8004 STF 37 Subtrair (B+C) de
A
8005 SBC A, B 98 Subtrair (B+C) de
A
8006 RETORNA CD MONITOR
8007 AO E2 MONITOR
8008 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

6.2.36 - INSTRUES E LGICO DO ACUMULADOR COM REGISTRO R - AND R

As instrues AND r so de um nico byte. Nestas instrues o contedo do acumulador e o contedo do


registro especificado fazem um E lgico e o resultado guardado no acumulador.

Exemplo:

AND B Cd. Hex A0

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.

Existem sete instrues AND R,

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 36 36 com 36
8002 LD B, 06 Carregar B
8003 0F 0F Com 0F
8004 AND B A0 Fazer E de B com A
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

A = __ __

B = __ __

F = __ __ equivalente binrio:

S Z H P/H N C

No quadro anterior C = __

Discusso:

DATAPOOL ELETRNICA 91
MICROPROCESSADOR Z-80

O programa faz um E lgico entre o contedo de A (36)Hex e o contedo de B (0F). O resultado 06


colocado em A. Este um exemplo em que se faz a converso do cdigo ASCII para o cdigo BCD.

6.2.37 - INSTRUES E LGICO DO ACUMULADOR COM UM DADO IMEDIATO - AND N

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:

AND 50 Cd. Hex E6 50

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 61 61 com 61
8002 AND E6 Fazer E entre A
8003 50 50 e o valor 50
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

6.2.38 - INSTRUES E LGICO DE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDIRETAMENTE COM O ACUMULADOR AND (HL)

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 73 73 com 73
8002 LD HL, 21 Carregar HL
8003 8022 22 com 8022
8004 80
8005 AND (HL) A6 Fazer E entre contedo
de 8022 e A
8006 RETORNA CD MONITOR
8007 AO E2 MONITOR
8008 MONITOR 01 MONITOR

8022 DADO 53 Contedo

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

6.2.39 - INSTRUES E LGICO DE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDEXADAMENTE COM O ACUMULADOR - AND (IX+D)

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:

AND (IX+03) Cd. Hex DD A6 03


Admitindo-se que o contedo de A seja 75, e de IX 8020 e que no endereo de memria 8023 contenha 35,
significa que o contedo (35) do endereo de memria indicado por IX+03 (ou seja 8023) far um E lgico
com o contedo de A, o resultado ficar em A.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A
8001 75 75 com 75
8002 LD IX, DD Carregar IX
8003 8020 21 com 8020
8004 20
DATAPOOL ELETRNICA 93
MICROPROCESSADOR Z-80

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

8023 DADO 35 Contedo

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

Este mesmo exemplo vlido usando o registro de ndice IY.

6.2.40 - INSTRUES OU LGICO DO ACUMULADOR COM REGISTRO R - OR R

As instrues OR r so de um nico byte. Nestas instrues o contedo do acumulador e o contedo do


registro especificado fazem um OU lgico e o resultado guardado 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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 06
8001 06 06
8002 LD B, 06 Carregar B com 30
8003 30 30
8004 OR B B0 Fazer OU de B com A
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

DATAPOOL ELETRNICA 94
MICROPROCESSADOR Z-80

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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

6.2.41 - INSTRUES OU LGICO DO ACUMULADOR COM UM DADO IMEDIATO - OR N

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.

6.2.42 - INSTRUES OU LGICO DE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDIRETAMENTE COM O ACUMULADOR OR (HL)

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.

6.2.43 - INSTRUES OU LGICO DE UMA LOCALIZAO DE MEMRIA ENDEREADA


INDEXADAMENTE COM O ACUMULADOR - OR (IX+D)

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.

6.2.44 - INSTRUES OU EXCLUSIVO DO ACUMULADOR COM REGISTRO R - XOR R

As instrues XOR r so de um nico byte. Nestas instrues o contedo do acumulador e o contedo do


registro especificado faz a operao lgica OU Exclusivo com o contedo do registro especificado, o
resultado guardado no acumulador.

Exemplo:

XOR B Cd. Hex A8

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 81
8001 81 81
DATAPOOL ELETRNICA 95
MICROPROCESSADOR Z-80

8002 LD B, 06 Carregar B com 41


8003 41 41
8004 XOR B A8 Fazer XOR entre A e B
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

6.2.45 - INSTRUES OU EXCLUSIVO DO ACUMULADOR COM DADO IMEDIATO - XOR N

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.

6.2.46 - INSTRUES OU EXCLUSIVO DO ACUMULADOR COM LOCALIZAO DE MEMRIA


ENDEREADA INDIRETAMENTE XOR (HL)
A instruo XOR (HL) de 1 byte. Nesta instruo o contedo de localizao de memria endereada pelo
par de registro HL faz um OU Exclusivo com o contedo do acumulador.

6.2.47 - INSTRUES OU EXCLUSIVO DO ACUMULADOR COM LOCALIZAO DE MEMRIA


ENDEREADA INDEXADAMENTE - XOR (IX+D)

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.

6.2.48 - INSTRUES COMPARAO DE UM REGISTRO R COM O ACUMULADOR - CP R

As instrues CP r so de um nico byte. Nestas instrues o contedo do registro especificado subtrado


do acumulador, e o resultado desprezado. O registro r pode ser qualquer um dos registros.

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 27
8001 27 27
8002 LD B, 06 Carregar B com 27
8003 27 27
8004 CP B B8 Comparar A com B
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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:

1 Modificar o programa anterior colocando no endereo 8003h o valor 26h;

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo dos registros:

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:

1 Modificar o programa anterior colocando no endereo 8003h o valor 29h;

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo dos registros:


A = __ __

B = __ __

F = __ __ equivalente binrio:
S Z H P/H N C

4 No quaro anterior Z=__ e 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.

6.2.49 - INSTRUES INCREMENTAR REGISTRO R INC R

As instrues INC r so de um nico byte. Nestas instrues o contedo do registro especificado


incrementado. O registro r pode ser qualquer um dos registros.

Exemplo:

INC C Cd. Hex 0C

Admitindo-se que o contedo de C seja 85h, significa que o contedo de C incrementado de 1 ficando
86h.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD C, 0E Carregar C com 85
8001 85 85
8002 INC C 0C Incrementar C de 1
8003 RETORNA CD MONITOR
8004 AO E2 MONITOR
8005 MONITOR 01 MONITOR

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

Existem outras instrues de incremento no Z-80, algumas delas so:

INC (HL) INC (IX+d) INC (IY+d)

6.2.50 - INSTRUES DECREMENTAR REGISTRO R DEC R

As instrues DEC r so de um nico byte. Nestas instrues o contedo do registro especificado


decrementado. O registro r pode ser qualquer um dos registros.

Exemplo:

DEC B Cd. Hex 05

Admitindo-se que o contedo de B seja 85h, significa que o contedo de B decrementado de 1 ficando
84h.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD B, 06 Carregar B com 85
8001 85 85
8002 DEC B 05 Decrementa B de 1
8003 RETORNA CD MONITOR
8004 AO E2 MONITOR
8005 MONITOR 01 MONITOR

2 Carregar o registro F com 00h;

3 Executar o programa a partir do endereo 8000h;

4 Examinar os contedos dos registros:

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.

Existem outras instrues de incremento no Z-80, algumas delas so:


DATAPOOL ELETRNICA 99
MICROPROCESSADOR Z-80

DEC (HL) DEC (IX+d) DEC (IY+d)

Exerccios de aplicao

Nos exerccios de aplicao so apresentados alguns programas teis. Programas estes freqentemente
encontrados em aplicaes.

1 Fazer um programa que efetue a soma dos nmeros 900d e 700d.

Soluo:

700d =02BCh
900d =0384h

A soma poder ser feita e acompanhada atravs da experincia seguinte:

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 06 Carregar A com 00
8001 00 00 (Clear Acumulador)
8002 LD B, 06 Carregar B com Byte
8003 02 02 superior de 70010
8004 LD C, OE Carregar C com Byte
8005 BC BC Inferior de 70010
8006 LD D, 16 Carregar D com Byte
8007 03 03 superior de 90010
8008 LD E, 1E Carregar E com Byte inferior
8009 84 84 de 90010
800A ADD A, C 81 Somar a A o byte inferior de
70010
800B ADD A, E 83 Somar a A o byte LS* de 900
800C LD L, A 6F Guardar soma parcial em L
800D LD A, 3E Carregar A com 00
800E 00 00 (Clear Acumulador)
800F ADC A, B 88 Somar com carry MS byte de
700 a A
8010 ADD A, D 82 Somar MS byte de 900 a A
8011 LD H, A 67 Guardar soma parcial em H
8012 RETORNA CD MONITOR
8013 AO E2 MONITOR
8014 MONITOR 01 MONITOR

*LS = Menos significativo e MS = mais significativo

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos dos registros:

H = __ __

L = __ __

DATAPOOL ELETRNICA 100


MICROPROCESSADOR Z-80

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 soma guardada no registro L e o carry final fica no flag C.

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

A resposta completa 0640 Hex que equivalente a 160010.

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

6.3.1 - FLAG CARRY - C

Este flag associado principalmente com operaes aritmticas e shift. Embora seja levada a 0 pelas
instrues lgicas.

O funcionamento bsico do flag C :

- C vai para 0 se: No ocorreu um vai 1 ou pede emprstimo.

- C vai para 1 se: Ocorreu um vai 1 ou pede emprestado.

6.3.2 - FLAG - N

O Flag N chamado Flag de subtrao.

DATAPOOL ELETRNICA 101


MICROPROCESSADOR Z-80

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.

O funcionamento bsico doe flag N :

- N vai para 0 se: Aps uma operao de adio.

- N vai para 1 se: Aps uma operao de 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.

6.3.3 - FLAG DE PARIDADE/OVERFLOW - (P/V)

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.

A paridade freqentemente usada em blocos de caracteres (exemplo no formato ASCII) e auxilia na


deteco de erros, em especial erros de transmisso.

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 em resumo, o funcionamento bsico doe flag P/V :

- P/V vai para 0 se: O nmero de 1s do resultado for mpar.

- P/V vai para 1 se: O nmero de 1s do resultado for par.


Flag P/V no sentido overflow

- P/V vai para 1 se: Ocorreu overflow.

- P/V vai para 0 se: No ocorreu overflow.

6.3.4 - FLAG MEIO CARRY - H

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:

- H vai para 1 se: houver um carry do bit 3 para o 4 ou um emprstimo do bit 4


para o bit 3.

DATAPOOL ELETRNICA 102


MICROPROCESSADOR Z-80

- H vai para 0 se: no houver um carry do bit 3 para o 4 ou um emprstimo do bit 4


para o bit 3.

Observao:

H no afetado pelas instrues soma e subtrao de 16 bits.

6.3.5 - FLAG ZERO - Z

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:

- Z vai para 1 se: o resultado de uma operao lgica ou aritmtica zero.

- Z vai para 0 se: o resultado de uma operao lgica ou aritmtica no zero.

6.3.6 - FLAG DE SINAL - S

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:

- S vai para 1 se: o sinal do resultado (bit 7) 1 (negativo)

- S vai para 0 se: o sinal do resultado (bit 7) 0 (positivo)

A SEGUIR TABELA COM AS INSTRUES LGICAS E ARTMTICAS ESTUDADAS:

Instrues Lgicas e Aritmticas de 8 bits


B C D E H L (HL) A n (IX+d) (IY+d)
ADD 80 81 82 83 84 85 86 87 C6XX DD86XX FD86XX
ADC 88 89 8A 8B 8C 8D 8E 8F CEXX DD8EXX FD8EXX
SUB 90 91 92 93 94 95 96 97 D6XX DD96XX FD96XX
SBC 98 99 9A 9B 9C 9D 9E 9F DEXX DD9EXX FD9EXX
AND A0 A1 A2 A3 A4 A5 A6 A7 E6XX DDA6XX FDA6XX
XOR A8 A9 AA AB AC AD AE AF EEXX DDAEXX FDAEXX
OR B0 B1 B2 B3 B4 B5 B6 B7 F6XX DDB6XX FDB6XX
CP B8 B9 BA BB BC BD BE BF FEXX DDBEXX FDBEXX
INC 04 0C 14 1C 24 2C 34 3C DD34XX FD34XX
DEC 05 0D 15 1D 25 2D 35 3D DD35XX FD35XX

DATAPOOL ELETRNICA 103


MICROPROCESSADOR Z-80

GRUPO ARITMTICO GERAL E DE CONTROLE DA CPU

DATAPOOL ELETRNICA 104


MICROPROCESSADOR Z-80

7 - GRUPO ARITMTICO GERAL E DE CONTROLE DA CPU


As instrues deste grupo usam endereamento implcito envolvendo um ou nenhum operando.

7.1 - INSTRUO AJUSTE DECIMAL DO ACUMULADOR - DAA


A instruo DAA de um nico byte. Seu cdigo 27Hex. Esta instruo faz automaticamente o ajuste do
acumulador para BCD, baseado no registro de status, aps as operaes aritmticas de soma ou subtrao.
usada aps as instrues ADD, ADC, INC, SUB, SBC, DEC ou NEG.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 85
8001 85 85
8002 ADD C6 Somar a A
8003 97 97 97
8004 DAA 27 Fazer um ajuste decimal
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos dos registros:

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 98
8001 98 98
8002 SUB D6 Subtrair 10 de 98
8003 10 10
8004 DAA 27 Fazer um ajuste decimal
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

DATAPOOL ELETRNICA 105


MICROPROCESSADOR Z-80

2 Executar o programa a partir do endereo 8000h

3 Examinar os contedos dos registros:

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.

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos dos registros:

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.

7.2 - INSTRUO COMPLEMENTAR ACUMULADOR - CPL


A instruo CPL de um nico byte e seu cdigo 2Fh. Nesta instruo o contedo do acumulador
complementado (os bits 0 so trocados por 1 e os bits 1 so trocados por 0).

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 00
8001 00 00
8002 CPL 2F Complementar A
8003 RETORNA CD MONITOR
8004 AO E2 MONITOR
8005 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

DATAPOOL ELETRNICA 106


MICROPROCESSADOR Z-80

3 Examinar os contedos dos registros:

A = __ __

F = __ __ equivalente binrio:

S Z H P/H N C

No quadro anterior C = __

Discusso:

O programa complementa o contedo do acumulador. Assim no item 3 os resultados obtidos so A=FF os


flags H e N devem ser ambos 1.

7.3 - INSTRUO NEGAR ACUMULADOR OU INSTRUO COMPLEMENTO DE


DOIS - NEG
A instruo NEG de dois bytes. Nesta instruo o contedo do acumulado subtrado de 0 (complemento
de 2), e o resultado guardado no acumulador.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 01
8001 01 01 (Significa +1)
8002 NEG ED Efetuar o complemento
8003 44 de 2
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos dos registros:

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.

DATAPOOL ELETRNICA 107


MICROPROCESSADOR Z-80

A SEGUIR TABELA COM AS INSTRUES DE CONTROLE DA CPU

Instrues de Controle da CPU


S Z H P/V N C
DAA 27 * * * * - *
CPL 2F - - 1 - 1 -
NEG ED 44 * * * * 1 *

7.4 - INSTRUO COMPLEMENTAR O FLAG CARRY - CCF


A instruo CCF de 1 byte. Nesta instruo o flag C complementado.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 CCF 3F Complementar o Flag Carry
8001 RETORNA CD MONITOR
8002 AO E2 MONITOR
8003 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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.

7.5 - INSTRUO SET O FLAG DE CARRY - SCF


A instruo SCF de 1 byte. Nesta instruo o flag C levado para 1.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 SCF 37 Levar flag carry para 1
8001 CCF 3F Complementar flag carry (isto
levar para 0)
8002 CCF 3F Complementar flag carry (isto
levar para 1)
8003 RETORNA CD MONITOR
8004 AO E2 MONITOR
8005 MONITOR 01 MONITOR

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).

7.6 - INSTRUO PARAR CPU - HALT

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.

7.7 - INSTRUES INABILITAR INTERRUPES 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. Uma interrupo mascarvel pode ser desarmada de sua execuo por DI e pode ser
reabilitada por uma instruo EI.

7.8 - INSTRUO HABILITAR INTERRUPES EI


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 P
Z-80. Por exemplo seqncia de instrues:

EI
RETI

No causar a aceitao de interrupes mascarveis at aps a execuo da instruo RETI. A demora de


uma instruo para habilitar interrupes essencial pela seguinte razo: muito comum para as rotinas de
servio de interrupo (ISR) finalizar com a seqncia de instrues EI e RETI. A demora de uma instruo
assegura que o retorno da interrupo ser executado antes de outras interrupes. Isto impede que o
Stack seja montado desnecessariamente devido a interrupes ocorrendo durante a execuo da instruo
EI. Observe que o efeito da instruo DI imediato.

DATAPOOL ELETRNICA 109


MICROPROCESSADOR Z-80

7.9 - INSTRUO SETAR CONDIO DE MODO ZERO DE INTERRUPES - IM 0


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 bus de dados para
execuo, o primeiro byte da qual deve ocorrer durante o ciclo de reconhecimento de interrupo.

7.10 - INSTRUO SETAR CONDIO DE INTERRUPO DE MODO UM - IM 1


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.

7.11 - INSTRUO SETAR CONDIO DE INTERRUPO DE MODO DOIS - IM 2


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.

A SEGUIR TABELA COM AS INSTRUES DE CONTROLE DA CPU ESTUDADAS:

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

DATAPOOL ELETRNICA 110


MICROPROCESSADOR Z-80

GRUPO ARITMTICO DE 16 BITS

DATAPOOL ELETRNICA 111


MICROPROCESSADOR Z-80

8 - GRUPO ARITMTICO DE 16 BITS


Todas instrues deste grupo operam com valores de dupla preciso de 16 bits da CPU (IX, IY ou SP).

8.1 - INSTRUO SOMAR HL E PAR DE REGISTROS ESPECIFICADOS POR SS -


ADD HL, SS
As instrues ADD HL, SS so de um nico byte. Nesta instruo o contedo do par de registros
especificado por SS somado ao contedo do par de registros HL e o resultado guardado em HL. SS
pode especificar qualquer um dos seguintes pares de registros: BC, DE, HL e SP.

Exemplo:

ADD HL, SS Cd. Hex 09

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD BC, 01 Carregar BC com 1400
8001 1400 00
8002 14
8003 LD HL, 21 Carregar HL com 2300
8004 2300 00
8005 23
8006 ADD HL, BC 09 Somar BC com HL
8007 RETORNA CD MONITOR
8008 AO E2 MONITOR
8009 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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.

DATAPOOL ELETRNICA 112


MICROPROCESSADOR Z-80

8.2 - INSTRUO SOMAR CARRY HL E PAR DE REGISTROS ESPECIFICADOS POR


SS - ADC HL, SS
As instrues ADC HL, SS so de dois byte. Nesta instruo o contedo do par de registros especificado
por SS somado ao contedo do par de registros HL e somado ao carry C. O resultado guardado em
HL. SS pode especificar qualquer um dos seguintes pares de registros: BC, DE, HL e SP.

Exemplo:

ADC HL, SS Cd. Hex ED 4A

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD BC 01 Carregar BC com 8800
8001 8800 00
8002 88
8003 LD HL 21 Carregar HL com 9900
8004 9900 00
8005 99
8006 SCF 37 Levar C para 1
8007 ADC HL, BC ED Somar o contedo de HL
8008 4A com BC com C
8009 RETORNA CD MONITOR
800A AO E2 MONITOR
800B MONITOR 01 MONITOR

2 Executar o programa partir do endereo 8000h

3 Examinar os contedos de:

BC = __ __ __ __
HL = __ __ __ __
F = __ __ Equivalente binrio

S Z H P/V N C

No quadro anterior H = __ P/V = __ 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.

8.3 - INSTRUO SUBTRAIR COM CARRY CONTEDO DE REGISTROS


ESPECIFICADOS DO CONTEDO DE HL - SBC HL, SS
As instrues SBC HL, SS so de dois bytes. Nesta instruo o contedo de par de registros especificados
mas o contedo do flag carry so subtrados do contedo do par de registros HL e o resultado guardado
em HL. SS pode especificar qualquer um dos seguintes pares de registro: BC, DE, HL e SP.

DATAPOOL ELETRNICA 113


MICROPROCESSADOR Z-80

Exemplo:

SBC HL, SS Cd. Hex ED 42

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD BC 01 Carregar BC com 1798
8001 1798 17
8002 98
8003 LD HL 21 Carregar HL com 1999
8004 1999 19
8005 99
8006 SCF 37 Levar C para 1
8007 SBC HL, BC ED Subtrair (BC + C) de HL
8008 42
8009 RETORNA CD MONITOR
800A AO E2 MONITOR
800B MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

BC = __ __ __ __
HL = __ __ __ __
F = __ __ Equivalente binrio

S Z H P/V N C

No quadro anterior H = __ P/V = __ 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.

8.4 - INSTRUO SOMAR PAR DE REGISTROS IX COM PAR DE REGISTROS


ESPECIFICADOS RR - ADD IX, RR
As instrues ADD IX, rr so de dois byte. Nesta instruo o contedo do par de registros especificado por
rr somado ao contedo do par de registros IX e o resultado guardado em IX. rr pode especificar
qualquer um dos seguintes pares de registros: BC, DE, IX e SP.

Exemplo:

ADD IX, rr Cd. Hex DD 09

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.

DATAPOOL ELETRNICA 114


MICROPROCESSADOR Z-80

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD BC 01 Carregar BC com 1400
8001 1400 00
8002 14
8003 LD IX DD Carregar IX com 2600
8004 2600 21
8005 00
8006 26
8007 ADD IX, BC DD Somar IX com BC
8008 4A
8009 RETORNA CD MONITOR
800A AO E2 MONITOR
800B MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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.

8.5 - INSTRUO SOMAR PAR DE REGISTROS IY COM PAR DE REGISTROS


ESPECIFICADOS RR - ADD IY, RR
As instrues ADD IY, rr so idnticas as instrues ADD IX, rr exceto que utilizam o registro de ndice IY. rr
pode especificar qualquer um dos seguintes pares de registros: BC, DE, IY e SP. Tudo que foi escrito para a
instruo ADD IX, rr valido de modo anlogo para a instruo ADD IY, rr.

8.6 - INSTRUO INCREMENTAR PAR DE REGISTROS RR - INC RR


As instrues INC rr so de um nico byte exceto as instrues INC IX e INC IY que so de 2 bytes . Nesta
instruo o contedo do par de registros especificado por rr incrementado e o resultado guardado no par
de registros. rr pode especificar qualquer um dos seguintes pares de registros: BC, DE, HL, IX, IY e SP.

Exemplo:

INC DE Cd. Hex. 13

DATAPOOL ELETRNICA 115


MICROPROCESSADOR Z-80

Admitindo-se que o contedo de DE seja 1985, significa que o contedo de DE incrementado de 1 e o


resultado colocado em DE.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD DE 01 Carregar DE com 1985
8001 1985 85
8002 19
8003 INC DE 13 Incrementar DE de 1
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar os contedos de:

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.

8.7 - INSTRUES DECREMENTAR PAR DE REGISTROS - DEC RR


As instrues DEC rr so de um nico byte, exceto as instrues DEC IX e DEC IY que so de dois bytes.
Nestas instrues o contedo do par de registros especificado decrementado e o resultado guardado no
par de registros. rr pode especificar qualquer um dos registros BC, DE, HL, IX, IY e SP

Exemplo:

DEC DE Cd. Hex 1B

Admitindo-se que o contedo de DE seja 1986, significa que o contedo de DE decrementado de 1 e o


resultado colocado em DE.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD DE, 11 Carregar DE com 1986
8001 1986 86
8002 19
8003 DEC DE 1B Decrementar DE
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

DE = __ __ __ __

DATAPOOL ELETRNICA 116


MICROPROCESSADOR Z-80

Discusso:

O programa decrementa de 1 o contedo de DE e coloca o resultado em DE. O resultado no item 3 dever


ser DE = 1985.

A SEGUIR TABELA COM AS INSTRUES ESTUDADAS:

Instrues Aritmticas de 16 Bits


BC DE HL SP IX IY
INC .. 03 13 23 33 DD 23 FD 23
DEC .. 08 1B 2B 3B DD 2B FD 2B
ADD HL, .. 09 19 29 39
ADC HL, .. ED 4A ED 5A ED 6A ED 7A
SBC HL, .. ED 42 ED 52 ED 62 ED 72
ADD IX, .. DD 09 DD 19 DD 29
ADD IY, .. FD 09 FD 19 FD 39 FD 29

DATAPOOL ELETRNICA 117


MICROPROCESSADOR Z-80

GRUPO DE DESLOCAMENTO E ROTAO

DATAPOOL ELETRNICA 118


MICROPROCESSADOR Z-80

9 - GRUPO DE DESLOCAMENTO E ROTAO


Existem setenta e quatro instrues de deslocamento e rotao no Z-80. As quatro instrues de rotao do
acumulador RLCA, RLA, RRCA e RRA so includas no conjunto de instrues do Z-80 somente para
manter a compatibilidade com o conjunto de instrues do 8080A da Intel. Estas quatro instrues afetam
somente o flag de carry C. Todas outras setenta instrues restantes afetam todos flags de carry, zero,
paridade/overflow e sinal.

9.1 - INSTRUO ROTAO CIRCULAR DO ACUMULADOR ESQUERDA


RLCA
A instruo RLCA de um byte. Nesta instruo o contedo do acumulador rodado para a esquerda uma
posio. O LSB e C recebem ambos, o valor original do MSB.

Exemplo:

RLCA Cd. Hexa 07

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 80
8001 80 80
8002 RLCA 07 Rotao circular de A a
esquerda
8003 RETORNA CD MONITOR
8004 AO E2 MONITOR
8005 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

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.

9.2 - INSTRUO ROTAO CIRCULAR DO ACUMULADOR ESQUERDA


ATRAVS DO CARRY RLA
A instruo RLA de um byte. Nesta instruo o contedo do acumulador rodado para a esquerda uma
posio atravs do carry (C). O LSB recebe o contedo original do carry C, e o contedo original do MSB
movido para o flag C.

DATAPOOL ELETRNICA 119


MICROPROCESSADOR Z-80

Exemplo:

RLA Cd. Hexa 17

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 01
8001 01 01
8002 SCF 37 Setar C para 1
8003 RLA 17 Rodar A para a esquerda
atravs de C
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

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.

9.3 - INSTRUO ROTAO CIRCULAR DO ACUMULADOR DIREITA - RRCA


A instruo RLCA de um byte. Nesta instruo o contedo do acumulador rodado para a direita uma
posio. O MSB e C recebem ambos, o valor original do LSB.

Exemplo:

RRCA Cd. Hexa 0F

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.

9.4 - INSTRUO ROTAO CIRCULAR DO ACUMULADOR DIREITA ATRAVS


DO CARRY RRA
A instruo RLA de um byte. Nesta instruo o contedo do acumulador rodado para a direita uma
posio atravs do carry (C). O MSB recebe o valor deslocado de C, e o flag C recebe o valor deslocado de
LSB.

DATAPOOL ELETRNICA 120


MICROPROCESSADOR Z-80

Exemplo:

RRA Cd. Hexa 1F

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.

9.5 - INSTRUO ROTAO CIRCULAR DE UM REGISTRO R ESQUERDA RLC


R
As instrues RLC r so de dois bytes. Nestas instrues o contedo do registro especificado rodado
para a esquerda uma posio. O LSB e C recebem ambos, o valor original do MSB, r pode especificar
qualquer um dos registros A, B, C, D, E, H, L.

Exemplo:

RLC D Cd. Hexa CB 02

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD D, 3E Carregar D com 80
8001 80 80
8002 RLC D CB Rotao circular de D
02 esquerda
8003 RETORNA CD MONITOR
8004 AO E2 MONITOR
8005 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

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.

9.6 - INSTRUO ROTAO CIRCULAR ESQUERDA DE UMA LOCALIZAO DE


MEMRIA ENDEREADA INDIRETAMENTE RLC (HL)
A instruo RLC (HL) de dois bytes. Nesta instruo o contedo da localizao de memria endereada
pelo contedo do par de registros HL rodado para a esquerda uma posio, e o resultado guardado
naquela localizao. O LSB e C recebem ambos o valor original do MSB.

DATAPOOL ELETRNICA 121


MICROPROCESSADOR Z-80

Exemplo:

RLC (HL) Cd. Hexa CB 06

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.

9.7 - INSTRUO ROTAO CIRCULAR ESQUERDA DE UMA LOCALIZAO DE


MEMRIA ENDEREADA INDEXADAMENTE RLC (IX+D) E RLC (IY+D)
A instrues RLC (IX+d) e RLC (IY+d) so de quatro bytes. Nestas instrues o contedo da localizao de
memria endereada pelo contedo dos registros de ndice IX ou IY mais o valor de deslocamento (offset)
roda para a esquerda uma posio, e o resultado guardado naquela localizao. O LSB e C recebem
ambos o valor original do MSB.

Exemplo:

RLC (IX+03) Cd. Hexa DD CB 03 06

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD IX, DD Carregar IX com 9082
8001 9082 21
8002 82
8003 90
8004 RLC (IX+03) DD Fazer a rotao esquerda
8005 CB do contedo do endereo
8006 03 9085
8007 06
8008 RETORNA CD MONITOR
8009 AO E2 MONITOR
800A MONITOR 01 MONITOR

8085 DADO 80

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

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:

IX = 9082, 9085 = 01, e os flags tero os valores S = 0, Z = 0, H = 0, P/V = 0, N = 0 e C = 1.


DATAPOOL ELETRNICA 122
MICROPROCESSADOR Z-80

9.8 - INSTRUES ROTAO ESQUERDA DE UM REGISTRO RL R


As instrues RL r so de dois bytes. Nestas instrues o contedo do registro especificado rodado para
a esquerda uma posio atravs do carry (C). O LSB recebe o contedo original do carry C, e o contedo
original do MSB movido para o flag C, r pode especificar qualquer um dos registros A, B, C, D, E, H, L.

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 01
8001 01 01
8002 SCF 37 Setar C para 1
8003 RLA CB Rodar A para a esquerda
8004 17 atravs de C
8005 RETORNA CD MONITOR
8006 AO E2 MONITOR
8007 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

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.

9.9 - INSTRUO ROTAO CIRCULAR ESQUERDA DE UMA LOCALIZAO DE


MEMRIA ENDEREADA INDIRETAMENTE RL (HL)
A instruo RL (HL) de dois bytes. Nesta instruo o contedo da localizao de memria endereada
pelo contedo do par de registros HL rodado para a esquerda uma posio, e o resultado guardado
naquela localizao de memria.

Exemplo:

RL (HL) Cd. Hexa CB 16


Admitindo-se que o contedo de HL seja 1985, que o contedo do endereo de memria 1985 seja 01 e
que C seja 1, significa que o contedo (01) do endereo de memria 1985 sofrer uma rotao esquerda
atravs do carry e o resultado fica no endereo 1985.

DATAPOOL ELETRNICA 123


MICROPROCESSADOR Z-80

9.10 - INSTRUO ROTAO CIRCULAR ESQUERDA DE UMA LOCALIZAO DE


MEMRIA ENDEREADA INDEXADAMENTE RL (IX+D) E RL (IY+D)
A instrues RLC (IX+d) e RLC (IY+d) so de quatro bytes. Nestas instrues o contedo da localizao de
memria endereada pelo contedo dos registros de ndice IX ou IY mais o valor de deslocamento (offset)
roda para a esquerda uma posio atravs do carry (C). O LSB recebe o contedo original do carry C, e o
contedo original do MSB movido para o flag C. O resultado guardado naquela posio de memria.

Exemplo:

RL (IX+05) Cd. Hexa FD CB 05 16

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD IX, DD Carregar IX com 9080
8001 9080 21
8002 80
8003 90
8004 SCF 37 Levar C para 1
8005 RLC (IX+05) DD Fazer a rotao esquerda
8006 CB atravs do carry do contedo
8007 05 do endereo 9085
8008 16
8009 RETORNA CD MONITOR
800A AO E2 MONITOR
800B MONITOR 01 MONITOR

8085 DADO 80

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

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:

IX = 9080, 9085 = 03, e os flags tero os valores S = 0, Z = 0, H = 0, P/V = 1, N = 0 e C = 1.

9.11 - INSTRUES ROTAO CIRCULAR DIREITA RRC S


Nestas instrues o contedo da localizao determinada pelo operando especificado roda para a direita e
o resultado guardado na localizao original. O LSB movido para MSB bem como para C. S pode ser
DATAPOOL ELETRNICA 124
MICROPROCESSADOR Z-80

qualquer um dos registros A, B, C, D, E, H, L ou uma localizao de memria endereada indiretamente


(HL) ou ainda uma localizao de memria endereada indexadamente (IX+d) ou (IY+d).

O cdigo de cada instruo est no final do captulo.

9.12 - INSTRUES ROTAO DIREITA ATRAVS DO CARRY RR S


Nestas instrues o contedo da localizao determinada pelo operando especificado roda para a direita
atravs do carry e o resultado guardado na localizao original. O contedo do flag de carry C movido
para MSB e o contedo do LSB movido para o flag de carry. S pode ser qualquer um dos registros A, B,
C, D, E, H, L.

Exemplo:

RRA Cd. Hex CB 1F

Admitindo-se que o contedo de A seja 90 e o contedo de C = 1, significa que o contedo de A sofrer


uma rotao para a direita atravs de carry o resultado fica em A.

9.13 - INSTRUES DESLOCAMENTO ARITMTICO ESQUERDA SLA S


Nestas instrues o contedo da localizao determinada pelo operando especificado deslocado
aritmeticamente para a esquerda. O contedo do MSB levado para o flag de carry, um 0 forado para o
LSB.

As instrues SLA S podem ser: SLA r

Onde r pode ser qualquer um dos registros: A, B, C, D, E, H e L.

SLA (HL)
SLA (IX+d)
SLA (IY+d)

Exemplo:

SLA A Cd. Hexa CB 27

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.

9.14 - INSTRUES DESLOCAMENTO ARITMTICO DIREITA SRA S


Nestas instrues o contedo da localizao determinada pelo operando especificado deslocado
aritmeticamente para a direita e o resultado guardado na localizao original. O contedo do LSB
movido para o carry e o contedo do MSB permanece inalterado.

As instrues SRA S podem ser: SRA r

Onde r pode ser qualquer um dos registros: A, B, C, D, E, H e L.

SRA (HL)
SRA (IX+d)
SRA (IY+d)

Exemplo:

SRA A Cd. Hexa CB 2F

DATAPOOL ELETRNICA 125


MICROPROCESSADOR Z-80

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.

9.15 - INSTRUO ROTAO DECIMAL ESQUERDA RL D


A instruo RLD de dois bytes. Nesta instruo os 4 bits de ordem baixa da localizao de memria
endereada pelo contedo de HL so movidos (de uma vez) para os 4 bits de ordem alta da mesma
localizao. Os 4 bits de ordem alta da localizao de memria endereada por HL so movidos para os 4
bits de ordem baixa do acumulador. Os 4 bits de ordem baixa do acumulador so movidos para os 4 bits de
ordem baixa da localizao de memria especificada originalmente. Todas estas operaes ocorrem
simultaneamente.

Exemplo:

RLD Cd. Hex ED 6F

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.

9.16 - INSTRUO ROTAO DECIMAL DIREITA RR D


A instruo RRD de dois bytes. Nesta instruo os 4 bits de ordem alta da localizao de memria
endereada pelo contedo de HL so movidos (de uma vez) para os bits de ordem baixa daquela
localizao. Os 4 bits de ordem baixa da localizao de memria endereada por HL so movidos para os 4
bits de ordem baixa o acumulador. Os 4 bits de ordem baixa do acumulador so movidos para os 4 bits de
ordem alta da localizao de memria especificada originalmente. Todas estas operaes ocorrem
simultaneamente.

Exemplo:

RRD Cd. Hex ED 67

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.

DATAPOOL ELETRNICA 126


MICROPROCESSADOR Z-80

A SEGUIR TABELA COM AS INSTRUES DE DESLOCAMENTO E ROTAO ESTUDADAS:

Instrues de Deslocamento e Rotao


B C D E H L (HL) A (IX+d) (IY+d)
RR CB18 CB19 CB1A CB1B CB1C CB1D CB1E CB1F DDCBXX1E FDCBXX1E
RL CB10 CB11 CB12 CB13 CB14 CB15 CB16 CB17 DDCBXX16 FDCBXX16
RRC CB08 CB09 CB0A CB0B CB0C CB0D CB0E CB0F DDCBXX0E FDCBXX0E
RLC CB00 CB01 CB02 CB03 CB04 CB05 CB06 CB07 DDCBXX06 FDCBXX06
SRA CB28 CB29 CB2A CB2B CB2C CB2D CB2E CB2F DDCBXX2E FDCBXX2E
SLA CB20 CB21 CB22 CB23 CB24 CB25 CB26 CB27 DDCBXX26 FDCBXX26
SRL CB38 CB39 CB3A CB3B CB3C CB3D CB3E DB3F DDCBXX3E FDCBXX3E

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 -

DATAPOOL ELETRNICA 127


MICROPROCESSADOR Z-80

GRUPO DE TESTE, SET E RESET DE BIT

DATAPOOL ELETRNICA 128


MICROPROCESSADOR Z-80

10 - GRUPO DE TESTE, SET E RESET DE BIT


As instrues deste grupo SET (levam para 1), RESET (levam para 0) e TESTAM um dos oito bits num
registro do microprocessador (A, B, C, D, E, H ou L) ou operando de memria. Ento estas instrues
podem usar os endereamentos de registro, registro indireto, ou ainda endereamento indexado.

O Z-80 tem 240 instrues diferentes de manipulao de bit assim divididas:

80 instrues de SET um bit


80 instrues de RESET um bit
80 instrues de TESTE um bit

10.1- INSTRUES SET O BIT B DO OPERANDO SET B, S


Nestas instrues o bit especificado da localizao determinada por S setado (levado para 1). S pode
especificar qualquer um dos registros: A, B, C, D, E, H ou L

Exemplo:

SET 0, A Cd. Hexa CB 47

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.

OBS: se o bit 0 de A j estiver em 1 ele continuar em 1.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 00
8001 00 00
8002 SET 0, A CB Levar bit 0 de A para 1
8003 C7
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

A = __ __ Equivalente binrio:

7 6 5 4 3 2 1 0

No quadro anterior o bit 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.

DATAPOOL ELETRNICA 129


MICROPROCESSADOR Z-80

10.2 - INSTRUES RESET O BIT B DO OPERANDO RES B, S


Nestas instrues o bit especificado da localizao determinada por S resetado (levado para 0). S pode
especificar qualquer um dos registros: A, B, C, D, E, H ou L
Exemplo:

RES 0, A Cd. Hexa CB 87

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.

OBS: se o bit 0 de A j estiver em 0 ele continuar em 0.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com FF
8001 FF FF
8002 RES 0, A CB Levar bit 0 de A para 0
8003 87
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

A = __ __ Equivalente binrio:

7 6 5 4 3 2 1 0

No quadro anterior o bit 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.

10.3 - INSTRUES TESTE O BIT B DO OPERANDO BIT B, S


Nestas instrues o bit especificado da localizao determinada por S testado e o flag zero setado de
acordo com o resultado. S pode especificar qualquer um dos registros: A, B, C, D, E, H ou L

Exemplo:

BIT 5, A Cd. Hexa CB 6F

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:

1 Entrar com o seguinte programa:

DATAPOOL ELETRNICA 130


MICROPROCESSADOR Z-80

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 00
8001 00 00
8002 BIT 5, A CB Testar para zero o bit 5 de A
8003 6F
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Examinar o contedo de:

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.

A SEGUIR TABELA COM AS INSTRUES DE TESTE. SET E RESET DE BIT ESTUDADAS:

Instrues de Manipulao e Teste de Bits


B C D E H L (HL) A (IX+d) (IY+d)
BIT 0 CB40 CB41 CB42 CB43 CB44 CB45 CB46 CB47 DDCBXX46 DDCBXX46
BIT 1 CB48 CB49 CB4A CB4B CB4C CB4D CB4E CB4F DDCBXX4E DFCBXX4E
BIT 2 CB50 CB51 CB52 CB53 CB54 CB55 CB56 CB57 DDCBXX56 FDCBXX56
BIT 3 CB58 CB59 CB5A CB5B CB5C CB5D CB5E CB5F DDCBXX5E FDCBXX5E
BIT 4 CB60 CB61 CB62 CB63 CB64 CB65 CB66 CB67 DDCBXX66 FDCBXX66
BIT 5 CB68 CB69 CB6A CB6B CB6C CB6D CB6E CB6F DDCBXX6E FDCBXX6E
BIT 6 CB70 CB71 CB72 CB73 CB74 CB75 CB76 CB77 DDCBXX76 FDCBXX76
BIT 7 CB78 CB79 CB7A CB7B CB7C CB7D CB7E CB7F DDCBXX7E FDCBXX7E

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

DATAPOOL ELETRNICA 131


MICROPROCESSADOR Z-80

INSTRUES BRANCH

DATAPOOL ELETRNICA 132


MICROPROCESSADOR Z-80

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.

Os dois tipos de instrues BRANCH so:

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).

As instrues CALL e RET so usadas para processamento de sub-rotina.

11.2 - INSTRUES JUMP


11.2.1 - INSTRUES JUMP PARA ENDEREO JP NN

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:

JP 1850 Cd. Hexa C3 50 18

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.

11.2.2 - INSTRUES JUMP CONDICIONAL PARA ENDEREO JP CC, NN

As instrues JP cc, nn so de 3 bytes.

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:

JP C, 1890 Cd. Hexa DA 90 18

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

DATAPOOL ELETRNICA 133


MICROPROCESSADOR Z-80

ocorrido devido a operaes executadas em instrues anteriores). Caso contrrio prxima instruo a ser
executada a do endereo 1808.

As condies permitidas so:

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 10
8001 10 10
8002 LD B, 06 Carregar B com 21
8003 21 21
8004 ADD A,B 80 Somar A com B
8005 JP C, DA Se houver carry desviar para
8006 8010 10 8010
8007 80
8008 HALT 76 PARADA

8010 JP 8000 C3 JUMP para 8000


8011 00
8012 80

2 Carregar o registro F com 00;

3 Executar o programa a partir do endereo 8000h;

4 Observe que o LED de HALT (LED Vermelho) est: ______________________.

5 Modificar o programa anterior do seguinte modo:

No endereo 8001, colocar E0

6 Executar novamente o programa.

7 Observe que o LED de HALT est: _______________________.

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

DATAPOOL ELETRNICA 134


MICROPROCESSADOR Z-80

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:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar A com 00
8001 00 00
8002 INC A 3C Incrementar A de 1
8003 CP 08 FE Comparar A com 08
8004 08
8005 JP Z, CA Se A=08 desviar para 8000
8006 8000 00
8007 80
8008 JP C3 Se A08 ir para
8009 8002 02 8002
800A 80

2 Executar o programa passo a passo de acordo com a tabela seguinte, registrando os valores pedidos.

Pressionar PASSO DISPLAY A F Z


Tecla STEP HEX HEX BINRIO
0 8000 3E X 00 0

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.

Pressionar PASSO DISPLAY A F Z


Tecla STEP HEX HEX BINRIO
0 8000 3E X 00 0
00 00 0
1 vez 1 8002 3C
01 00 0
1 vez 2 8003 FE
DATAPOOL ELETRNICA 135
MICROPROCESSADOR Z-80

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

11.3 - INSTRUO JUMP E RELATIVO JR E


A instrues JR e so de 2 bytes. Nesta instruo o valor do offset somado ao contador de programa
usando aritmtica de complemento de dois, de modo a se obter jumps para frente e para traz. O valor do
offset somado ao valor do PC+2 (endereo da prxima instruo aps JR e).

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.

11.4 - INSTRUO CALL SUBROTINA NA LOCALIZAO PQ CALL PQ


A instruo CALL PQ de 3 bytes. Nesta instruo o contedo do PC levado para o STCK do seguinte
modo: o byte alto do PC levado para a posio do stack endereada por SP-1, e o byte baixo para a
posio do stack endereada por SP-2; O stack-pointer decrementado de 2; o segundo byte da instruo
carregado no byte baixo do PC e o terceiro byte da instruo carregado no byte alto do PC. A prxima
instruo ser buscada neste novo endereo.

Assim como as instrues JUMPs que podem serem condicionais ou no, as instrues CALL tambm
podem serem condicionais ou no

Exemplo:

CALL c, 0624 Cd. Hexa DC 24 06

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.

As condies permitidas so:

Condio Significado
Definida
NZ Se no zero
Z Se Zero
NC Se no carry
C Se carry

DATAPOOL ELETRNICA 136


MICROPROCESSADOR Z-80

PO Se paridade mpar
PE Se paridade par
P Mais (positivo)
M Menos (negativo)

Exemplo:

CALL 0624 Cd. Hexa CD 24 06

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).

11.5 - INSTRUO RETORNO DE SUBROTINA RET


A instruo RET de 1 byte. Nesta instruo o contador de programas (PC) carregado no stack do
seguinte modo: o contedo da localizao de memria endereada pelo SP carregado no byte baixo do
PC, a seguir o SP incrementado, ento o contedo da localizao de memria agora endereada pelo SP
(SP+1) carregado byte alto do PC, o SP ento novamente incrementado. A prxima instruo buscada
da localizao apontada pelo PC.

Exemplo:

RET Cd. Hex C9

A instruo RET deve ser precedida de uma instruo CALL.

Assim como as instrues JUMPs e CALLs podem serem condicionais ou no, as instrues RETs
tambm podem serem condicionais ou no.

Exemplo:

RET NC Cd. Hexa D0

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.

As condies permitidas so:

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)

DATAPOOL ELETRNICA 137


MICROPROCESSADOR Z-80

A SEGUIR TABELA COM AS INSTRUES BRANCH ESTUDADAS

Instrues Branch Condicionais


Z NZ C NC PE PO M P
JP CAXXXX C2XXXX DAXXXX D2XXXX EAXXXX E2XXXX FAXXXX F2XXXX
CALL CCXXXX C4XXXX DCXXXX D4XXXX ECXXXX E4XXXX FCXXXX F4XXXX
RET C8 C0 D8 D0 E8 E0 F8 F0
JR 28XX 20XX 38XX 30XX

Instrues Branch Incondicionais


(HL) (IX) (IY)
JP C3XXXX E9 DDE9 FDE9
CALL CDXXXX
RET C9
JR 18XX

DATAPOOL ELETRNICA 138


MICROPROCESSADOR Z-80

GRUPO DE ENTRADA E SADA

DATAPOOL ELETRNICA 139


MICROPROCESSADOR Z-80

12 - GRUPO DE ENTRADA E SADA


Estas instrues transferem dados de registro e memria para um dispositivo externo de E/S. Existem 256
portas de entrada e 256 de sada. Instrues especiais so providas para mover blocos de 256 bytes de ou
para portas de E/S e memria.

Todas essas instrues sero mais detalhadas na apostila de experincias do mdulo.

Vejamos agora alguns exemplos de instrues de entrada e sada:

12.1 - INSTRUO CARREGA ACUMULADOR COM O DADO ENDEREADO PELO


PORTAL N - IN A,(N)
Nesta instruo o operando n colocado na metade inferior da via de endereos para selecionar o
dispositivo de entrada/sada (E/S) em um dos 256 endereos possveis. O contedo do acumulador tambm
aparece na metade superior da via de endereo neste tempo. Um byte da porta selecionada , ento,
colocado na via de dados e escrito no acumulador do processador. Lembrado que n um nmero de 8
bits.

Exemplo:

IN A, (00) Cd. Hexa DB 00

Admitindo-se que o contedo do endereo endereado por n seja 01, significa que o dado 01 ser
carregado no acumulador.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 IN A, DB Ler o portal 00 e Carregar o
8001 00 00 dado no acumulador
8002 CP FE Comparar com FF
8003 FF FF
8004 JP Z, CA Se o dado lido for FF, volta a
8005 8000 00 ler de novo
8006 80
8007 RETORNA CD MONITOR
8008 AO E2 MONITOR
8009 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

3 Pressionar qualquer uma das teclas de 0 a 7 do teclado.

4 Examinar o contedo de:

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.

DATAPOOL ELETRNICA 140


MICROPROCESSADOR Z-80

Outras experincias de entrada sero abordadas com mais detalhes na apostila de experincias.

12.2 - INSTRUO CARREGAR O REGISTRO R COM O DADO DO PORTAL C IN


R, (C)
Nesta instruo o contedo do registrador C colocado na metade inferior da via de endereos para
selecionar uma das 256 portas de entrada/sada possveis. O contedo do registrador B colocado na
metade superior da via de endereos neste tempo. Um byte da porta selecionada , ento, colocado na via
de dados e escrito no registrador r do processador.

12.3 - INSTRUO CARREGA A POSIO (HL) COM ENTRADA DA PORTA (C),


INCREMENTA HL E DECREMENTA B INI
Nesta instruo o contedo do registrador C colocado na metade inferior da via de endereos para
selecionar uma das 256 portas possveis. O registrador B pode ser usado como contador e o seu contedo
colocado na metade superior da via de endereos. Um byte da porta selecionada colocado na via de
dados e escrito na localizao de memria correspondente. Finalmente, o contador decrementado e o par
de registradores HL incrementado.

12.4 - INSTRUO CARREGA A POSIO (HL) COM ENTRADA DA PORTA (C),


INCREMENTA HL E DECREMENTA B AT B=0 INIR
Nesta instruo o contedo do registrador C colocado na metade inferior da via de endereos para
selecionar uma das 256 portas possveis. O registrador B usado como contador e o seu contedo
colocado na metade superior da via de endereos. Um byte selecionado, colocado na via de dados e
escrito no processador central. O contedo do par de registradores HL colocado no endereo, e o byte de
entrada escrito na localizao de memria correspondente. O contador decrementado e o par de
registradores HL incrementado. Quando B chegar a 0, a instruo terminada. Se B no 0, o PC
decrementado por dois e a instruo repetida. As instrues so reconhecidas aps cada transferncia.

12.5 - INSTRUO CARREGA A POSIO (HL) COM ENTRADA DA PORTA (C),


DECREMENTA HL E B IND
Nesta instruo o contedo do registrador C colocado na metade inferior da via de endereos para
selecionar uma das 256 portas possveis. O registrador B pode ser usado como contador e o seu contedo
colocado na metade superior da via de endereos. Um byte da porta selecionada colocado na via de
dados e escrito no processador. O contedo do par de registradores HL colocado na via de endereos e o
byte de entrada , ento, escrito na localizao de memria correspondente. Finalmente o par de
registradores so decrementados.

12.6 - INSTRUO CARREGA A POSIO (HL) COM ENTRADA DA PORTA (C),


DECREMENTA HL E B AT B=0 INDR
Nesta instruo o contedo do registrador C colocado na metade inferior da via de endereos para
selecionar uma das 256 portas possveis. O registrador B usado como contador e o seu contedo
colocado na metade superior da via de endereos. Um byte da porta selecionada colocado na via d dados
e escrito no processador. O contedo do par de registradores HL colocado na via de endereos e o byte
de entrada escrito na localizao de memria correspondente. O par de registradores HL e o contador B
so decrementados. Quando B chegar a 0, a instruo terminada. Se B no 0, o PC decrementado
por 2 e a instruo repetida. As interrupes sero reconhecidas aps cada transferncia de dados.

DATAPOOL ELETRNICA 141


MICROPROCESSADOR Z-80

12.7 - INSTRUO CARREGA O PORTAL (N) DE SADA COM O ACUMULADOR


OUT (N), A
Nesta instruo o operando n colocado na metade inferior da via de endereos para selecionar o
dispositivo de E/S. O contedo do acumulador aparece na metade superior da via de endereos. Ento o
byte contido no acumulador colocado na via de dados e escrito no dispositivo selecionado.

Exemplo:

OUT (00), A Cd. Hexa D3 00

Admitindo-se que o contedo do acumulador seja 01, significa que o dado 01 ser escrito no endereo 00hex
de E/S.

Experincia:

1 Entrar com o seguinte programa:

Endereo Mnemnico Opcode Comentrio


8000 LD A, 3E Carregar o acumulador com
8001 01 01 o dado 01 hex
8002 OUT (00), D3 Transferir o dado 01 hex no
8003 A 00 endereo de E/S 00hex
8004 RETORNA CD MONITOR
8005 AO E2 MONITOR
8006 MONITOR 01 MONITOR

2 Executar o programa a partir do endereo 8000h;

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.

12.8 - INSTRUO CARREGA O PORTAL (C) DE SADA COM O REGISTRO R


OUT (C), R
Nesta instruo o contedo do registrador (C) colocado na metade inferior da via de endereos para
selecionar uma das 256 portas de entrada/sada possveis. O contedo do registrador B colocado na
metade superior da via de endereos. O byte contido no registrador r colocado na via de dados e escrito
no dispositivo de E/S.

12.9 - INSTRUO CARREGA O PORTAL (C) DE SADA COM A POSIO (HL),


INCREMENTA HL E DECREMENTA B OUTI
Nesta instruo o contedo do par de registrador HL colocado na via de endereos para selecionar uma
localizao de memria. O byte contido nesta localizao de memria temporariamente guardado no
processador. Depois de decrementado o registrador B, o contedo do registrador C colocado na metade
inferior da via de endereos para selecionar o dispositivo de E/S. O registrador B pode ser usado como
contador, e seu valor decrementado colocado na metade inferior da via de endereos. O byte a ser
enviado colocado na via de dados e escrito no dispositivo selecionado. Finalmente o par de registradores
HL incrementado.

DATAPOOL ELETRNICA 142


MICROPROCESSADOR Z-80

12.10 - INSTRUO CARREGA O PORTAL (C) DE SADA COM A POSIO (HL)


INCREMENTA HL E DECREMENTA B AT B=0 OUTIR
Nesta instruo o contedo do par de registradores HL colocado na via de endereos para selecionar a
localizao de memria. O byte contido nesta localizao de memria temporariamente guardado no
processador. Depois que o contador decrementado (registrador B), o contedo do registrador C
colocado na metade inferior da via de endereos para selecionar o dispositivo de E/S. O registrador B pode
ser usado como contador e o seu valor colocado na metade superior da via de endereos. O byte a ser
enviado colocado na via de dados e escrito no dispositivo de E/S selecionado; logo, o par de registradores
HL incrementado. Se o registrador B no for 0, o PC ser decrementado por dois e a instruo ser
repetida. Se B for 0, a instruo estar terminada. As instrues sero reconhecidas aps cada
transferncia de dados.

12.11 - INSTRUO CARREGAR O PORTAL (C) DE SADA COM A POSIO (HL),


DECREMENTA HL E B OUTD
Nesta instruo o contedo do par de registradores HL colocado na via de endereos para selecionar uma
localizao de memria. O byte contido nesta localizao de memria temporariamente guardado no
processador. Depois que o contador decrementado, o contedo do registrador C colocado na metade
inferior da via de endereo para selecionar o dispositivo de E/S. O byte a ser enviado colocado na via de
dados e escrito no dispositivo E/S selecionado. Finalmente o par de registradores HL decrementado.

12.12 - INSTRUO CARREGAR O PORTAL (C) DE SADA COM A POSIO (HL),


DECREMENTA HL E B AT B=0 OUTDR
Nesta instruo o contedo do par de registradores HL colocado na via de endereos para selecionar uma
localizao de memria. O byte contido nesta localizao de memria temporariamente guardado no
processador. Depois do contador ser decrementado, o contedo do registrador C colocado na metade
inferior da via de endereos para selecionar o dispositivo E/S. O registrador B pode ser usado como
contador e, depois de decrementado seu valor, colocado na metade superior da via de endereos. O byte
a ser enviado , ento, colocado na via de dados e escrito no dispositivo selecionado. O par de
registradores HL , ento, decrementado. Se o registrador B no for 0, o PC ser decrementado por 2, e a
instruo ser repetida. Se o registrador B 0, ento a instruo ser terminada. As interrupes sero
reconhecidas depois de cada transferncia de dados.

A SEGUIR TABELA COM AS INSTRUES DE ENTRADA E SADA ESUDADAS

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 -

DATAPOOL ELETRNICA 143


MICROPROCESSADOR Z-80

INTERRUPES

DATAPOOL ELETRNICA 144


MICROPROCESSADOR Z-80

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:

1 Imagine-se lendo um livro em seu escritrio;

2 O Telefone toca;

3 Marca-se a pgina do livro e atende o telefone;

4 Diz-se Al para indicar que est pronto para manter a conversa com a pessoa que chamou;

5 A conversa no telefone comea;

6 A campainha da porta do seu escritrio toca;

7 Diz-se a pessoa no telefone para aguardar um momento;

8 Abre-se a porta;

9 Conversa-se com a pessoa na porta e completa seu negcio com ela.

10 Retorna-se ao telefone, reinicia a conversa com a outra na linha, e completa a discusso;

11 Retorna-se ao seu livro no ponto marcado onde ocorreu a interrupo.

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:

a) Interrupes, isto , a campainha do telefone, ou da porta;

b) Finalizao da tarefa, isto , trmino da conversa.

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.

Em geral, as transies causadas pelas interrupes so caracterizadas pelos seguintes eventos:

a) interrupo ocorre;

b) A ao da tarefa corrente e seus estados atuais so guardado para retorno posterior.

c) A interrupo reconhecida sinalizando ao requisitante da interrupo;

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:

a) A tarefa interruptora completada;

DATAPOOL ELETRNICA 145


MICROPROCESSADOR Z-80

b) O ponto de parada da tarefa interrompida retomado;

c) Recursos so redirecionados para a tarefa interruptora.

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).

Existem duas espcies bsicas de processamento do Z-80:

Processamento controlado por software:

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.

Processamento controlado por hardware e software:

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.

13.2 TIPOS BSICOS DE INTERRUPES


Todas interrupes podem serem classificadas em mascarveis e no mascarveis.

13.2.1 - INTERRUPO MASCARVEL

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:

13.2.2 - HABILITAR A INTERRUPO ATRAVS DA INSTRUO EI (HABILITAR INTERRUPES);

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.

DATAPOOL ELETRNICA 146


MICROPROCESSADOR Z-80

Por exemplo a seqncia de instrues:

EI
RETI

No causar a aceitao de interrupes mascarveis at aps a execuo da instruo RETI. A demora de


uma instruo para habilitar interrupes essencial pela seguinte razo: muito comum para as rotinas de
servio de interrupo (ISR) finalizar com a seqncia de instrues EI e RETI. A demora de uma instruo
assegura que o retorno da interrupo ser executado antes de outras interrupes. Isto impede que o
Stack seja montado desnecessariamente devido a interrupes ocorrendo durante a execuo da instruo
EI. Observe que o efeito da instruo DI imediato.

13.3 - ESCOLHER O MODO DE INTERRUPO (IM0, IM1 OU IM2);


Lembrando:

13.3.1 - INSTRUO SETAR CONDIO DE MODO ZERO DE INTERRUPES - IM 0

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.

13.3.2 - INSTRUO SETAR CONDIO DE INTERRUPO DE MODO UM - IM 1

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.

13.3.4 - INSTRUO SETAR CONDIO DE INTERRUPO DE MODO DOIS - IM 2

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.

Resumindo a instruo RETI faz:

1 Restaura o contedo do PC;

2 Sinaliza para um dispositivo de entrada/sada que a rotina de interrupo terminou.


No mdulo SDM-Z80 no possvel modificar os dados nas posies 0038HEX em diante porque nessa faixa
de endereos se encontra o programa monitor do mdulo e uma faixa de memria utilizada pela memria
EPROM, os dados na memria EPROM no podem ser modificados depois de gravados. Para resolver
esse problema, foi colocado no endereo 0038HEX uma instruo JUMP para a posio FF50HEX (JP FF50),
a posio FF50HEX uma rea de memria RAM, onde pode ser modificado os dados. Para que o vetor de
interrupo mascarvel v para o endereo que se deseja em seu programa, s entrar com o valor do
vetor de interrupo mascarvel atravs da tecla DPTR no mdulo, ou colocar o endereo manualmente
nas posies FF51HEX (Byte LSB) e FF52HEX (Byte MSB) na posio FF50HEX se encontra uma outra
instruo JUMP, assim, toda vez que ocorrer uma interrupo mascarvel, o Contador de Programas PC
ser carregado com o endereo guardado nessas posies, lembrando que toda vez que a tecla RESET
pressionada esses bytes sero zerados.

DATAPOOL ELETRNICA 147


MICROPROCESSADOR Z-80

13.4 - INTERRUPO NO MASCARVEL

Uma interrupo no-mascarvel se o microprocessador no pode sob nenhuma circunstncia ignor-la.


O Z80 tem um pino de interrupo no-mascarvel designado por NMI (pino 17).

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.

Durante as interrupes existem trocas de informaes entre o microprocessador e o dispositivo interruptor


ou seja:

DISPOSITIVO SOLICITANTE CPU

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.

Sero abordadas algumas experincias para fixarem bem esses conceitos.

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.

DATAPOOL ELETRNICA 148


MICROPROCESSADOR Z-80

EXPERINCIA 1: CONTADOR HEXADECIMAL UTILIZANDO INTERRUPO


O programa a seguir, mostra no display o valor de uma contagem toda vez que a tecla INT ou INTER for
pressionada.

Entre com o seguinte programa digitando-o ou carregando atravs do PC;

0001 0000 ;*************************


0002 0000 ; DATAPOOL ELETRONICA
0003 0000 ; Experincia INT
0004 0000 ; Contador 1
0005 0000 ;*************************
0006 0000
0007 0000 INICIO_RAM .EQU $8000
0008 0000 INT .EQU $FFE3
0009 0000
0010 0000 CLEAR_DISP .EQU $0F19
0011 0000 OUTHEX .EQU $0F7C
0012 0000
0013 0000 ANT_BOUNCE .EQU $0E63
0014 0000
0015 8000 .ORG INICIO_RAM
0016 8000 FB EI ;Habilita interrupes
0017 8001 ED 56 IM 1 ;para operar no "Modo 1"
0018 8003 3E 00 LD A,$00 ;"A" recebe 00h, e
0019 8005 LOOP: ;fica em um "loop"
0020 8005 C3 05 80 JP LOOP ;infinito esperando uma INT.
0021 8008
0022 8008 ;Rotina de tratamento de interrupo
0023 8008 TRATA_INT:
0024 8008 F3 DI ;Desabilita interrupes
0025 8009 CD 63 0E CALL ANT_BOUNCE ;Atraso para tirar o "bounce"
0026 800C CD 19 0F CALL CLEAR_DISP ;Limpa o display
0027 800F CD 7C 0F CALL OUTHEX ;Mostra o valor de "A"
0028 8012 3C INC A ;"A" incrementado
0029 8013 FB EI ;Habilita interrupes
0030 8014 ED 56 IM 1 ;Modo 1
0031 8016 ED 4D RETI ;Retorno de interrupo.
0032 8018
0033 FFE3 .ORG INT
0034 FFE3 C3 08 80 JP TRATA_INT
0035 FFE6
0036 FFE6 .END

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.

DATAPOOL ELETRNICA 149


MICROPROCESSADOR Z-80

EXPERINCIA 2: RELGIO UTILIZANDO INTERRUPO


O programa a seguir, mostra no display a hora, minuto e segundo, alm de uma indicao sonora no
buzzer.

1 - Faa as seguintes ligaes no mdulo:

1Hz
10Hz

1kHz
100Hz
CN18
CN6
CN11
WR\
RD\
CLK
INT

BUZZER

2 - Entre com o seguinte programa digitando-o ou carregando atravs do PC;

0001 0000 ;**********************************


0002 0000 ; DATAPOOL ELETRONICA
0003 0000 ; Relgio utilizando interrupo
0004 0000 ;**********************************
0005 0000
0006 0000 RAM_INICIO .EQU $8000
0007 0000 VETOR_INT .EQU $FFE3
0008 0000
0009 0000 COM_DISP .EQU $0F31
0010 0000 CAR_DISP .EQU $0F44
0011 0000 ATRASO .EQU $0F66
0012 0000 ANT_BOUNCE .EQU $0E63
0013 0000
0014 0000 CONVER8B .EQU $1255
0015 0000
0016 0000 MEM_DEC1 .EQU $ff40
0017 0000 MEM_DEC2 .EQU $ff41
0018 0000
0019 0000
0020 8000 .ORG RAM_INICIO
0021 8000
0022 8000 06 00 INICIO: LD B,$00 ;"B" recebe 00h - Seg.
0023 8002 0E 00 LD C,$00 ;"C" recebe 00h - Min.
0024 8004 16 00 LD D,$00 ;"D" recebe 00h - Hora
0025 8006 FB EI ;Habilita INT para
0026 8007 ED 56 IM 1 ;trabalhar no Modo 1
0027 8009 ;e fica em um "loop"
0028 8009 C3 09 80 ROTINA: JP ROTINA ;infinito.
0029 800C
0030 800C ;Rotina de tratamento de interrupo
0031 800C
0032 800C ;Tratamento de Segundos

DATAPOOL ELETRNICA 150


MICROPROCESSADOR Z-80

0033 800C F3 TRATA_INT: DI ;Desabilita INT


0034 800D CD 66 0F CALL ATRASO ;Atraso
0035 8010 CD 37 80 CALL ATUALIZA ;mostra no display
0036 8013 04 INC B ;incrementa "B"
0037 8014 78 LD A,B ;"A" recebe "B" e
0038 8015 FE 3C CP $3C ;compara com 3Ch
0039 8017 C2 32 80 JP NZ,FIM_INT ;se nulo vai para
0040 801A ;FIM_INT.
0041 801A
0042 801A ;Tratamento de Minutos
0043 801A 06 00 LD B,$00 ;"B" recebe 00h
0044 801C 0C INC C ;incrementa "C"
0045 801D 79 LD A,C ;"A" recebe "C" e
0046 801E FE 3C CP $3C ;compara com 3Ch
0047 8020 C2 32 80 JP NZ,FIM_INT ;se nulo vai para
0048 8023 ;FIM_INT.
0049 8023
0050 8023 ;Tratamento de Hora
0051 8023 0E 00 LD C,$00 ;"C" recebe 00h
0052 8025 14 INC D ;incrementa "D"
0053 8026 7A LD A,D ;"A" recebe "D" e
0054 8027 FE 18 CP $18 ;compara com 18h
0055 8029 C2 32 80 JP NZ,FIM_INT ;se nulo vai para
0056 802C ;FIM_INT.
0057 802C
0058 802C 06 00 LD B,$00 ;"B" recebe 00h.
0059 802E 0E 00 LD C,$00 ;"C" recebe 00h.
0060 8030 16 00 LD D,$00 ;"D" recebe 00h.
0061 8032
0062 8032 FB FIM_INT: EI ;Habilita-se INT para
0063 8033 ED 56 IM 1 ;operar no modo 1
0064 8035 ED 4D RETI ;retorno de interrupo;
0065 8037
0066 8037
0067 8037 ;Rotina de converso e impresso no display
0068 8037
0069 8037 F5 ATUALIZA: PUSH AF ;"AF" guardado na pilha
0070 8038 C5 PUSH BC ;"BC" guardado na pilha
0071 8039 D5 PUSH DE ;"DE" guardado na pilha
0072 803A
0073 803A ;Limpeza do display
0074 803A 3E 01 LD A,$01 ;"A" recebe o comando 01h
0075 803C CD 31 0F CALL COM_DISP ;para "limpar" display.
0076 803F
0077 803F ;Impresso de hora no display
0078 803F 7A LD A,D ;"A" recebe "D" e converte
0079 8040 CD 55 12 CALL CONVER8B ;o valor de hexa->decimal.
0080 8043 3A 41 FF LD A,(MEM_DEC2) ;O byte MSB
0081 8046 C6 30 ADD A,$30 ; mostrado
0082 8048 CD 44 0F CALL CAR_DISP ;no display.
0083 804B 3A 40 FF LD A,(MEM_DEC1) ;O byte LSB
0084 804E C6 30 ADD A,$30 ; mostrado
0085 8050 CD 44 0F CALL CAR_DISP ;no display.
0086 8053
0087 8053 ;Impresso de ":"
0088 8053 3E 3A LD A,$3A ;"A" recebe 3Ah ":"
0089 8055 CD 44 0F CALL CAR_DISP ;e mostra no display
0090 8058
0091 8058 ;Impresso de minutos no display
0092 8058 79 LD A,C ;"A" recebe "C" e converte
0093 8059 CD 55 12 CALL CONVER8B ;o valor de hexa->decimal.
0094 805C 3A 41 FF LD A,(MEM_DEC2) ;O byte MSB

DATAPOOL ELETRNICA 151


MICROPROCESSADOR Z-80

0095 805F C6 30 ADD A,$30 ; mostrado


0096 8061 CD 44 0F CALL CAR_DISP ;no display.
0097 8064 3A 40 FF LD A,(MEM_DEC1) ;O byte LSB
0098 8067 C6 30 ADD A,$30 ; mostrado
0099 8069 CD 44 0F CALL CAR_DISP ;no display.
0100 806C
0101 806C ;Impresso de ":"
0102 806C 3E 3A LD A,$3A ;"A" recebe 3Ah ":"
0103 806E CD 44 0F CALL CAR_DISP ;e mostra no display
0104 8071
0105 8071 ;Impresso de segundos no display
0106 8071 78 LD A,B ;"A" recebe "B" e converte
0107 8072 CD 55 12 CALL CONVER8B ;o valor de hexa->decimal.
0108 8075 3A 41 FF LD A,(MEM_DEC2) ;O byte MSB
0109 8078 C6 30 ADD A,$30 ; mostrado
0110 807A CD 44 0F CALL CAR_DISP ;no display.
0111 807D 3A 40 FF LD A,(MEM_DEC1) ;O byte LSB
0112 8080 C6 30 ADD A,$30 ; mostrado
0113 8082 CD 44 0F CALL CAR_DISP ;no display.
0114 8085
0115 8085 D1 POP DE ;"DE" recuperado da pilha
0116 8086 C1 POP BC ;"BC" recuperado da pilha
0117 8087 F1 POP AF ;"AF" recuperado da pilha
0118 8088 C9 RET ;Retorna
0119 8089
0120 FFE3 .ORG VETOR_INT
0121 FFE3 C3 0C 80 JP TRATA_INT
0122 FFE6
0123 FFE6 .END

3 Execute o programa a partir do endereo 8000h e observe o que acontece;

4 Pressione a tecla RESET;

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:

0022 8000 06 00 INICIO: LD B,$00 ;"B" recebe 00h - Seg.


0023 8002 0E 00 LD C,$00 ;"C" recebe 00h - Min.
0024 8004 16 00 LD D,$00 ;"D" recebe 00h - Hora

Altere novamente as posies de memria com outros valores, execute o programa e observe o que
acontece.

DATAPOOL ELETRNICA 152


MICROPROCESSADOR Z-80

14 - APNDICE A TABELAS COM CONJUNTO DE INSTRUES


Instrues de Transferncia de 8 bits
A B C D E H L (HL) (BC) (DE) (nn) n
LD A,.. 7F 78 79 7A 7B 7C 7D 7E 0A 1A 3AXXXX 3EXX
LD B,.. 47 40 41 42 43 44 45 46 06XX
LD C,.. 4F 48 49 4A 4B 4C 4D 4E 0EXX
LD D,.. 57 50 51 52 53 54 55 56 16XX
LD E,.. 5F 58 59 5A 5B 5C 5D 5E 1EXX
LD H,.. 67 60 61 62 63 64 65 66 26XX
LD L,.. 6F 68 69 6A 6B 6C 6D 6E 2EXX
LD (HL),.. 77 70 71 72 73 74 75 36XX
LD (BC),.. 02
LD (DE),.. 12
LD (nn),.. 32XXXX

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 de Transferncia e Permuta de 16 bits


BC DE HL SP IX IY
LD .., nn 01XXXX 11XXXX 21XXXX 31XXXX DD21XXXX FD21XXXX
LD .., (nn) ED4BXXXX ED5BXXXX 2AXXXX ED7BXXXX DD2AXXXX FD2AXXXX
LD (nn), .. ED43XXXX ED53XXXX 22XXXX ED73XXXX DD22XXXX FD22XXXX
LD SP, .. F9

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

DATAPOOL ELETRNICA 153


MICROPROCESSADOR Z-80

Transferncia de Blocos e Pesquisa


S Z H P/V N C
LDI EDA0 - - 0 * 0 -
LDIR EDB0 - - 0 0 0 -
LDD EDA8 - - 0 * 0 -
LDDR EDB8 - - 0 0 0 -
CPI EDA1 * * * * 1 -
CPIR EDB1 * * * * 1 -
CPD EDA9 * * * * 1
CPDR EDB9 * * * * 1

Instrues Lgicas e Aritmticas de 8 bits


B C D E H L (HL) A n (IX+d) (IY+d)
ADD 80 81 82 83 84 85 86 87 C6XX DD86XX FD86XX
ADC 88 89 8A 8B 8C 8D 8E 8F CEXX DD8EXX FD8EXX
SUB 90 91 92 93 94 95 96 97 D6XX DD96XX FD96XX
SBC 98 99 9A 9B 9C 9D 9E 9F DEXX DD9EXX FD9EXX
AND A0 A1 A2 A3 A4 A5 A6 A7 E6XX DDA6XX FDA6XX
XOR A8 A9 AA AB AC AD AE AF EEXX DDAEXX FDAEXX
OR B0 B1 B2 B3 B4 B5 B6 B7 F6XX DDB6XX FDB6XX
CP B8 B9 BA BB BC BD BE BF FEXX DDBEXX FDBEXX
INC 04 0C 14 1C 24 2C 34 3C DD34XX FD34XX
DEC 05 0D 15 1D 25 2D 35 3D DD35XX FD35XX

Instrues de Controle da CPU


S Z H P/V N C
DAA 27 * * * * - *
CPL 2F - - 1 - 1 -
NEG ED 44 * * * * 1 *

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

Instrues Aritmticas de 16 Bits


BC DE HL SP IX IY
INC .. 03 13 23 33 DD 23 FD 23
DEC .. 08 1B 2B 3B DD 2B FD 2B
ADD HL, .. 09 19 29 39
ADC HL, .. ED 4A ED 5A ED 6A ED 7A
SBC HL, .. ED 42 ED 52 ED 62 ED 72
ADD IX, .. DD 09 DD 19 DD 29
ADD IY, .. FD 09 FD 19 FD 39 FD 29
DATAPOOL ELETRNICA 154
MICROPROCESSADOR Z-80

Instrues de Deslocamento e Rotao


B C D E H L (HL) A (IX+d) (IY+d)
RR CB18 CB19 CB1A CB1B CB1C CB1D CB1E CB1F DDCBXX1E FDCBXX1E
RL CB10 CB11 CB12 CB13 CB14 CB15 CB16 CB17 DDCBXX16 FDCBXX16
RRC CB08 CB09 CB0A CB0B CB0C CB0D CB0E CB0F DDCBXX0E FDCBXX0E
RLC CB00 CB01 CB02 CB03 CB04 CB05 CB06 CB07 DDCBXX06 FDCBXX06
SRA CB28 CB29 CB2A CB2B CB2C CB2D CB2E CB2F DDCBXX2E FDCBXX2E
SLA CB20 CB21 CB22 CB23 CB24 CB25 CB26 CB27 DDCBXX26 FDCBXX26
SRL CB38 CB39 CB3A CB3B CB3C CB3D CB3E DB3F DDCBXX3E FDCBXX3E

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 -

Instrues de Manipulao e Teste de Bits


B C D E H L (HL) A (IX+d) (IY+d)
BIT 0 CB40 CB41 CB42 CB43 CB44 CB45 CB46 CB47 DDCBXX46 DDCBXX46
BIT 1 CB48 CB49 CB4A CB4B CB4C CB4D CB4E CB4F DDCBXX4E DFCBXX4E
BIT 2 CB50 CB51 CB52 CB53 CB54 CB55 CB56 CB57 DDCBXX56 FDCBXX56
BIT 3 CB58 CB59 CB5A CB5B CB5C CB5D CB5E CB5F DDCBXX5E FDCBXX5E
BIT 4 CB60 CB61 CB62 CB63 CB64 CB65 CB66 CB67 DDCBXX66 FDCBXX66
BIT 5 CB68 CB69 CB6A CB6B CB6C CB6D CB6E CB6F DDCBXX6E FDCBXX6E
BIT 6 CB70 CB71 CB72 CB73 CB74 CB75 CB76 CB77 DDCBXX76 FDCBXX76
BIT 7 CB78 CB79 CB7A CB7B CB7C CB7D CB7E CB7F DDCBXX7E FDCBXX7E

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 Condicionais


Z NZ C NC PE PO M P
JP CAXXXX C2XXXX DAXXXX D2XXXX EAXXXX E2XXXX FAXXXX F2XXXX
CALL CCXXXX C4XXXX DCXXXX D4XXXX ECXXXX E4XXXX FCXXXX F4XXXX
RET C8 C0 D8 D0 E8 E0 F8 F0
JR 28XX 20XX 38XX 30XX

DATAPOOL ELETRNICA 155


MICROPROCESSADOR Z-80

Instrues Branch Incondicionais


(HL) (IX) (IY)
JP C3XXXX E9 DDE9 FDE9
CALL CDXXXX
RET C9
JR 18XX

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

DATAPOOL ELETRNICA 156