Documente Academic
Documente Profesional
Documente Cultură
1. GENERALIDADES
O microprocessador Z-80, lançado pela ZILOG, logo após ao 8085, veio trazer
novos aperfeiçoamentos. O repertório de instruções do Z-80, inclui o conjunto
de instruções do microprocessador 8080 e 80 instruções adicionais. Desta
forma, o software do Z-80 é compatível com a linha 8008 e 8080, permitindo o
aproveitamento de todos os programas já desenvolvidos. Além da
compatibilidade de software as seguintes melhorias foram implementadas:
R
D
M
ULA
REM
CI
AC
RI
UNIDADE DE
CONTROLE
R E/S
SAÍDAS ENTRADAS
b) Acumulador (AC)
CICLO DE BUSCA
N
FETCH
START
ATIVADO?
CICLO DE INSTRUÇÃO
S
BUSCAR A
INSTRUÇÃO
EXECUTAR A
INSTRUÇÃO
CICLO DE EXECUÇÃO
HÁ
N INTERRUPÇÕES
AGUARDANDO O
ATENDIMENTO?
TRANSFERIR CONTROLE
P/ PROGRAMA QUE
ATENDE INTERRUPÇÕES
1.4.1 – Introdução
8 bits 8 bits
Registro de Condição (F) Registro de Condição Ativo
Acumulador (A)
Registro B (B) Registro C (C)
Registros Ativos de Uso Geral
Registro D (D) Registro E (E)
Registro H (H) Registro L (L)
Registro de Condição (F’) Registro de Condição Passivo
Acumulador’ (A’)
Registro B’ (B’) Registro C’ (C’)
Registros Passivos de Uso Geral
Registro D’ (D’) Registro E’ (E’)
Registro H’ (H’) Registro L’ (L’)
Contador de Programa (PC)
Ponteiro de Pilha (SP)
Registro de Índice X (IX)
Registros de Uso Específico
Registro de Índice Y (IY)
Registro I
Registro R
O Z-80 possui 14 registros de uso geral, de 8 bits cada um, e estão divididos
em 2 grupos de 7 registros cada.
ATIVOS PASSIVOS
A A’
B B’
C C’
D D’
E E’
H H’
L L’
O Z-80 possui 2 registros de flags (F e F’) sendo que, um deles é ativo e outro
passivo.
Cada registro de flags tem 8 bits, dos quais somente 6 são usados.
D7 D0
S Z H P/V N C
2.1 – Generalidades
-r um dos registros: A, B, C, D, E, H, L
-R registro R
↔ ↔
↔
LDI Carrega o conteúdo da posição de memória endereçada (DE) ← (HL) • • • 0 0 16
por DE com o conteúdo da posição endereçada por HL.
DE ← DE + 1
Incrementa DE e HL. Decrementa BC.
HL ← HL + 1
BC ← BC - 1
LDIR Carrega o conteúdo da posição de memória endereçada (DE) ← (HL) • • 0 • 0 0 21
por DE com o conteúdo da posição endereçada por HL.
DE ←DE + 1 16
Incrementa DE e HL. Decrementa BC.
HL ← HL + 1
Repete estas operações até BC = 0000H.
BC ← BC-1
repete até
BC = 0
↔
LDD Carrega o conteúdo da posição de memória endereçada (DE) ← (HL) • • • 0 0 16
por DE com o conteúdo da posição endereçada por HL.
DE ← DE – 1
Decrementa DE, HL e BC.
HL ← HL –1
BC ← BC-1
LDDR Carrega o conteúdo da posição de memória endereçada (DE) ←(HL) • • 0 • 0 0 21
por DE com o conteúdo da posição endereçada por HL.
DE ← DE-1
Decrementa DE, HL e BC.
HL ← HL-1
Repete estas operações até BC = 0000H.
BC ← BC-1
repete até
BC=0
•
↔
↔
↔
↔
•
↔
↔
↔
↔
↔
↔
↔
CPDR Compara o Acumulador com o conteúdo da posição de A : (HL) 1 21
memória endereçada pelo par de registros HL. HL ← HL – 1 16
Decrementa HL e BC.
BC ← BC – 1
Repete estas operações até A = (HL) ou BC = 0000H.
repete até
A = (HL) ou
BC = 0
A←A+r
↔
↔
↔
ADD A, r Soma o Acumulador com o registro r. O resultado é V 0 4
↔
armazenado no Acumulador.
A←A+n
↔
↔
↔
ADD A, n Soma o Acumulador com a constante n. O resultado é V 0 7
↔
armazenado no Acumulador.
A ← A + (HL)
↔
↔
↔
ADD A, (HL) Soma o Acumulador com o conteúdo da posição de V 0 7
↔
memória endereçada pelo par de registros HL. O resultado
é armazenado no Acumulador.
A ← A+(IX+d)
↔
↔
↔
ADD A,(IX+d) Soma o Acumulador com o conteúdo da posição de V 0 19
↔
memória endereçada por IX+d. O resultado é armazenado
no Acumulador.
A ← A+(IY+d)
↔
↔
↔
ADD A,(IY+d) Soma o Acumulador com o conteúdo da posição de 0 19
↔
V
memória endereçada por IY+d. O resultado é armazenado
no Acumulador.
A ← A+s+CY
↔
↔
↔
ADC A,s Soma o Acumulador com um conteúdo de 8 bits e com o 0
↔
V
flag CY. O resultado é armazenado no Acumulador.
A ← A-s ↔
↔
↔
SUB s Subtrai do Acumulador um conteúdo de 8 bits. O
↔
V 1
resultado é armazenado no Acumulador.
A ← A-s-CY
↔
↔
↔
SBC A,s Subtrai do Acumulador um conteúdo de 8 bits e o flag
↔
V 1
CY. O resultado é armazenado no Acumulador.
A←A∧s
↔
↔
AND s Operação “E” entre o Acumulador e um conteúdo de 8 0 P 0 1
bits. O resultado é armazenado no Acumulador.
A←A∨s
↔
V 1
Altera os flags. Não altera o Acumulador, nem o conteúdo
de 8 bits.
INC r Soma 1 ao registro r. r←r+1 4
↔
↔
V 0
INC (HL) Soma 1 ao conteúdo da posição de memória endereçada (HL) ← (HL)+1 11
↔
↔
V 0
pelo par de registros HL.
INC (IX+d) Soma 1 ao conteúdo da posição de memória endereçada (IX+d)←(IX+d)+1 23
↔
↔
V 0
por IX + d
INC (IY+d) Soma 1 ao conteúdo da posição de memória endereçada (IY+d)←(IY+d)+1 • 23
↔
V 0
por IY + d
DEC m Subtrai 1 do conteúdo de 8 bits. m←m–1 •
↔
V 0
↔
armazenado em HL.
ADC HL, ss Soma o par de registros HL com ss e com o flag CY. O HL←HL+ss+CY V 0 X 15
↔
↔
↔
resultado é armazenado em HL.
SBC HL, ss Subtrai do par de registros HL o valor de ss e do flag CY. HL→HL-ss-CY V 0 X 15
↔
↔
↔
O resultado é armazenado em HL.
ADD IX,pp Soma o registro IX com pp. O resultado é armazenado em IX ← IX+pp • • • 0 X 15
↔
IX.
ADD IY, rr Soma o registro IY com rr. O resultado é armazenado em IY ← IY+rr • • • 0 X 15
↔
IY.
INC ss Soma 1 a ss. ss ← ss + 1 • • • • • • 6
INC IX Soma 1 ao registro IX. IX ← IX + 1 • • • • • • 10
INC IY Soma 1 ao registro IY. IY ← IY + 1 • • • • • • 10
DEC ss Subtrai 1 de ss. ss ← ss – 1 • • • • • • 6
DEC IX Subtrai 1 do registro IX. IX ← IX – 1 • • • • • • 10
DEC IY Subtrai 1 do registro IY. IY ← IY – 1 • • • • • • 10
RLCA Rotação do Acumulador para esquerda sem o flag CY. An+1 ← An • • • 0 0 4
↔
CY ← A7
A0 ← A7
RLA Rotação do Acumulador para esquerda através do flag An+1 ← An • • • 0 0 4
↔
CY.
CY ← A7
A0 ← CY
RRCA Rotação do Acumulador para direita sem o flag CY. An ← An+1 • • • 0 0 4
↔
CY ← A7
A0 ← A7
RRA Rotação do Acumulador para direita através do flag CY. An ← An+1 • • • 0 0 4
↔
CY ← A0
A7 ← CY
RLC r Rotação do registro r para esquerda sem o flag CY. rn+1 ← rn p 0 0 8
↔
↔
CY ← r7
r0 ← r7
RLC (HL) Rotação do conteúdo da posição de memória endereçada (HL)n+1←(HL)n p 0 0 15
↔
↔
CY← m7
m0 ← CY
↔
↔
↔
CY← m0
m7 ← m0
RR m Rotação de m para direita através do flag CY. mn←mn+1
↔
↔
↔
p 0 0
CY← m0
m7 ← CY
↔
↔
↔
p 0 0
m0 ← “0”
CY ← m7
↔
↔
↔
p 0 0
m7 ← m7
CY ← m0
↔
↔
↔
p 0 0
m7 ← “0”
CY ← m0
RLD Rotação para esquerda entre o Acumulador e o conteúdo (HL)7-4←(HL)3-0 • P 0 0 18
↔
da posição de memória endereçada pelo par HL A3-0←(HL)7-4
(HL)3-0←A3-0
↔
posição de memória endereçada pelo par HL. (HL)3-0←(HL)7-4
A3-0←(HL)3-0
DAA Ajusta o valor do Acumulador para decimal A10 ← Abin P • 4
↔
↔
↔
CPL Complemento de 1 do Acumulador A←A • • • • 1 1
4
NEG Complemento de 2 do Acumulador A ← A+1 8
↔
↔
↔
V 1
CCF Complementa o flag CY CY ← CY • • • 4
↔
0 X
0 0
0 1
0 1
endereçada pelo par de registros HL. Resultado fica no
flag Z
BIT b, (IX+d) Verifica bit b do conteúdo da posição de memória Z ← (IX+d) • X X 20
↔
0 1
endereçada por IX+d. Resultado fica no flag Z
BIT b, (IY+d) Verifica bit b do conteúdo da posição de memória Z ← (IY+d) • X X 20
↔
0 1
endereçada por IY+d. Resultado fica no flag Z
↔
0 0
cujo endereço é fornecido pelo registro C
INI Carrega o conteúdo da posição de memória endereçada (HL) ← (C) • X X 16
↔
1 X
pelo par de registros HL com o conteúdo do dispositivo B ← B-1
de entrada cujo endereço é fornecido pelo registro C. HL ← HL+1
Decrementa o registro B. Incrementa o par de registros
HL
INIR Carrega o conteúdo da posição de memória endereçada (HL) ← (C) • 1 X X 1 X
21
pelo par de registros HL com o conteúdo do dispositivo B ← B-1 16
de entrada cujo endereço é fornecido pelo registro C. HL ← HL+1
Decrementa o registro B. Incrementa o par de registros repete até B=00H
HL. Repete até B = 00H
IND Carrega o conteúdo da posição de memória endereçada (HL) ← (C) • X X 16
↔
1 X
pelo par de registros HL com o conteúdo do dispositivo B ← B-1
de entrada cujo endereço é fornecido pelo registro C. HL ← HL-1
Decrementa o registro B. Decrementa o par de registros
HL
INDR Carrega o conteúdo da posição de memória endereçada (HL) ← (C) • 1 X X 1 X
21
pelo par de registros HL com o conteúdo do dispositivo B ← B-1 16
de entrada cujo endereço é fornecido pelo registro C. HL ← HL-1
Decrementa o registro B. Incrementa o par de registros repete até B=00H
HL. Repete até B = 00H
OUT (n), A Carrega no dispositivo de saída de endereço n o conteúdo (N) ← A • • • • • • 11
do Acumulador
OUT (C), r Carrega no dispositivo de saída cujo endereço é fornecido (C) ← r • • • • • • 12
pelo registro C o conteúdo do registro r
OUTI Carrega no dispositivo de saída cujo endereço é fornecido (C) ← (HL) • X X 16
↔
1 X
pelo registro C o conteúdo da posição de memória B ← B-1
endereçada pelo par de registros HL. Decrementa o HL ← HL +1
registro B. Incrementa o par de registros HL
OTIR Carrega no dispositivo de saída cujo endereço é fornecido (C) ← (HL) • 1 X X 1 X
21
pelo registro C o conteúdo da posição de memória B ← B-1 16
endereçada pelo par de registros HL. Decrementa o HL ← HL +1
registro B. Incrementa o par de registros HL. Repete até B repete até B=00H
= 00H
OUTD Carrega no dispositivo de saída cujo endereço é fornecido (C) ← (HL) • X X 16
↔
1 X
pelo registro C o conteúdo da posição de memória B ← B-1
endereçada pelo par de registros HL. Decrementa o HL ← HL -1
registro B. Decrementa o par de registros HL
OTDR Carrega no dispositivo de saída cujo endereço é fornecido (C) ← (HL) • 1 X X 1 X
21
pelo registro C o conteúdo da posição de memória B ← B-1 16
endereçada pelo par de registros HL. Decrementa o HL ← HL –1
registro B. Decrementa o par de registros HL. Repete até Repete até
B = 00H B=00H
17. Deixar os bits B6 e B1 iguais a “1” e não modificar o valor dos outros bits
do conteúdo da posição de memória 1950H.
20. Inverter o valor dos bits B0 a B3 do registro L e não alterar o valor dos
demais bits (B4 a B7).
14. Dada uma tabela com 20 elementos e com inicio em 1900H, pede-se:
15. Dada uma tabela com 10 elementos e com início em 1900H, pede-se:
- Determinar quantos elementos tem bits "0" e "3" igual a "zero" e bits
"1" e "5" iguais a "1".
16. Fazer uma subrotina para determinar qual caracter da base hexadecimal
é maior:
A7 A6 A5 A4 A3 A2 A1 A0
Y3 Y2 Y1 Y0 X3 X2 X1 X0
Y X
Considerar:
19. Preencher a memória do endereço 1900H até 19FFH com 00H, 01H,
02H, 03H,....., FFH.