Instruções do Z80



  1. Flags
  Legenda para símbolos do flag:
  2. Símbolos para registradores

  3. Endereçamentos

  4. Símbolos aritiméticos

  5. Conjunto de instruções

Mnemônico SZHPNC Tipo Descrição Notas
ADC A,s ***V0* Aritimética Add with Carry A=A+s+CY
ADC HL,ss **?V0* Aritimética Add with Carry HL=HL+ss+CY
ADD A,s ***V0* Aritimética Add A=A+s
ADD HL,ss --?-0* Aritimética Add HL=HL+ss
ADD IX,pp --?-0* Aritimética Add IX=IX+pp
ADD IY,rr --?-0* Aritimética Add IY=IY+rr
AND s ***P00 Lógica Logical AND A=A&s
BIT b,m ?*1?0- Lógica Test Bit m&{2^b}
CALL cc,nn ------ Desvio Conditional Call If cc CALL
CALL nn ------ Desvio Unconditional Call -[SP]=PC,PC=nn
CCF --?-0* Lógica Complement Carry Flag CY=~CY
CP s ***V1* Lógica Compare A-s
CPD ****1- Lógica Compare and Decrement A-[HL],HL=HL-1,BC=BC-1
CPDR ****1- Lógica Compare, Dec., Repeat CPD till A=[HL]or BC=0
CPI ****1- Lógica Compare and Increment A-[HL],HL=HL+1,BC=BC-1
CPIR ****1- Lógica Compare, Inc., Repeat CPI till A=[HL]or BC=0
CPL --1-1- Lógica Complement A=~A
DAA ***P-* Aritimética Decimal Adjust Acc. A=BCD format
DEC s ***V1- Aritimética Decrement s=s-1
DEC xx ------ Aritimética Decrement xx=xx-1
DEC ss ------ Aritimética Decrement ss=ss-1
DI ------ Pilha e outros Disable Interrupts  
DJNZ e ------ Desvio Dec., Jump Non-Zero B=B-1 till B=0
EI ------ Pilha e outros Enable Interrupts  
EX [SP],HL ------ Transferência de dados Exchange [SP]<->HL
EX [SP],xx ------ Transferência de dados Exchange [SP]<->xx
EX AF,AF' ------ Transferência de dados Exchange AF<->AF'
EX DE,HL ------ Transferência de dados Exchange DE<->HL
EXX ------ Transferência de dados Exchange qq<->qq' (except AF)
HALT ------ Pilha e outros Halt  
IM n ------ Pilha e outros Interrupt Mode (n=0,1,2)
IN A,[n] ------ Pilha e outros Input A=[n]
IN r,[C] ***P0- Pilha e outros Input r=[C]
INC r ***V0- Aritimética Increment r=r+1
INC [HL] ***V0- Aritimética Increment [HL]=[HL]+1
INC xx ------ Aritimética Increment xx=xx+1
INC [xx+d] ***V0- Aritimética Increment [xx+d]=[xx+d]+1
INC ss ------ Aritimética Increment ss=ss+1
IND ?*??1- Aritimética Input and Decrement [HL]=[C],HL=HL-1,B=B-1
INDR ?1??1- Aritimética Input, Dec., Repeat IND till B=0
INI ?*??1- Aritimética Input and Increment [HL]=[C],HL=HL+1,B=B-1
INIR ?1??1- Aritimética Input, Inc., Repeat INI till B=0
JP [HL] ------ Desvio Unconditional Jump PC=[HL]
JP [xx] ------ Desvio Unconditional Jump PC=[xx]
JP nn ------ Desvio Unconditional Jump PC=nn
JP cc,nn ------ Desvio Conditional Jump If cc JP
JR e ------ Desvio Unconditional Jump PC=PC+e
JR cc,e ------ Desvio Conditional Jump If cc JR(cc=C,NC,NZ,Z)
LD dst,src ------ Transferência de dados Load dst=src
LD A,i **0*0- Transferência de dados Load A=i(i=I,R)
LDD --0*0- Transferência de dados Load and Decrement [DE]=[HL],HL=HL-1,#
LDDR --000- Transferência de dados Load, Dec., Repeat LDD till BC=0
LDI --0*0- Transferência de dados Load and Increment [DE]=[HL],HL=HL+1,#
LDIR --000- Transferência de dados Load, Inc., Repeat LDI till BC=0
NEG ***V1* Lógica Negate A=-A
NOP ------ Pilha e outros No Operation  
OR s ***P00 Lógica Logical inclusive OR A=Avs
OTDR ?1??1- Pilha e outros Output, Dec., Repeat OUTD till B=0
OTIR ?1??1- Pilha e outros Output, Inc., Repeat OUTI till B=0
OUT [C],r ------ Pilha e outros Output [C]=r
OUT [n],A ------ Pilha e outros Output [n]=A
OUTD ?*??1- Pilha e outros Output and Decrement [C]=[HL],HL=HL-1,B=B-1
OUTI ?*??1- Pilha e outros Output and Increment [C]=[HL],HL=HL+1,B=B-1
POP xx ------ Pilha e outros Pop xx=[SP]+
POP qq ------ Pilha e outros Pop qq=[SP]+
PUSH xx ------ Pilha e outros Push -[SP]=xx
PUSH qq ------ Pilha e outros Push -[SP]=qq
RES b,m ------ Lógica Reset bit m=m&{~2^b}
RET ------ Desvio Return PC=[SP]+
RET cc ------ Desvio Conditional Return If cc RET
RETI ------ Desvio Return from Interrupt PC=[SP]+
RETN ------ Desvio Return from NMI PC=[SP]+
RL m **0P0* Lógica Rotate Left m={CY,m}<-
RLA --0-0* Lógica Rotate Left Acc. A={CY,A}<-
RLC m **0P0* Lógica Rotate Left Circular m=m<-
RLCA --0-0* Lógica Rotate Left Circular A=A<-
RLD **0P0- Lógica Rotate Left 4 bits {A,[HL]}={A,[HL]}<- ##
RR m **0P0* Lógica Rotate Right m=->{CY,m}
RRA --0-0* Lógica Rotate Right Acc. A=->{CY,A}
RRC m **0P0* Lógica Rotate Right Circular m=->m
RRCA --0-0* Lógica Rotate Right Circular A=->A
RRD **0P0- Lógica Rotate Right 4 bits {A,[HL]}=->{A,[HL]} ##
RST p ------ Pilha e outros Restart (p=0H,8H,10H,...,38H)
SBC A,s ***V1* Aritimética Subtract with Carry A=A-s-CY
SBC HL,ss **?V1* Aritimética Subtract with Carry HL=HL-ss-CY
SCF --0-01 Lógica Set Carry Flag CY=1
SET b,m ------ Lógica Set bit m=mv{2^b}
SLA m **0P0* Lógica Shift Left Arithmetic m=m*2
SRA m **0P0* Lógica Shift Right Arith. m=m/2
SRL m **0P0* Lógica Shift Right Logical m=->{0,m,CY}
SUB s ***V1* Aritimética Subtract A=A-s
XOR s ***P00 Lógica Logical Exclusive OR A=Axs



  Referências:

  Instruções do Z80 adaptadas de: http://www.z80.info/z80-op.txt


MarMSX 2016