Оригинал: The Complete Z80 OP-Code Reference (Best viewed fullscreen in NotePad)
The Complete Z80 OP-Code Reference
Best viewed fullscreen in NotePad
Devin Gardner 2000.04.29
E-mail: Cepaughfe@aol.com
-Check the end of the document for explanations of abbreviations used below. ┌─────────────┬────┬───┬──────┬────────────┬─────────────────────┬──────────────────────┐ │Mnemonic │Clck│Siz│SZHPNC│ OP-Code │ Description │ Notes │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │ADC A,r │ 4 │ 1 │***V0*│88+rb │Add with Carry │A=A+s+CY │ │ADC A,N │ 7 │ 2 │ │CE XX │ │ │ │ADC A,(HL) │ 7 │ 1 │ │8E │ │ │ │ADC A,(IX+N) │ 19 │ 3 │ │DD 8E XX │ │ │ │ADC A,(IY+N) │ 19 │ 3 │ │FD 8E XX │ │ │ │ADC HL,BC │ 15 │ 2 │**?V0*│ED 4A │Add with Carry │HL=HL+ss+CY │ │ADC HL,DE │ 15 │ 2 │ │ED 5A │ │ │ │ADC HL,HL │ 15 │ 2 │ │ED 6A │ │ │ │ADC HL,SP │ 15 │ 2 │ │ED 7A │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │ADD A,r │ 4 │ 1 │***V0*│80+rb │Add (8-bit) │A=A+s │ │ADD A,N │ 7 │ 2 │ │C6 XX │ │ │ │ADD A,(HL) │ 7 │ 1 │ │86 │ │ │ │ADD A,(IX+N) │ 19 │ 3 │ │DD 86 XX │ │ │ │ADD A,(IY+N) │ 19 │ 3 │ │FD 86 XX │ │ │ │ADD HL,BC │ 11 │ 1 │--?-0*│09 │Add (16-bit) │HL=HL+ss │ │ADD HL,DE │ 11 │ 1 │ │19 │ │ │ │ADD HL,HL │ 11 │ 1 │ │29 │ │ │ │ADD HL,SP │ 11 │ 1 │ │39 │ │ │ │ADD IX,BC │ 15 │ 2 │--?-0*│DD 09 │Add (IX register) │IX=IX+pp │ │ADD IX,DE │ 15 │ 2 │ │DD 19 │ │ │ │ADD IX,IX │ 15 │ 2 │ │DD 29 │ │ │ │ADD IX,SP │ 15 │ 2 │ │DD 39 │ │ │ │ADD IY,BC │ 15 │ 2 │--?-0*│FD 09 │Add (IY register) │IY=IY+rr │ │ADD IY,DE │ 15 │ 2 │ │FD 19 │ │ │ │ADD IY,IY │ 15 │ 2 │ │FD 29 │ │ │ │ADD IY,SP │ 15 │ 2 │ │FD 39 │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │AND r │ 4 │ 1 │***P00│A0+rb │Logical AND │A=A&s │ │AND N │ 7 │ 2 │ │E6 XX │ │ │ │AND (HL) │ 7 │ 1 │ │A6 │ │ │ │AND (IX+N) │ 19 │ 3 │ │DD A6 XX │ │ │ │AND (IY+N) │ 19 │ 3 │ │FD A6 XX │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │BIT b,r │ 8 │ 2 │?*1?0-│CB 40+8*b+rb│Test Bit │m&{2^b} │ │BIT b,(HL) │ 12 │ 2 │ │CB 46+8*b │ │ │ │BIT b,(IX+N) │ 20 │ 4 │ │DD CB XX 46+8*b │ │ │BIT b,(IY+N) │ 20 │ 4 │ │FD CB XX 46+8*b │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │CALL NN │ 17 │ 3 │------│CD XX XX │Unconditional Call │-(SP)=PC,PC=nn │ │CALL C,NN │17/1│ 3 │------│DC XX XX │Conditional Call │If Carry = 1 │ │CALL NC,NN │17/1│ 3 │ │D4 XX XX │ │If carry = 0 │ │CALL M,NN │17/1│ 3 │ │FC XX XX │ │If Sign = 1 (negative)│ │CALL P,NN │17/1│ 3 │ │F4 XX XX │ │If Sign = 0 (positive)│ │CALL Z,NN │17/1│ 3 │ │CC XX XX │ │If Zero = 1 (ans.=0) │ │CALL NZ,NN │17/1│ 3 │ │C4 XX XX │ │If Zero = 0 (non-zero)│ │CALL PE,NN │17/1│ 3 │ │EC XX XX │ │If Parity = 1 (even) │ │CALL PO,NN │17/1│ 3 │ │E4 XX XX │ │If Parity = 0 (odd) │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │CCF │ 4 │ 1 │--?-0*│3F │Complement Carry Flag│CY=~CY │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │CP r │ 4 │ 1 │***V1*│B8+rb │Compare │Compare A-s │ │CP N │ 7 │ 2 │ │FE XX │ │ │ │CP (HL) │ 7 │ 1 │ │BE │ │ │ │CP (IX+N) │ 19 │ 3 │ │DD BE XX │ │ │ │CP (IY+N) │ 19 │ 3 │ │FD BE XX │ │ │ │CPD │ 16 │ 2 │****1-│ED A9 │Compare and Decrement│A-(HL),HL=HL-1,BC=BC-1│ │CPDR │21/1│ 2 │****1-│ED B9 │Compare, Dec., Repeat│CPD till A=(HL)or BC=0│ │CPI │ 16 │ 2 │****1-│ED A1 │Compare and Increment│A-(HL),HL=HL+1,BC=BC-1│ │CPIR │21/1│ 2 │****1-│ED B1 │Compare, Inc., Repeat│CPI till A=(HL)or BC=0│ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │CPL │ 4 │ 1 │--1-1-│2F │Complement │A=~A │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │DAA │ 4 │ 1 │***P-*│27 │Decimal Adjust Acc. │A=BCD format (dec.) │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │DEC A │ 4 │ 1 │***V1-│3D │Decrement (8-bit) │s=s-1 │ │DEC B │ 4 │ 1 │ │05 │ │ │ │DEC C │ 4 │ 1 │ │0D │ │ │ │DEC D │ 4 │ 1 │ │15 │ │ │ │DEC E │ 4 │ 1 │ │1D │ │ │ │DEC H │ 4 │ 1 │ │25 │ │ │ │DEC L │ 4 │ 2 │ │2D │ │ │ │DEC (HL) │ 11 │ 1 │ │35 │ │ │ │DEC (IX+N) │ 23 │ 3 │ │DD 35 XX │ │ │ │DEC (IY+N) │ 23 │ 3 │ │FD 35 XX │ │ │ │DEC BC │ 6 │ 1 │------│0B │Decrement (16-bit) │ss=ss-1 │ │DEC DE │ 6 │ 1 │ │1B │ │ │ │DEC HL │ 6 │ 1 │ │2B │ │ │ │DEC SP │ 6 │ 1 │ │3B │ │ │ │DEC IX │ 10 │ 2 │------│DD 2B │Decrement │xx=xx-1 │ │DEC IY │ 10 │ 2 │ │FD 2B │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │DI │ 4 │ 1 │------│F3 │Disable Interrupts │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │DJNZ $+2 │13/8│ 1 │------│10 │Dec., Jump Non-Zero │B=B-1 till B=0 │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │EI │ 4 │ 1 │------│FB │Enable Interrupts │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │EX (SP),HL │ 19 │ 1 │------│E3 │Exchange │(SP)<->HL │ │EX (SP),IX │ 23 │ 2 │------│DD E3 │ │(SP)<->xx │ │EX (SP),IY │ 23 │ 2 │ │FD E3 │ │ │ │EX AF,AF' │ 4 │ 1 │------│08 │ │AF<->AF' │ │EX DE,HL │ 4 │ 1 │------│EB │ │DE<->HL │ │EXX │ 4 │ 1 │------│D9 │Exchange │qq<->qq' (except AF)│ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │HALT │ 4 │ 1 │------│76 │Halt │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │IM 0 │ 8 │ 2 │------│ED 46 │Interrupt Mode │ (n=0,1,2)│ │IM 1 │ 8 │ 2 │ │ED 56 │ │ │ │IM 2 │ 8 │ 2 │ │ED 5E │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │IN A,(N) │ 11 │ 2 │------│DB XX │Input │A=(n) │ │IN (C) │ 12 │ 2 │***P0-│ED 70 │Input* │ (Unsupported)│ │IN A,(C) │ 12 │ 2 │***P0-│ED 78 │Input │r=(C) │ │IN B,(C) │ 12 │ 2 │ │ED 40 │ │ │ │IN C,(C) │ 12 │ 2 │ │ED 48 │ │ │ │IN D,(C) │ 12 │ 2 │ │ED 50 │ │ │ │IN E,(C) │ 12 │ 2 │ │ED 58 │ │ │ │IN H,(C) │ 12 │ 2 │ │ED 60 │ │ │ │IN L,(C) │ 12 │ 2 │ │ED 68 │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │INC A │ 4 │ 1 │***V0-│3C │Increment (8-bit) │r=r+1 │ │INC B │ 4 │ 1 │ │04 │ │ │ │INC C │ 4 │ 1 │ │0C │ │ │ │INC D │ 4 │ 1 │ │14 │ │ │ │INC E │ 4 │ 1 │ │1C │ │ │ │INC H │ 4 │ 1 │ │24 │ │ │ │INC L │ 4 │ 1 │ │2C │ │ │ │INC BC │ 6 │ 1 │------│03 │Increment (16-bit) │ss=ss+1 │ │INC DE │ 6 │ 1 │ │13 │ │ │ │INC HL │ 6 │ 1 │ │23 │ │ │ │INC SP │ 6 │ 1 │ │33 │ │ │ │INC IX │ 10 │ 2 │------│DD 23 │Increment │xx=xx+1 │ │INC IY │ 10 │ 2 │ │FD 23 │ │ │ │INC (HL) │ 11 │ 1 │***V0-│34 │Increment (indirect) │(HL)=(HL)+1 │ │INC (IX+N) │ 23 │ 3 │***V0-│DD 34 XX │Increment │(xx+d)=(xx+d)+1 │ │INC (IY+N) │ 23 │ 3 │ │FD 34 XX │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │IND │ 16 │ 2 │?*??1-│ED AA │Input and Decrement │(HL)=(C),HL=HL-1,B=B-1│ │INDR │21/1│ 2 │?1??1-│ED BA │Input, Dec., Repeat │IND till B=0 │ │INI │ 16 │ 2 │?*??1-│ED A2 │Input and Increment │(HL)=(C),HL=HL+1,B=B-1│ │INIR │21/1│ 2 │?1??1-│ED B2 │Input, Inc., Repeat │INI till B=0 │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │JP $NN │ 10 │ 3 │------│C3 XX XX │Unconditional Jump │PC=nn │ │JP (HL) │ 4 │ 1 │------│E9 │Unconditional Jump │PC=(HL) │ │JP (IX) │ 8 │ 2 │------│DD E9 │Unconditional Jump │PC=(xx) │ │JP (IY) │ 8 │ 2 │ │FD E9 │ │ │ │JP C,$NN │10/1│ 3 │------│DA XX XX │Conditional Jump │If Carry = 1 │ │JP NC,$NN │10/1│ 3 │ │D2 XX XX │ │If Carry = 0 │ │JP M,$NN │10/1│ 3 │ │FA XX XX │ │If Sign = 1 (negative)│ │JP P,$NN │10/1│ 3 │ │F2 XX XX │ │If Sign = 0 (positive)│ │JP Z,$NN │10/1│ 3 │ │CA XX XX │ │If Zero = 1 (ans.= 0) │ │JP NZ,$NN │10/1│ 3 │ │C2 XX XX │ │If Zero = 0 (non-zero)│ │JP PE,$NN │10/1│ 3 │ │EA XX XX │ │If Parity = 1 (even) │ │JP PO,$NN │10/1│ 3 │ │E2 XX XX │ │If Parity = 0 (odd) │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │JR $N+2 │ 12 │ 2 │------│18 XX │Relative Jump │PC=PC+e │ │JR C,$N+2 │12/7│ 2 │------│38 XX │Cond. Relative Jump │If cc JR(cc=C,NC,NZ,Z)│ │JR NC,$N+2 │12/7│ 2 │ │30 XX │ │ │ │JR Z,$N+2 │12/7│ 2 │ │28 XX │ │ │ │JR NZ,$N+2 │12/7│ 2 │ │20 XX │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │LD I,A │ 9 │ 2 │------│ED 47 │Load* │dst=src │ │LD R,A │ 9 │ 2 │ │ED 4F │ │ │ │LD A,I │ 9 │ 2 │**0*0-│ED 57 │Load* │dst=src │ │LD A,R │ 9 │ 2 │ │ED 5F │ │ │ │LD A,r │ 4 │ 1 │------│78+rb │Load (8-bit) │dst=src │ │LD A,N │ 7 │ 2 │ │3E XX │ │ │ │LD A,(BC) │ 7 │ 1 │ │0A │ │ │ │LD A,(DE) │ 7 │ 1 │ │1A │ │ │ │LD A,(HL) │ 7 │ 1 │ │7E │ │ │ │LD A,(IX+N) │ 19 │ 3 │ │DD 7E XX │ │ │ │LD A,(IY+N) │ 19 │ 3 │ │FD 7E XX │ │ │ │LD A,(NN) │ 13 │ 3 │ │3A XX XX │ │ │ │LD B,r │ 4 │ 1 │ │40+rb │ │ │ │LD B,N │ 7 │ 2 │ │06 XX │ │ │ │LD B,(HL) │ 7 │ 1 │ │46 │ │ │ │LD B,(IX+N) │ 19 │ 3 │ │DD 46 XX │ │ │ │LD B,(IY+N) │ 19 │ 3 │ │FD 46 XX │ │ │ │LD C,r │ 4 │ 1 │ │48+rb │ │ │ │LD C,N │ 7 │ 2 │ │0E XX │ │ │ │LD C,(HL) │ 7 │ 1 │ │4E │ │ │ │LD C,(IX+N) │ 19 │ 3 │ │DD 4E XX │ │ │ │LD C,(IY+N) │ 19 │ 3 │ │FD 4E XX │ │ │ │LD D,r │ 4 │ 1 │ │50+rb │ │ │ │LD D,N │ 7 │ 2 │ │16 XX │ │ │ │LD D,(HL) │ 7 │ 1 │ │56 │ │ │ │LD D,(IX+N) │ 19 │ 3 │ │DD 56 XX │ │ │ │LD D,(IY+N) │ 19 │ 3 │ │FD 56 XX │ │ │ │LD E,r │ 4 │ 1 │ │58+rb │ │ │ │LD E,N │ 7 │ 2 │ │1E XX │ │ │ │LD E,(HL) │ 7 │ 1 │ │5E │ │ │ │LD E,(IX+N) │ 19 │ 3 │ │DD 5E XX │ │ │ │LD E,(IY+N) │ 19 │ 3 │ │FD 5E XX │ │ │ │LD H,r │ 4 │ 1 │ │60+rb │ │ │ │LD H,N │ 7 │ 2 │ │26 XX │ │ │ │LD H,(HL) │ 7 │ 1 │ │66 │ │ │ │LD H,(IX+N) │ 19 │ 3 │ │DD 66 XX │ │ │ │LD H,(IY+N) │ 19 │ 3 │ │FD 66 XX │ │ │ │LD L,r │ 4 │ 1 │ │68+rb │ │ │ │LD L,N │ 7 │ 2 │ │2E XX │ │ │ │LD L,(HL) │ 7 │ 1 │ │6E │ │ │ │LD L,(IX+N) │ 19 │ 3 │ │DD 6E XX │ │ │ │LD L,(IY+N) │ 19 │ 3 │ │FD 6E XX │ │ │ │LD BC,(NN) │ 20 │ 4 │------│ED 4B XX XX │Load (16-bit) │dst=src │ │LD BC,NN │ 10 │ 3 │ │01 XX XX │ │ │ │LD DE,(NN) │ 20 │ 4 │ │ED 5B XX XX │ │ │ │LD DE,NN │ 10 │ 3 │ │11 XX XX │ │ │ │LD HL,(NN) │ 20 │ 3 │ │2A XX XX │ │ │ │LD HL,NN │ 10 │ 3 │ │21 XX XX │ │ │ │LD SP,(NN) │ 20 │ 4 │ │ED 7B XX XX │ │ │ │LD SP,HL │ 6 │ 1 │ │F9 │ │ │ │LD SP,IX │ 10 │ 2 │ │DD F9 │ │ │ │LD SP,IY │ 10 │ 2 │ │FD F9 │ │ │ │LD SP,NN │ 10 │ 3 │ │31 XX XX │ │ │ │LD IX,(NN) │ 20 │ 4 │ │DD 2A XX XX │ │ │ │LD IX,NN │ 14 │ 4 │ │DD 21 XX XX │ │ │ │LD IY,(NN) │ 20 │ 4 │ │FD 2A XX XX │ │ │ │LD IY,NN │ 14 │ 4 │ │FD 21 XX XX │ │ │ │LD (HL),r │ 7 │ 1 │------│70+rb │Load (Indirect) │dst=src │ │LD (HL),N │ 10 │ 2 │ │36 XX │ │ │ │LD (BC),A │ 7 │ 1 │ │02 │ │ │ │LD (DE),A │ 7 │ 1 │ │12 │ │ │ │LD (NN),A │ 13 │ 3 │ │32 XX XX │ │ │ │LD (NN),BC │ 20 │ 4 │ │ED 43 XX XX │ │ │ │LD (NN),DE │ 20 │ 4 │ │ED 53 XX XX │ │ │ │LD (NN),HL │ 16 │ 3 │ │22 XX XX │ │ │ │LD (NN),IX │ 20 │ 4 │ │DD 22 XX XX │ │ │ │LD (NN),IY │ 20 │ 4 │ │FD 22 XX XX │ │ │ │LD (NN),SP │ 20 │ 4 │ │ED 73 XX XX │ │ │ │LD (IX+N),r │ 19 │ 3 │ │DD 70+rb XX │ │ │ │LD (IX+N),N │ 19 │ 4 │ │DD 36 XX XX │ │ │ │LD (IY+N),r │ 19 │ 3 │ │FD 70+rb XX │ │ │ │LD (IY+N),N │ 19 │ 4 │ │FD 36 XX XX │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │LDD │ 16 │ 2 │--0*0-│ED A8 │Load and Decrement │(DE)=(HL),HL=HL-1,# │ │LDDR │21/1│ 2 │--000-│ED B8 │Load, Dec., Repeat │LDD till BC=0 │ │LDI │ 16 │ 2 │--0*0-│ED A0 │Load and Increment │(DE)=(HL),HL=HL+1,# │ │LDIR │21/1│ 2 │--000-│ED B0 │Load, Inc., Repeat │LDI till BC=0 │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │NEG │ 8 │ 2 │***V1*│ED 44 │Negate │A=-A │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │NOP │ 4 │ 1 │------│00 │No Operation │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │OR r │ 4 │ 1 │***P00│B0+rb │Logical inclusive OR │A=Avs │ │OR N │ 7 │ 2 │ │F6 XX │ │ │ │OR (HL) │ 7 │ 1 │ │B6 │ │ │ │OR (IX+N) │ 19 │ 3 │ │DD B6 XX │ │ │ │OR (IY+N) │ 19 │ 3 │ │FD B6 XX │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │OUT (N),A │ 11 │ 2 │------│D3 XX │Output │(n)=A │ │OUT (C),0 │ 12 │ 2 │------│ED 71 │Output* │ (Unsupported)│ │OUT (C),A │ 12 │ 2 │------│ED 79 │Output │(C)=r │ │OUT (C),B │ 12 │ 2 │ │ED 41 │ │ │ │OUT (C),C │ 12 │ 2 │ │ED 49 │ │ │ │OUT (C),D │ 12 │ 2 │ │ED 51 │ │ │ │OUT (C),E │ 12 │ 2 │ │ED 59 │ │ │ │OUT (C),H │ 12 │ 2 │ │ED 61 │ │ │ │OUT (C),L │ 12 │ 2 │ │ED 69 │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │OUTD │ 16 │ 2 │?*??1-│ED AB │Output and Decrement │(C)=(HL),HL=HL-1,B=B-1│ │OTDR │21/1│ 2 │?1??1-│ED BB │Output, Dec., Repeat │OUTD till B=0 │ │OUTI │ 16 │ 2 │?*??1-│ED A3 │Output and Increment │(C)=(HL),HL=HL+1,B=B-1│ │OTIR │21/1│ 2 │?1??1-│ED B3 │Output, Inc., Repeat │OUTI till B=0 │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │POP AF │ 10 │ 1 │------│F1 │Pop │qq=(SP)+ │ │POP BC │ 10 │ 1 │ │C1 │ │ │ │POP DE │ 10 │ 1 │ │D1 │ │ │ │POP HL │ 10 │ 1 │ │E1 │ │ │ │POP IX │ 14 │ 2 │------│DD E1 │Pop │xx=(SP)+ │ │POP IY │ 14 │ 2 │ │FD E1 │ │ │ │PUSH AF │ 11 │ 1 │------│F5 │Push │-(SP)=qq │ │PUSH BC │ 11 │ 1 │ │C5 │ │ │ │PUSH DE │ 11 │ 1 │ │D5 │ │ │ │PUSH HL │ 11 │ 1 │ │E5 │ │ │ │PUSH IX │ 15 │ 2 │------│DD E5 │Push │-(SP)=xx │ │PUSH IY │ 15 │ 2 │ │FD E5 │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │RES b,r │ 8 │ 2 │------│CB 80+8*b+rb│Reset bit │m=m&{~2^b} │ │RES b,(HL) │ 15 │ 2 │------│CB 86+8*b │ │ │ │RES b,(IX+N) │ 23 │ 4 │------│DD CB XX 86+8*b │ │ │RES b,(IY+N) │ 23 │ 4 │------│FD CB XX 86+8*b │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │RET │ 10 │ 1 │------│C9 │Return │PC=(SP)+ │ │RET C │11/5│ 1 │------│D8 │Conditional Return │If Carry = 1 │ │RET NC │11/5│ 1 │ │D0 │ │If Carry = 0 │ │RET M │11/5│ 1 │ │F8 │ │If Sign = 1 (negative)│ │RET P │11/5│ 1 │ │F0 │ │If Sign = 0 (positive)│ │RET Z │11/5│ 1 │ │C8 │ │If Zero = 1 (ans.=0) │ │RET NZ │11/5│ 1 │ │C0 │ │If Zero = 0 (non-zero)│ │RET PE │11/5│ 1 │ │E8 │ │If Parity = 1 (even) │ │RET PO │11/5│ 1 │ │E0 │ │If Parity = 0 (odd) │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │RETI │ 14 │ 2 │------│ED 4D │Return from Interrupt│PC=(SP)+ │ │RETN │ 14 │ 2 │------│ED 45 │Return from NMI │PC=(SP)+ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │RLA │ 4 │ 1 │--0-0*│17 │Rotate Left Acc. │A={CY,A}<- │ │RL r │ 8 │ 2 │**0P0*│CB 10+rb │Rotate Left │m={CY,m}<- │ │RL (HL) │ 15 │ 2 │ │CB 16 │ │ │ │RL (IX+N) │ 23 │ 4 │ │DD CB XX 16 │ │ │ │RL (IY+N) │ 23 │ 4 │ │FD CB XX 16 │ │ │ │RLCA │ 4 │ 1 │--0-0*│07 │Rotate Left Cir. Acc.│A=A<- │ │RLC r │ 8 │ 2 │**0P0*│CB 00+rb │Rotate Left Circular │m=m<- │ │RLC (HL) │ 15 │ 2 │ │CB 06 │ │ │ │RLC (IX+N) │ 23 │ 4 │ │DD CB XX 06 │ │ │ │RLC (IY+N) │ 23 │ 4 │ │FD CB XX 06 │ │ │ │RLD │ 18 │ 2 │**0P0-│ED 6F │Rotate Left 4 bits │{A,(HL)}={A,(HL)}<- ##│ │RRA │ 4 │ 1 │--0-0*│1F │Rotate Right Acc. │A=->{CY,A} │ │RR r │ 8 │ 2 │**0P0*│CB 18+rb │Rotate Right │m=->{CY,m} │ │RR (HL) │ 15 │ 2 │ │CB 1E │ │ │ │RR (IX+N) │ 23 │ 4 │ │DD CB XX 1E │ │ │ │RR (IY+N) │ 23 │ 4 │ │FD CB XX 1E │ │ │ │RRCA │ 4 │ 1 │--0-0*│0F │Rotate Right Cir.Acc.│A=->A │ │RRC r │ 8 │ 2 │**0P0*│CB 08+rb │Rotate Right Circular│m=->m │ │RRC (HL) │ 15 │ 2 │ │CB 0E │ │ │ │RRC (IX+N) │ 23 │ 4 │ │DD CB XX 0E │ │ │ │RRC (IY+N) │ 23 │ 4 │ │FD CB XX 0E │ │ │ │RRD │ 18 │ 2 │**0P0-│ED 67 │Rotate Right 4 bits │{A,(HL)}=->{A,(HL)} ##│ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │RST 0 │ 11 │ 1 │------│C7 │Restart │ (p=0H,8H,10H,...,38H)│ │RST 08H │ 11 │ 1 │ │CF │ │ │ │RST 10H │ 11 │ 1 │ │D7 │ │ │ │RST 18H │ 11 │ 1 │ │DF │ │ │ │RST 20H │ 11 │ 1 │ │E7 │ │ │ │RST 28H │ 11 │ 1 │ │EF │ │ │ │RST 30H │ 11 │ 1 │ │F7 │ │ │ │RST 38H │ 11 │ 1 │ │FF │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │SBC r │ 4 │ 1 │***V1*│98+rb │Subtract with Carry │A=A-s-CY │ │SBC A,N │ 7 │ 2 │ │DE XX │ │ │ │SBC (HL) │ 7 │ 1 │ │9E │ │ │ │SBC A,(IX+N) │ 19 │ 3 │ │DD 9E XX │ │ │ │SBC A,(IY+N) │ 19 │ 3 │ │FD 9E XX │ │ │ │SBC HL,BC │ 15 │ 2 │**?V1*│ED 42 │Subtract with Carry │HL=HL-ss-CY │ │SBC HL,DE │ 15 │ 2 │ │ED 52 │ │ │ │SBC HL,HL │ 15 │ 2 │ │ED 62 │ │ │ │SBC HL,SP │ 15 │ 2 │ │ED 72 │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │SCF │ 4 │ 1 │--0-01│37 │Set Carry Flag │CY=1 │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │SET b,r │ 8 │ 2 │------│CB C0+8*b+rb│Set bit │m=mv{2^b} │ │SET b,(HL) │ 15 │ 2 │ │CB C6+8*b │ │ │ │SET b,(IX+N) │ 23 │ 4 │ │DD CB XX C6+8*b │ │ │SET b,(IY+N) │ 23 │ 4 │ │FD CB XX C6+8*b │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │SLA r │ 8 │ 2 │**0P0*│CB 20+rb │Shift Left Arithmetic│m=m*2 │ │SLA (HL) │ 15 │ 2 │ │CB 26 │ │ │ │SLA (IX+N) │ 23 │ 4 │ │DD CB XX 26 │ │ │ │SLA (IY+N) │ 23 │ 4 │ │FD CB XX 26 │ │ │ │SRA r │ 8 │ 2 │**0P0*│CB 28+rb │Shift Right Arith. │m=m/2 │ │SRA (HL) │ 15 │ 2 │ │CB 2E │ │ │ │SRA (IX+N) │ 23 │ 4 │ │DD CB XX 2E │ │ │ │SRA (IY+N) │ 23 │ 4 │ │FD CB XX 2E │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │SLL r │ 8 │ 2 │**0P0*│CB 30+rb │Shift Left Logical* │m={0,m,CY}<- │ │SLL (HL) │ 15 │ 2 │ │CB 36 │ │ (SLL instructions │ │SLL (IX+N) │ 23 │ 4 │ │DD CB XX 36 │ │ are Unsupported) │ │SLL (IY+N) │ 23 │ 4 │ │FD CB XX 36 │ │ │ │SRL r │ 8 │ 2 │**0P0*│CB 38+rb │Shift Right Logical │m=->{0,m,CY} │ │SRL (HL) │ 15 │ 2 │ │CB 3E │ │ │ │SRL (IX+N) │ 23 │ 4 │ │DD CB XX 3E │ │ │ │SRL (IY+N) │ 23 │ 4 │ │FD CB XX 3E │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │SUB r │ 4 │ 1 │***V1*│90+rb │Subtract │A=A-s │ │SUB N │ 7 │ 2 │ │D6 XX │ │ │ │SUB (HL) │ 7 │ 1 │ │96 │ │ │ │SUB (IX+N) │ 19 │ 3 │ │DD 96 XX │ │ │ │SUB (IY+N) │ 19 │ 3 │ │FD 96 XX │ │ │ ├─────────────┼────┼───┼──────┼────────────┼─────────────────────┼──────────────────────┤ │XOR r │ 4 │ 1 │***P00│A8+rb │Logical Exclusive OR │A=Axs │ │XOR N │ 7 │ 2 │ │EE XX │ │ │ │XOR (HL) │ 7 │ 1 │ │AE │ │ │ │XOR (IX+N) │ 19 │ 3 │ │DD AE XX │ │ │ │XOR (IY+N) │ 19 │ 3 │ │FD AE XX │ │ │ └─────────────┴────┴───┴──────┴────────────┴─────────────────────┴──────────────────────┘
r means register. It can be A,B,C,D,E,H, or L. Add this to last byte of OP-code:
Reg regbits A = 7 B = 0 C = 1 D = 2 E = 3 H = 4 L = 5 ((HL) = 6 )
In LD (IX+N),r
and LD (IY+N),r
you add these to the byte _Before_ the last.
b means bit. It can be 0-7.
Increase the last byte of the OP-code with 8*b. Used in SET
, BIT
and RES
If there are two numbers given for Clock, then the highest is when the jump is taken, the lowest is when it skips the jump.
* For unsupported instructions, use the hexadecimal OP-Codes with the assembler instruction .db
EX: SLL (HL) ; instead of this, use the below .db $CB,$36
┌───────┬───────┬─────────────────────────────────────────────┐ │ F │ -*01? │Flag unaffected/affected/reset/set/unknown │ │ S │ S │Sign flag (Bit 7) │ │ Z │ Z │Zero flag (Bit 6) │ │ HC │ H │Half Carry flag (Bit 4) │ │ P/V │ P │Parity/Overflow flag (Bit 2, V=overflow) │ │ N │ N │Add/Subtract flag (Bit 1) │ │ CY │ C│Carry flag (Bit 0) │ ├───────┴───────┼─────────────────────────────────────────────┤ │ n │Immediate addressing │ │ nn │Immediate extended addressing │ │ e │Relative addressing (PC=PC+2+offset) │ │ (nn) │Extended addressing │ │ (xx+d) │Indexed addressing │ │ r │Register addressing │ │ (rr) │Register indirect addressing │ │ │Implied addressing │ │ b │Bit addressing │ │ p │Modified page zero addressing (see RST) │ ├───────────────┼─────────────────────────────────────────────┤ │ A B C D E │Registers (8-bit) │ │ AF BC DE HL │Register pairs (16-bit) │ │ F │Flag register (8-bit) │ │ I │Interrupt page address register (8-bit) │ │ IX IY │Index registers (16-bit) │ │ PC │Program Counter register (16-bit) │ │ R │Memory Refresh register │ │ SP │Stack Pointer register (16-bit) │ ├───────────────┼─────────────────────────────────────────────┤ │ b │One bit (0 to 7) │ │ cc │Condition (C,M,NC,NZ,P,PE,PO,Z) │ │ d │One-byte expression (-128 to +127) │ │ dst │Destination s, ss, (BC), (DE), (HL), (nn) │ │ e │One-byte expression (-126 to +129) │ │ m │Any register r, (HL) or (xx+d) │ │ n │One-byte expression (0 to 255) │ │ nn │Two-byte expression (0 to 65535) │ │ pp │Register pair BC, DE, IX or SP │ │ qq │Register pair AF, BC, DE or HL │ │ qq' │Alternative register pair AF, BC, DE or HL │ │ r │Register A, B, C, D, E, H or L │ │ rr │Register pair BC, DE, IY or SP │ │ s │Any register r, value n, (HL) or (xx+d) │ │ src │Source s, ss, (BC), (DE), (HL), nn, (nn) │ │ ss │Register pair BC, DE, HL or SP │ │ xx │Index register IX or IY │ ├───────────────┼─────────────────────────────────────────────┤ │ + - * / ^ │Add/subtract/multiply/divide/exponent │ │ & ~ v x │Logical AND/NOT/inclusive OR/exclusive OR │ │ <- -> │Rotate left/right │ │ ( ) │Indirect addressing │ │ ( )+ -( ) │Indirect addressing auto-increment/decrement │ │ { } │Combination of operands │ │ # │Also BC=BC-1,DE=DE-1 │ │ ## │Only lower 4 bits of accumulator A used │ └───────────────┴─────────────────────────────────────────────┘