Home

Z80 Family CPU User Manual

image

Contents

1. The contents of the low order four bits bits 3 2 1 and 0 of the memory location HL are copied to the high order four bits 7 6 5 and 4 of that same memory location the previous contents of those high order four bits are copied to the low order four bits of the Accumulator register A and the previous contents of the low order four bits of the Accumulator are copied to the low order four bits of memory location HL The contents of the high order bits of the Accumulator are unaffected Note HL means the memory location specified by the contents of the HL register pair M Cycles T States 4 MHz E T 5 18 4 4 3 4 3 4 50 Condition Bits Affected S is set if Accumulator is negative after operation reset otherwise Z is set if Accumulator is zero after operation reset otherwise H is reset P V is set if parity of Accumulator is even after operation reset otherwise N is reset C is not affected UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual Example If the contents of the HL register pair are 5000H and the contents of the Accumulator and memory location 5000H are 0 1 1 1 1 0 1 O Accumulator 0 01 1 O 0 0 1 5000H at execution of RLD the contents ofthe Accumulator and memory location 5000H are 0 1 1 1 0 0 1 1 Accumulator 0 0 0 1
2. Description The low order byte in Index Register IX is loaded to memory address nn the upper order byte is loaded to the next highest address nn 1 The first n operand after the Op Code is the low order byte of nn M Cycles T States 4 MHz E T 6 20 4 4 3 3 3 3 5 00 Condition Bits Affected None Example If the Index Register IX contains 5A30H at instruction LD 4392H IX memory location 4392H contains number 30H and location 4393H contains 5AH UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 112 zikon LD nn IY Operation nn 1 IYh nn lt IYI Op Code LD Operands nn IY T pue L3 3 358 a EB 0 0 1 0 00 4 0 22 ra n ra n Description The low order byte in Index Register IY is loaded to memory address nn the upper order byte is loaded to memory location nn 1 The first n operand after the Op Code is the low order byte of nn M Cycles T States 4 MHz E T 6 20 4 4 3 3 3 3 5 00 Condition Bits Affected None Example Ifthe Index Register IY contains 4174H at instruction LD 8838H IY memory location 8838H contains number 74H and memory location 8839H contains 41H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2ILGAG 113 LD SP HL Operation SP lt HL Op Code LD Operands SP HL 1 1 1 r 1 0 0 1 F9 Descri
3. Description The Carry flag in the F register is set M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected S is not affected Z is not affected H is reset P V is not affected N is reset C is set UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 172 zikon NOP Operation Op Code NOP 0 0 0 0 0 0 0 0 00 Description The CPU performs no operation during this machine cycle M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected None UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual ZiLOG 173 HALT Operation Op Code HALT 0 1 1 1 0 1 1 0 76 Description The HALT instruction suspends CPU operation until a subsequent interrupt or reset is received While in the HALT state the processor executes NOPs to maintain memory refresh logic M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected None UM008001 1000 Z80 Instruction Set Z80 CPU User s Manual 174 C DI Operation IFF 0 Op Code DI 1 1 1 1 0 0 1 1 F3 Description DI disables the maskable interrupt by resetting the interrupt enable flip flops IFF1 and IFF2 Note that this instruction disables the maskable interrupt during its execution M cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected None Example When the CPU executes the ins
4. UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 210 zILOSG at execution of RR HL the contents of location 4343H and the Carry flag are 7 6 5 4 3 2 1 0 C 0 1 1 0 1 1 1 0 1 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual SLA m Operation CY 7 4 0 lt lt 0 Op Code SLA Operands m The m operand is any of r HL IX d or 1Y d as defined for the analogous RLC instructions These possible Op Code operand combinations are specified as follows in the assembled object code SLA r 1 1 00 1 0 1 1 CB SLA HL 1 110 0 14 0 14 1 CB SLA IX d 1 110 1 1 1 0 1 DD SLA IY d 1 1 1 1 1 1 0 1 FD UMO08001 1000 Z80 Instruction Set 212 Z80 CPU User s Manual RitLou r identifies registers B C D E H L or A assembled as follows in the object code field above Register r B 000 C 001 D 010 E 011 H 100 L 101 A 111 Description An arithmetic shift left 1 bit position is performed on the contents of operand m The content of bit 7 is copied to the Carry flag Bit 0 is the least significant bit Instruction M Cycles T States 4 MHz E T SLAr 2 8 4 4 2 00 SLA HL 4 15 4 4 4 3 3 75 SLA IX d 6 23 4 4 3 5 4 3 5 75 SLA IY d 6 23 4 4 3
5. 0 0 1 0 0 O07 O O 5000H at execution of RRD the contents of the Accumulator and memory location 5000H are 7 6 5 4 3 2 1 0 2110 0 0 0 0 0 0 Accumulator 0 1 0 0 0 O07 1 O 5000H UM008001 1000 Z80 Instruction Set 224 Z80 CPU User s Manual RitLou Bit Set Reset and Test Group BIT b r Operation Z lt rb Op Code BIT Operands b r CB Description This instruction tests bit b in register r and sets the Z flag accordingly Operands b and r are specified as follows in the assembled object code Bit Tested b 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 y 2 M Cycles T States 8 4 4 UMO08001 1000 Register r B 000 C 001 D 010 E 011 H 100 E 101 A 111 4 MHz E T 4 50 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 225 Condition Bits Affected S is unknown Z is set if specified bit is 0 reset otherwise H is set P V is unknown N is reset C is not affected Example If bit 2 in register B contains 0 at execution of BIT 2 B the Z flag in the F register contains 1 and bit 2 in register B remains 0 Bit 0 in register B is the least significant bit UMO08001 1000 Z80 Instruction Set 226 Z80 CPU User s Manual RitLou Operation Op Code Operands Description BIT b HL Z lt HL b BIT b H
6. The contents of register pair ss any of register pairs BC DE HL or SP are added to the contents of register pair HL and the result is stored in HL Operand ss is specified as follows in the assembled object code Register Pair ss BC 00 DE 01 HL 10 SP 11 M Cycles T States 4 MHz E T 3 11 4 4 3 2 75 Condition Bits Affected Example S is not affected Z is not affected H is set if carry out of bit 11 reset otherwise P V is not affected N is reset C is set if carry from bit 15 reset otherwise If register pair HL contains the integer 4242H and register pair DE contains 1111H atexecutionof ADD HL DE the HL register pair contains 5353H UMO08001 1000 Z80 Instruction Set 180 Z80 CPU User s Manual RitLou Operation Op Code Operands Description ADC HL ss HL lt HL ss CY ADC HL ss do 2m E E Lope p BB 0 1 s s 1 01 0 The contents of register pair ss any of register pairs BC DE HL or SP are added with the Carry flag C flag in the F register to the contents of register pair HL and the result is stored in HL Operand ss is specified as follows in the assembled object code Register Pair ss BC 00 DE 01 HL 10 SP 11 M Cycles T States 4 MHz E T 4 15 4 4 4 3 3 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise R is set
7. 123 EX DE loa tt reg 122 POC odia baaa kere ape ata 124 HALL ccc 173 ig Mr 176 TIM ge 177 sp 178 NAA eee e Re ded d dele dod aa hee eda a a eate 269 INCA a ae ad VD 270 ING EID a Rol d eb aue adi 161 ING CX iu ostrea Gent he oi e be ed e E SUCI gea AR dee 162 ING IYO eod eben di 163 INC IX ica dei e ele aed e E ed e e ed 185 INC IY ca Sn Beh tn REV e dre wed x Hes er 186 INCI oea anini a a eran e e E generis dno oD EE 160 ier qc 184 IND taa di daa 275 INDR ecos xc 217 Na rd ao Dase 272 INIR IMP 5D5 C cos deki d ish lg nel abs ae a a diate de greed aeaecee 273 liba 250 TP EX E nur etos ner edet e a ln divans M na eec a d E 251 ba PCT DE 252 nn II 239 JP tin i esI A A A AA C Tb p Hp ES 238 IRING k O uuo era d ees bx SOC dE FRE d SE Wd de e as 244 JR C8 oio us Wd le VER eee dades X RR dw eh 242 JIRE p v 241 A E 248 IRZ E AP 246 List of Instructions UM008001 1000 Z80 CPU User s Manual E LD CBC LA oed aute des Hed deseo due Bero due a Cep A RUE d 95 LD DE Alias Deed be dd PRU DS 96 LD CHIL n ada aa eee o ecd a ee does 89 bDHL t 2i dod dados e otn dtc d Ree CR m oh du e c 86 LD DGEd iss OO o poeta lewd 8 er ent Gow tn d aee Pe ie 90 LD IX f 4 uda ai ete pda dr a x Rd a 87 DG ave at ba Sn Bin de Sen Reh Oa eR Oars are ne a 91 LOAD raid ria toa 88 LD nn iia REV it ada ORE A 97 LD nn dd Res cer ees eed Re P
8. and CPU Control CPU Registers Control Address Control MEN 16 Bit 5V GND CLK Address Bus Figure 1 Z80 CPU Block Diagram CPU Registers The Z80 CPU contains 208 bits of R W memory that are available to the programmer Figure 2 illustrates how this memory is configured to eighteen 8 bit registers and four 16 bit registers All Z80 registers are implemented using static RAM The registers include two sets of six general purpose registers that may be used individually as 8 bit registers or in pairs as 16 bit registers There are also two sets of accumulator and flag registers and six special purpose registers UMO08001 1000 Overview Main Register Set Alternate Register Set NX NX Accumulator Flags Accumulator Flags A F A F B C B B D E D E H L H L Interrupt Vector Memory Refresh R Index Register IX Special Purpose Index Register IY Registers Stack Pointer SP Program Counter PC Figure 2 Z80 CPU Register Configuration Special Purpose Registers Program Counter PC Z80 CPU User s Manual General Purpose Registers The program counter holds the 16 bit address of the current instruction being fetched from memory The PC is automatically incremented after its contents have been transferred to the address lines When a program jump occurs the new value is automatically placed in the PC overriding
9. OR HL 1 0 14 1 0 1 1 0 B6 OR IX d 110 1110 1 DD OR IY d 1 1 1 1 1 1 0 1 FD 1 0 1 1 0 1 1 07 B6 a d po r identifies registers B C D E H L or A specified as follows in the assembled object code field above UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 157 Register r B 000 C 001 D 010 E 011 H 100 L 101 A ME Description The logical exclusive OR operation is performed between the byte specified by the s operand and the byte contained in the Accumulator the result is stored in the Accumulator Instruction M Cycles T States 4 MHz E T XOR r 1 4 1 00 XOR n 2 7 4 3 1 75 XOR HL 2 7 4 3 1 75 XOR IX d 5 19 4 4 3 5 3 4 75 XOR 1Y d 5 19 4 4 3 5 3 4 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity even reset otherwise N is reset C is reset Example If the Accumulator contains 96H 1001 0110 at execution of XOR 5DH 5DH 0101 1101 the Accumulator contains CBH 1100 1011 UM008001 1000 Z80 Instruction Set Z80 CPU User s Manual 158 ILOG CPs Operation A s Op Code CP Operands s The s operand is any of r n HL 1X d or 1Y d as defined for the analogous ADD instructions These possible Op Code operand combinations are assembled as follows in the obj
10. Data Bus Figure 2 ROM and RAM Implementation UM008001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual 30 RitLou Memory Speed Control Slow memories can reduce costs for many applications The WAIT line on the CPU allows the Z80 to operate with any speed memory Memory access time requirements which are covered in Chapter A3 are most severe during the MI cycle instruction fetch All other memory access cycles complete in an additional one half clock cycle Hence it is sometimes appropriate to add one wait state to the M1 cycle so slower memories can be used Figure 3 is an example of a simple circuit that accomplishes this objective This circuit can be changed to add a single wait state to any memory access as indicated in Figure 4 WAIT 45V M gt A MIR wi ex FEE cee D Qr D Q Gk 7474 7474 Mi re d C Q C Q R R SS WAIT 5V 5V Figure 3 Adding One Wait State to an M1 Cycle n mo o e A UMO08001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual 2iLOU 31 WAIT 5V 7400 T T 45V I 42 tw CLK S S MEQ g p a MREG gt 7474 7474 LK o c Q WAIT VJ b dm Figure 4 Adding One Wait State to Any Memory Cycle Interfacing Dynamic Memories Each individual dynamic RAM has it s own specifications tha
11. Description The contents of any register r are loaded to any other register r r r identifies any of the registers A B C D E H or L assembled as follows in the object code Register rc A 111 B 000 C 001 D 010 E 011 H 100 L 101 M Cycles T States MHz E T 1 4 1 0 Condition Bits Affected None Example If the H register contains the number 8AH and the E register contains 10H the instruction LD H E results in both registers containing 10H UMO08001 1000 Z80 Instruction Set 82 Z80 CPU User s Manual RitLou Operation Op Code Operands Description LD r n ren LD The 8 bit integer n is loaded to any register r where r identifies register A B C D E H or L assembled as follows in the object code Register r A 111 B 000 C 001 D 010 E 011 H 100 L 101 M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected None Example At execution of LD E A5H the contents of register E are A5H UMO08001 1000 Z80 Instruction Set LD r HL Operation r lt HL Op Code LD Operands r HL 0 1 lt r 1 1 0 Z80 CPU User s Manual ziLGAG 83 Description The 8 bit contents of memory location HL are loaded to register r where r identifies register A B C D E H or L assembled as follows in the object code Register r A 111 B 000 C 001 D 010 E 011 H 10
12. The contents of register r are rotated left 1 bit position The content of bit 7 is copied to the Carry flag and also to bit 0 Operand r is specified as follows in the assembled object code Register r B 000 C 001 D 010 E 011 H 100 L 101 A 111 M Cycles T States 4 MHz E T 2 8 4 4 2 00 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity even reset otherwise N is reset C is data from bit 7 of source register UMO08001 1000 Z80 Instruction Set Example 7 6 5 4 3 If the contents of register r are 2 4 0 4 0 0 0 4 0 0 0 Z80 CPU User s Manual 2iLOU 195 atexecution of RLC r the contents of register r and the Carry flag are C 7 6 5 4 3 2 1 0 1 0 0 0 1 0 0 0 1 UMO08001 1000 Z80 Instruction Set 196 Z80 CPU User s Manual RitLou RLC HL Operation CY 4 7 4 0 lt HL Op Code RLC Operands HL 1 1 0 0 1 0 1 1 CB 0 0 0 0 0 1 1 o 06 Description The contents of the memory address specified by the contents of register pair HL are rotated left 1 bit position The content of bit 7 is copied to the Carry flag and also to bit 0 Bit 0 is the least sign
13. Add Subtract e Logical AND Logical OR Logical Exclusive OR Compare Left or Right Shifts or Rotates Arithmetic and Logical Increment e Decrement Set Bit e Reset Bit e Test bit Instruction Register and CPU Control As each instruction is fetched from memory it is placed in the INSTRUCTION register and decoded The control sections performs this function and then generates and supplies the control signals necessary to read or write data from or to the registers control the ALU and provide required external control signals PIN DESCRIPTION Overview The Z80 CPU I O pins are illustrated in Figure 3 and the function of each is described in the following paragraphs UMO08001 1000 Overview System IORQ Control RD CPU Control INT CPU s gt Bus Control Z80 CPU Figure 3 2Z80 I O Pin Configuration Pin Functions A15 A0 Z80 CPU User s Manual AO Al A2 A3 A4 AS A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 Z ILOG Address Bus Data Bus Address Bus output active High tristate A15 AO form a 16 bit address bus The Address Bus provides the address for memory data bus exchanges up to 64 Kbytes and for I O device exchanges UMO08001 1000 Overview 7 8 Z80 CPU User s Manual EILO BUSACK Bus Acknowledge output active Low Bus Acknowledge indicates to the requesting device that the CPU address bus data bus and control signals MREQ IORQ
14. SRL HL 1 1 00 1 0 1 1 CB SRL IX d 1 110 1 1 1 0 1 DD SRL IY d 1 4 4 4 44 4 0 7 1 FD 0 0 1 1 1 1 1 0 3E r identifies registers B C D E H L or A assembled as follows in the object code field above Description The contents of operand m are shifted right 1 bit position The content of bit 0 is copied to the Carry flag and bit 7 is reset Bit 0 is the least significant bit Instruction M Cycles T States 4 MHz E T SRL r 2 8 4 4 2 00 SRL HL 4 15 4 4 4 3 3 75 SRL 1X d 6 23 4 4 3 5 4 3 5 75 UM008001 1000 Z80 Instruction Set Z80 CPU User s Manual SRL 1Y d 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected Example S is reset Z is set if result is zero reset otherwise H is reset P V is set if parity is even reset otherwise N is reset C is data from bit 0 of source register Ifthe contents of register B are 7 6 5 4 3 2 1 0 1 0 00 1 11 1 at execution of SRL B the contents of register B and the Carry flag are 7 6 5 4 8 2 1 0 C 01110 0 0 41 1 1 1 UMO08001 1000 Z80 Instruction Set 220 Z80 CPU User s Manual 7 EILO Operation Op Code Operands Description RLD ipG3pu pad O ED B 3 5 39 AE
15. 29 Figure 19 Adding One Wait State to an MI Cycle 30 Figure 20 Adding One Wait State to Any Memory Cycle 31 Figure 21 Interfacing Dynamic RAMS 020000 ee eee 32 Figure 22 Shifting of BCD Digits Bytes 05 36 UM008001 1000 List of Figures xi Z80 CPU User s Manual List of Figures UM008001 1000 Z80 CPU User s Manual e AY List of Tables Table 1 Interrupt Enable Disable Flip Flops 24 Table 2 Bubble Listing o oooooooooorrrrrorrr 37 Table 3 Multiply Listing 0 0 eee IR 39 Table 4 Hex Binary Decimal Conversion Table 49 Table 5 8 Bit Load Group LD 1 2 0 eee eee 51 Table 6 16 Bit Load Group LD PUSH and POP 55 Table 7 Exchanges EX and EXX 2 ccc oo 56 Table 8 Block Transfer Group 2 0 0 cece ee eee eee eee 58 Table 9 Block Search Group 0 0 cece ence eee eens 58 Table 10 8 Bit Arithmetic and Logic 0 2 0 0 e eee eee 60 Table 11 General Purpose AF Operation 000000 61 Table 12 16 Bit Arithmetic 00 2c cece eee 62 Table 13 Rotates and Shifts 00 0 cece eee 63 Table 14 Bit Manipulation Group 0 0 0 66 Table 15 Jump Call and Return Group 00000 e o 69 Table 16 Restart Group 2 0 0 cece een eens 70 Table 17 Input Group 2 0 eee Ih 72 Table 18 8 Bit Arith
16. PC contents to the top of the stack Because this is a 3 byte instruction the Program Counter was incremented by three before the push is executed Condition cc is programmed as one of eight status that corresponds to condition bits in the Flag Register register F These eight status are UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 258 RitLou defined in the table below which also specifies the corresponding cc bit fields in the assembled object code cc 000 001 010 011 100 101 110 111 If cc is true M Cycles 5 If cc is false M Cycles 3 Condition Bits Affected None Example Relevant Condition Flag NZ non zero Z Z zero Z NC non carry C C carry Z PO parity odd P V PE parity even P V P sign positive S M sign negative S T States 4 MHz E T 17 4 3 4 3 3 4 25 T States 4 MHz E T 10 4 3 3 2 50 If the C Flag in the F register is reset the contents of the Program Counter are 1A47H the contents of the Stack Pointer are 3002H and memory locations have the contents Location 1A47H 1448H 1A49H Contents D4H 35H 21H then if an instruction fetch sequence begins the 3 byte instruction D43521H is fetched to the CPU for execution The mnemonic equivalent of this is CALL NC 2135H At execution of this instruction the contents of memory address 3001H is 1AH the contents of address 3000H is 4AH the UMO08001 1000 Z80 Instruction Set Z80 CPU User s M
17. ZiLOG Z80 Family CPU User Manual User Manual UM008001 1000 ZiLOG Worldwide Headquarters 910 E Hamilton Avenue Campbell CA 95008 Telephone 408 558 8500 Fax 408 558 8300 www ZiLOG com Z80 CPU User s Manual 110 This publication is subject to replacement by a later edition To determine whether a later edition exists or to request copies of publications contact ZiLOG Worldwide Headquarters 910 E Hamilton Avenue Campbell CA 95008 Telephone 408 558 8500 Fax 408 558 8300 www ZiLOG com Document Disclaimer ZiLOG is a registered trademark of ZiLOG Inc in the United States and in other countries All other products and or service names mentioned herein may be trademarks of the companies with which they are associated 2001 by ZiLOG Inc All rights reserved Information in this publication concerning the devices applications or technology described is intended to suggest possible uses and may be superseded ZiLOG INC DOES NOT ASSUME LIABILITY FOR OR PROVIDE A REPRESENTATION OF ACCURACY OF THE INFORMATION DEVICES OR TECHNOLOGY DESCRIBED IN THIS DOCUMENT ZiLOG ALSO DOES NOT ASSUME LIABILITY FOR INTELLECTUAL PROPERTY INFRINGEMENT RELATED IN ANY MANNER TO USE OF INFORMATION DEVICES OR TECHNOLOGY DESCRIBED HEREIN OR OTHERWISE Except with the express written approval of ZiLOG use of information devices or technology as critical components of life support systems is not authorized No licenses
18. 0 PCL lt P Op Code RST Operands p 1 1 ma t 1 1 1 Description The current Program Counter PC contents are pushed onto the external memory stack and the page zero memory location given by operand p is loaded to the PC Program execution then begins with the Op Code in the address now pointed to by PC The push is performed by first decrementing the contents of the Stack Pointer SP loading the high order byte of PC to the memory address now pointed to by SP decrementing SP again and loading the low order byte of PC to the address now pointed to by SP The Restart instruction allows for a jump to one of eight addresses indicated in the table below The operand p is assembled to the object code using the corresponding T state Because all addresses are in page zero of memory the high order byte of PC is loaded with 00H The number selected from the p column of the table is loaded to the low order byte of PC p t 00H 000 08H 001 10H 010 18H 011 20H 100 28H 101 30H 110 38H 111 M Cycles T States 4 MHz E T 3 11 5 3 3 2 15 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 268 ZiLaG Example If the contents of the Program Counter are 15B3H at execution of RST 18H Object code 1101111 the PC contains 0018H as the address of the next Op Code fetched UMO08001 1000 Z80 Instruction Set Input and Output Group Operation A n Op Code
19. 2 3 4 5 6 7 M cycles 5 UMO08001 1000 b 000 001 010 011 100 iga 110 111 T States 4 MHz E T 20 4 4 3 5 4 5 00 Z80 Instruction Set Z80 CPU User s Manual 2iLOG 229 Condition Bits Affected S is unknown Z is set if specified Bit is 0 reset otherwise H is set P V is unknown N is reset C is not affected Example If the contents of Index Register IX are 20004 and bit 6 in memory location 2004H contains 1 at execution of BIT 6 1X 4H the Z flag in the F register contains 0 and bit 6 in memory location 2004H still contains 1 Bit 0 in memory location 200 4H is the least significant bit UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 230 ILOG BIT b IY d Operation Z lt IY d b Op Code BIT Operands b IY d NA Ito la Pa 1 1101 0 1 0 1 1 CB lt lt d 0 1 a b gt 1 1 0 Description This instruction tests bit b in the memory location specified by the content of register pair IY combined with the two s complement displacement d and sets the Z flag accordingly Operand b is specified as follows in the assembled object code UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 231 Bit Tested b 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 VAT M Cycles T States 4 MHz E T 5 20 4 4 3 5 4 5 00 Condition Bits Affected S is unknown Z is set if specified Bit i
20. A lt Atr ADD A r 110 0 0 0 r The contents of register r are added to the contents ofthe Accumulator and the result is stored in the Accumulator The symbol r identifies the registers A B C D E H or L assembled as follows in the object code Register r A 111 B 000 C 001 D 010 E 011 H 100 L 101 M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if overflow reset otherwise N is reset C is set if carry from bit 7 reset otherwise UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 141 Example If the contents of the Accumulator are 44H and the contents of register C are 11H at execution of ADD A C the contents of the Accumulator are 55H UM008001 1000 Z80 Instruction Set Z80 CPU User s Manual Z 142 zicou ADD A n Operation A A n Op Code ADD Operands A n Description The integer n is added to the contents of the Accumulator and the results are stored in the Accumulator M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if overflow
21. Description PUSH qq SP 2 qqL SP 1 qqH PUSH qq 1 1 q q 0 1 0 1 The contents of the register pair qq are pushed to the external memory LIFO last in first out Stack The Stack Pointer SP register pair holds the 16 bit address of the current top of the Stack This instruction first decrements SP and loads the high order byte of register pair qq to the memory address specified by the SP The SP is decremented again and loads the low order byte of qq to the memory location corresponding to this new address in the SP The operand qq identifies register pair BC DE HL or AF assembled as follows in the object code Pair qq BC 00 DE 01 HL 10 AF 11 M Cycles T States 4 MHz E T 3 11 5 3 3 2 75 Condition Bits Affected None Example Ifthe AF register pair contains 2233H and the Stack Pointer contains 1007H at instruction PUSH AF memory address 1006H contains 22H memory address 1005H contains 33H and the Stack Pointer contains 1005H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 117 PUSH IX Operation SP 2 lt IXL SP 1 lt IXH Op Code PUSH Operands IX 1 1 0 1 1 1 0 1 DD 1 1 1 0 0 1 0 1 ES Description The contents of the Index Register IX are pushed to the external memory LIFO last in first out Stack The Stack Pointer SP register pair holds the 16 bit address of the current top of th
22. IN Operands A n IN A n 1 1 0 1 1 lt a Z80 CPU User s Manual 2ILGAG 269 DB Description The operand n is placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports The contents of the Accumulator also appear on the top half A8 through A15 of the address bus at this time Then one byte from the selected port is placed on the data bus and written to the Accumulator register A in the CPU T States 4 MHz LT 11 4 3 4 2 75 Condition Bits Affected None Example If the contents of the Accumulator are 23H and byte 7BH is available at the peripheral device mapped to I O port address 01H At execution of INA 01H UMO08001 1000 the Accumulator contains 7BH Z80 Instruction Set 270 Z80 CPU User s Manual RitLou Operation Op Code Operands Description IN r C The contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports The contents of Register B are placed on the top half A8 through A15 of the address bus at this time Then one byte from the selected port is placed on the data bus and written to register r in the CPU Register r identifies any of the CPU registers shown in the following table which also indicates the corresponding 3 bit r field
23. IY IY 1 Op Code INC Operands IY 1 1 1 1 1 1 0 0 0 1 0 0 0 1 FD 23 Description The contents of the Index Register IY are incremented M Cycles T States 4 MHz E T 2 10 4 6 2 50 Condition Bits Affected None Example If the contents of the Index Register are 2977H at execution of INC IY the contents of Index Register IY are 2978H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 187 DEC ss Operation ss ss 1 Op Code DEC Operands ss Description The contents of register pair ss any of the register pairs BC DE HL or SP are decremented Operand ss is specified as follows in the assembled object code Register Pair ss BC 00 DE 01 HL 10 SP 11 M Cycles T States 4 MHz E T 1 6 1 50 Condition Bits Affected None Example If register pair HL contains 1001H at execution of DEC HL the contents of HL are 1000H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 188 ILOG DEC IX Operation IX IX 1 Op Code DEC Operands IX 1 1 0 1 1 1 0 1 DD 0 01 0 1 0 1 1 2B Description The contents of Index Register IX are decremented M Cycles T States 4 MHz E T 2 10 4 6 2 50 Condition Bits Affected None Example If the contents of Index Register IX are 2006H at execution of DEC IX the contents of Index Register IX a
24. None Example If address 6666H contains 92H and address 6667H contains DAH at instruction LD IX 6666H the Index Register IX contains DA92H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 108 ATP LD IY nn Operation IYh lt nn 1 TYI lt nn Op Code LD Operands IY nn drca ee wg exe ode qe a EB 0 0 1 0 1 0 1 0 2A a n re n Description The contents of address nn are loaded to the low order portion of Index Register IY and the contents of the next highest memory address nn 1 are loaded to the high order portion of IY The first n operand after the Op Code is the low order byte of nn M Cycles T States 4 MHz E T 6 20 4 4 3 3 3 3 5 00 Condition Bits Affected None Example If address 6666H contains 92H and address 6667H contains DAH at instruction LD IY 6666H the Index Register IY contains DA92H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 109 LD nn HL Operation nn 1 lt H nn L Op Code LD Operands nn HL 0 0 1 0 0 0 1 0 22 ra n gt n gt Description The contents of the low order portion of register pair HL register L are loaded to memory address nn and the contents of the high order portion of HL register H are loaded to the next highest memory address nn 1 The first n operan
25. Two index registers are provided because very often operations require two or more tables Indexed addressing also allows for relocatable code The two index registers in the Z80 are referred to as IX and IY To indicate indexed addressing the notation use IX d or IY d Here d is the displacement specified after the Op Code The parentheses indicate that this value is used as a pointer to external memory Register Addressing Many of the 780 Op Codes contain bits of information that specify which CPU register is to be used for an operation An example of register addressing is to load the data in register 6 into register C Implied Addressing Implied addressing refers to operations where the Op Code automatically implies one or more CPU registers as containing the operands An example is the set of arithmetic operations where the accumulator is always implied to be the destination of the results Register Indirect Addressing This type of addressing specifies a 16 bit CPU register pair such as HL to be used as a pointer to any location in memory This type of instruction is very powerful and it is used in a wide range of applications Op Code L One or Two Bytes An example of this type of instruction is to load the accumulator with the data in the memory location pointed to by the HL register contents Indexed addressing is actually a form of register indirect addressing UMO08001 1000 Z80 CPU Instruction Descript
26. Z80 CPU User s Manual Z 24 RitLou Table 1 Interrupt Enable Disable Flip Flops Action IFF1 IFF2 Comments CPU Reset 0 0 Maskable Interrupt INT Disabled DI Instruction Execution 0 0 Maskable INT Disabled EI Instruction Execution 1 1 Maskable INT Enabled LD A I Instruction Execution IFF2 gt Q Parity Flag LD A R instruction Execution el IFF2 gt Q Parity Flag Accept NMI 0 ui MaskableUInterrupt RETN Instruction Execution IFF2 IFF2 gt Uindicates completion of non maskable interrupt service routine CPU Response Non Maskable The CPU always accepts a non maskable interrupt When this occurs the CPU ignores the next instruction that it fetches and instead performs a restart to location 0066H The CPU functions as if it had recycled a restart instruction but to a location other than one of the eight software restart loca tions A restart is merely a call to a specific address in page 0 of memory The CPU can be programmed to respond to the maskable interrupt in any one of three possible modes Mode 0 This mode is similar to the 8080A interrupt response mode With this mode the interrupting device can place any instruction on the data bus and the CPU executes it Thus the interrupting device provides the next instruc tion to be executed Often this is a restart instruction because the inter rupting device only need supply a s
27. d the contents of the Index Register IY summed with a two s complement displacement integer d is loaded to register r where r identifies register A B C D E H or L assembled as follows in the object code Register r A 111 B 000 C 001 D 010 E 011 H 100 L 101 M Cycles T States 4 MHz E T 5 19 4 4 3 5 3 4 75 Condition Bits Affected None Example If the Index Register IY contains the number 25AFH the instruction LD B IY 19H causes the calculation of the sum 25AFH 19H which points to memory location 25C8H If this address contains byte 39H the instruction results in register B also containing 39H UM008001 1000 Z80 Instruction Set 86 Z80 CPU User s Manual RitLou Operation Op Code Operands Description LD HL r HL lt r LD HL r Of 4 454 0 r The contents of register r are loaded to the memory location specified by the contents of the HL register pair The symbol r identifies register A B C D E H or L assembled as follows in the object code Register r A 111 B 000 C 001 D 010 E 011 H 100 L 101 M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected None Example If the contents of register pair HL specifies memory location 2146H and the B register contains byte 29H at execution of LD HL B memory address 2146H also contains 29H UMO08001 1000 Z80 Instruction Set Z80 CPU User s
28. 0 1 oo ojo o AM The contents of the memory location addressed by the HL register is compared with the contents of the Accumulator In case of a true compare a condition bit is set Then HL is incremented and the Byte Counter register pair BC is decremented M Cycles T States 4 MHz E T 4 16 4 4 3 5 4 00 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if A is HL reset otherwise H is set if borrow from bit 4 reset otherwise P V is set if BC 1 is not 0 reset otherwise N is set C is not affected If the HL register pair contains 1111H memory location 1111H contains 3BH the Accumulator contains 3BH and the Byte Counter contains 0001H At execution of CPI the Byte Counter contains 0000H the HL register pair contains 11124 the Z flag in the F register sets and the P V flag in the F register resets There is no effect on the contents of the Accumulator or address 1111H UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual 2iLOU 135 CPIR A HL HL lt HL 1 BC BC 1 CPIR 11111io 1 1 o 1 ED 1 0 1 1 0 00 1 Bl The contents of the memory location addressed by the HL register pair is compared with the contents of the Accumulator In case of a true compare a condition bit is set HL is incremented and the Byte Counter register pair BC is decremented If dec
29. 1 0 1 170 1 ED 1 Oj 1 0 1 0 0 1 AY The contents of the memory location addressed by the HL register pair is compared with the contents of the Accumulator In case of a true compare a condition bit is set The HL and Byte Counter register pair BC are decremented M Cycles T States 4 MHz E T 4 16 4 4 3 5 4 00 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if A equals HL reset otherwise H is set if borrow from bit 4 reset otherwise P V is set if BC 1 x 0 reset otherwise N is set C is not affected If the HL register pair contains 1111H memory location 1111H contains 3BH the Accumulator contains 3BH and the Byte Counter contains 0001H At execution of CPD the Byte Counter contains 0000H the HL register pair contains 1110H the flag in the F register sets and the P V flag in the F register resets There is no effect on the contents of the Accumulator or address 1111H UMO08001 1000 Z80 Instruction Set 138 Z80 CPU User s Manual RitLou Operation Op Code Operands Description CPDR A HL HL lt HL 1 BC lt BC 1 CPDR tilo 1 410 3 5B8 1 OJ 1 1 1 01 0 1 B9 The contents of the memory location addressed by the HL register pair is compared with the contents of the Accumulator In case of a true compare a condition bit is set The HL and BC Byte Counter r
30. 4 lists the 16 bit exchange instructions implemented in the Z80 Op Code 088 allows the programmer to switch between the two pairs of accumulator flag registers while D9H allows the programmer to switch between the duplicate set of six general purpose registers These Op Codes are only one byte in length to minimize the time necessary to perform the exchange so that the duplicate banks can be used to make very fast interrupt response times UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual RitLou Table 3 16 Bit Load Group LD PUSH and POP Source Register Imm Ext Ext Addr Reg Indir Register BC DE HL SP IX IY nn nn SP AF BC DE HL SP DD FD F9 F9 IX n n n n IY FD FD FD 21 2A El n n n n EXT nn ED ED ED DD FD ADDR 43 53 73 22 22 n n n n n n n n n n PUSH REG SP DD FD Instructions gt IND E6 E6 NOTE The Push amp Pop instruction adjust the SP after every execution T POP Instructions UMO08001 1000 Z80 CPU Instruction Description 55 Z80 CPU User s Manual Table 4 Exchanges EX and EXX Implied Addressing AF BC DE andHL HL IX IY IMPLIED AF 08 BC DE D9 HL DE REG SP DD FD IND E3 E3 Block Transfer and Search Table 5 lists the extremely powerful block transfer instructions
31. 5 4 3 5 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity is even reset otherwise N is reset C is data from bit 7 Example If the contents of register L are UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 213 atexecution of SLA L the contents of register L and the Carry flag are UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual SRA m Operation 7 0 gt CY E Op Code SRA Operands m The m operand is any of r HL 1X d or 1Y d as defined for the analogous PLC instructions These possible Op Code operand combinations are specified as follows in the assembled object code SRA r 1 1 00 1 0 1 1 CB 0 0 1 0 O a r gt SRA HL 1 1 0 0 14 0 41 1 CB SRA IX d 1 110 1 1 1 0 1 DD SRA IY d 1111 14 14 147 0 4 14 FD UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 215 r identifies registers B C D E H L or A assembled as follows in the object code field above Register r B 000 C 001 D 010 E 011 H 100 E 101 A 115 Description An arithmetic shift right 1 bit position is performed on the c
32. DE Dec BC Repeat until BC 0 ED LDD Load DE gt HL AS Inc HL and DE Dec BC ED LDDR Load DE gt HL B8 Dec HL and DE Dec BC Repeat until BC 0 Table 6 Block Search Group Note Reg HL points to source Reg DE points to destination Reg BC is byte counter Search Location Reg Indir HL ED CPI Al Inc HL Dec BC ED CPRI Inc HL Dec BC Bl Repeat until BC 0 or find match ED WD Dec HL and BC A9 ED CPDR Dec HL and BC B9 Repeat until BC 0 or find match Note HL points to location in memory to be compared with accumulator contents BC Is byte counter UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2iLOU 59 Arithmetic and Logical Table 7 lists all the 8 bit arithmetic operations that can be performed with the accumulator also listed are the increment INC and decrement DEC instructions In all these instructions except INC and DEC the specified 8 bit operation is performed between the data in the accumulator and the source data The result of the operation is placed in the accumulator with the exception of compare CP that leaves the accumulator unchanged All these operations effect the flag register as a result of the specified operation INC and DEC instructions specify a register or a memory location as both source and destination of the result When the source operand is addressed using the index registers the dis
33. IY d 1 14 4 4 44 4 0 7 1 FD d gt r identifies registers B C D E H L or A specified as follows in the assembled object code field above UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 155 Register r B 000 C 001 D 010 E 011 H 100 L 101 A aatal Description A logical OR operation is performed between the byte specified by the s operand and the byte contained in the Accumulator the result is stored in the Accumulator Instruction M cycles T States 4 MHz E T OR r 1 4 1 00 OR n 2 7 4 3 1 75 OR HL 2 7 4 3 1 75 OR IX d 5 19 4 4 3 5 3 4 75 OR IY d 5 19 4 4 3 5 3 4 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if overflow reset otherwise N is reset C is reset Example If the H register contains 48H 0100 0100 and the Accumulator contains 12H 0001 0010 at execution of OR H the Accumulator contains 5AH 0101 1010 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 156 ILOG XOR s Operation A A Os Op Code XOR Operands S The s operand is any ofr n HL 1X d or 1Y d as defined for the analogous ADD instructions These possible Op Code operand combinations are assembled as follows in the object code OR r 1 0 1 1 0 r gt ORn 1 1 1 1 0 1 1 0 F6
34. Instruction Set Z80 CPU User s Manual 2iLGAG 101 LDR A Operation R A Op Code LD Operands R A 1 1 1 0 1 1 0 1 ED 0 104 0 1 11 1 4F Description The contents of the Accumulator are loaded to the Memory Refresh register R M Cycles T States MHz E T 2 9 4 5 2 25 Condition Bits Affected None UM008001 1000 Z80 Instruction Set Z80 CPU User s Manual 102 zikon 16 Bit Load Group LD dd nn Operation dd nn Op Code LD Operands dd nn a n ra n Description The 2 byte integer nn is loaded to the dd register pair where dd defines the BC DE HL or SP register pairs assembled as follows in the object code Pair dd BC 00 DE 01 HL 10 SP 11 The first n operand after the Op Code is the low order byte M Cycles T States 4 MHz E T 2 10 4 3 3 2 50 Condition Bits Affected None Example At execution of LD HL 5000H the contents ofthe HL register pair is 5000H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 103 LD IX nn Operation Ix lt nn Op Code LD Operands IX nn Description Integer nn is loaded to the Index Register IX The first n operand after the Op Code is the low order byte M Cycles T States 4 MHz E T 4 14 4 4 3 3 3 50 Condition Bits Affected None Example At instruc
35. Loc Obj Code Stmt Source Statement 15 c length of data array 16 d first element in comparison 17 e second element in comparison 18 h flag to indicate exchange 19 2 unused 20 3 ix pointer into data array 21 iy unused 22 0000 222600 23 sort ld data hl save data address 0003 cb84 24 loop res flag h initialize exchange flag 0005 441 25 ld b c initialize length counter 0006 05 26 dec b adjust for testing 0007 dd2a2600 27 ld ix data initialize array pointer 000b dd7e00 28 next ld a ix first element in comparison 000e 57 29 Id d a temporary storage for element goof dd5e01 30 ld e ix 1 second element in comparison 0012 93 31 sub e comparison first to second 0013 3008 32 jr pc noex if first gt second no jump 0015 dd7300 33 ld ix e exchange array elements 0018 dd7201 34 ld ix 1 d 001b cbc4 35 set flag h record exchange occurred 0010 dd23 36 noex inc ix point to next data element 001f 10ea 37 djnz next count number of comparisons 38 repeat if more data pairs 0021 cb44 39 bit flag h determine if exchange occurred 0023 20de 40 jr nz loop continue if data unsorted 0025 c9 41 ret otherwise exit 42 s UMO08001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual Table 1 Bubble Listing Continued Loc Obj Code Stmt Source Statement 0026 43 flag equ 0 designation of flag
36. Manual 2ILOU 87 LD IX d r Operation IX d lt r Op Code LD Operands IX d r 1 1 0 1 1 1 0 1 DD 0 1 1 1 0 r gt a d p Description The contents of register r are loaded to the memory address specified by the contents of Index Register IX summed with d a two s complement displacement integer The symbol r identifies register A B C D E H or L assembled as follows in the object code Register r 111 B 000 C 001 D 010 E H L gt 011 100 101 M Cycles T States 4 MHz E T 5 19 4 4 3 5 3 4 75 Condition Bits Affected None Example If the C register contains byte 1CH and the Index Register IX contains 3100H then the instruction LID IX 6H C performs the sum 3100H 6H and loads 1CH to memory location 3106H UMO08001 1000 Z80 Instruction Set 88 Z80 CPU User s Manual RitLou Operation Op Code Operands Description Condition Bits Affected None Example LD IY d r IY d lt r LD IY d r 1 1 1 1 0 1 0 1 1 r gt m gt FD The contents of resister r are loaded to the memory address specified by the sum of the contents of the Index Register IY and d a two s complement displacement integer The symbol r is specified according to the following table Register A B C D E H L M Cycles 5 r 111 000 001 010 011 100 101 T
37. None Example The Carry Flag is reset and it is required to repeat the jump instruction The assembly language statement is JR NC The resulting object code and PC after the jump are UMO08001 1000 Z80 Instruction Set UMO08001 1000 Location 480 481 Z80 CPU User s Manual 2iLOU 245 Instruction 30 lt PC after jump 00 Z80 Instruction Set 246 Z80 CPU User s Manual RitLou Operation Op Code Operands Description JRZ e If Z 0 continue IfZ 1 PC lt PC e JR Z e 0 0 1 0 1 0 0 04 2 at e 2 gt This instruction provides for conditional branching to other segments of a program depending on the results of a test on the Zero Flag If the flag is equal to a 1 the value of the displacement e is added to the Program Counter PC and the next instruction is fetched from the location designated by the new contents of the PC The jump is measured from the address of the instruction Op Code and has a range of 126 to 129 bytes The assembler automatically adjusts for the twice incremented PC If the Zero Flag is equal to a 0 the next instruction executed is taken from the location following this instruction If the condition is met M Cycles T States 4 MHz E T 3 12 4 3 5 3 00 If the condition is not met M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected None Example The Zero Flag is set and it is require
38. RD and WR have entered their high impedance states The external circuitry can now control these lines BUSREQ Bus Request input active Low Bus Request has a higher priority than NMI and is always recognized at the end of the current machine cycle BUSREQ forces the CPU address bus data bus and control signals MREQ IORQ RD and WR to go to a high impedance state so that other devices can control these lines BUSREQ is normally wired OR and requires an external pull up for these applications Extended BUSREQ periods due to extensive DMA operations can prevent the CPU from properly refreshing dynamic RAMS D7 DO Data Bus input output active High tristate D7 DO constitute an 8 bit bidirectional data bus used for data exchanges with memory and I O HALT HALT State output active Low HALT indicates that the CPU has executed a HALT instruction and is waiting for either a non maskable or a maskable interrupt with the mask enabled before operation can resume During HALT the CPU executes NOPs to maintain memory refresh INT Interrupt Request input active Low Interrupt Request is generated by I O devices The CPU honors a request at the end of the current instruction if the internal software controlled interrupt enable flip flop IFF is enabled INT is normally wired OR and requires an external pull up for these applications UMO08001 1000 Overview Z80 CPU User s Manual ILOG IORQ Input Output
39. STRING D DE BUFFER START ADDRESS OF TARGET BUFFER LD BC 737 LENGTH OF DATA STRING LDIR MOVE STRING TRANSFER MEMORY POINTED TO BY HL INTO MEMORY LOCATION POINTED TO BY DE INCREMENT HL AND DE DECREMENT BC PROCESS UNTIL BC 0 Eleven bytes are required for this operation and each byte of data is moved in 21 clock cycles UM008001 1000 Hardware and Software Implementation Examples Example Two Z80 CPU User s Manual 35 ILOG A string in memory limited to a maximum length of 132 characters starting at location DATA is to be moved to another memory location starting at location BUFFER until an ASCII used as a string delimitor is found This operation is performed as follows D HL D DE LD BC LD A LOOP CP HL JR Z E LDI JP PE END END DATA BUFF 132 S 91 pod TARTING ADD ER STARTI MAXI TRING PARE RES S OF DATA ST RING NG ADDR STRING DELIMIT U F ESS OE NGT CO L R Lu TARGET H E D EMORY F R END IF E c HARACTI ER CONT HARACTI HL EM AN IF ENT HL LOOP D D L P ENTS WIT ERS EQUAL BUFE H E to DE DECREM ENT BC MO T RW
40. States 19 4 4 3 5 3 4 75 4 MHz E T If the C register contains byte 48H and the Index Register IY contains 2A11H then the instruction LD IY 4H C performs the sum 2A11H 4H and loads 48H to memory location 2A15 UMO08001 1000 Z80 Instruction Set Operation HL n Op Code LD Operands HD n LD HL n 0 1 1 0 a Z80 CPU User s Manual ZiLOo 89 36 Description Integer n is loaded to the memory address specified by the contents of the HL register pair M Cycles T States 4 MHz E T 3 10 4 3 3 2 50 Condition Bits Affected None Example Ifthe HL register pair contains 4444H the instruction LD HL 28H results in the memory location 4444H containing byte 28H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 90 RitLou LD IX d n Operation IX d n Op Code LD Operands IX d n 1 1 0 1 1 1 0 1 DD 0 0 1 1 0 11 0 36 ig d e n Description The n operand is loaded to the memory address specified by the sum of the Index Register IX and the two s complement displacement operand d M Cycles T States 4 MHz E T 5 19 4 4 3 5 3 4 75 Condition Bits Affected None Example If the Index Register IX contains the number 21 9AH the instruction LD IX 5H 5AH results in byte 5AH in the memory address 21 9FH UMO08001 1000 Z80 Instruction Set Op
41. States 4 MHz E T 4 14 4 4 3 3 3 50 Condition Bits Affected None Example If the contents of the Stack Pointer are 1000H and the contents of the Program Counter are 1445H when a non maskable interrupt NMJ signal is received the CPU ignores the next instruction and instead restarts to memory address 0066H The current Program Counter contents of 1A45H is pushed onto the external stack address of OFFFH and OFFER high order byte first and 0066H is loaded onto the Program Counter That address begins an interrupt service routine that ends with a RETN instruction Upon the execution of RETN the former Program Counter contents are popped off the external memory stack low order first resulting in a Stack Pointer contents again of 1000H The program flow continues where it left off with an Op Code fetch to address 1A45H order byte first and 0066H is loaded onto the Program Counter That address begins an interrupt service routine that ends with a RETN instruction At execution of RETN the former Program Counter contents are popped off the external memory stack low order first resulting in a Stack Pointer contents again of UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 266 zILOSG 1000H The program flow continues where it left off with an Op Code fetch to address 1A45H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 267 RST p Operation SP 1 lt PCH SP 2 PCL PCH lt
42. a block of memory of any size can be moved to any other location in memory This set of block moves is extremely valuable when processing large strings of data With a single instruction a block of external memory of any desired length can be searched for any 8 bit character When the character is found or the end of the block is reached the instruction automatically terminates Both the block transfer and the block search instructions can be interrupted during their execution so they do not occupy the CPU for long periods of time The arithmetic and logical instructions operate on data stored in the accumulator and other general purpose CPU registers or external memory locations The results of the operations are placed in the accumulator and the appropriate flags are set according to the result of the operation An example of an arithmetic operation is adding the accumulator to the contents of an external memory location The results of the addition are placed in the accumulator This group also includes 16 bit addition and subtraction between 16 bit CPU registers The rotate and shift group allows any register or any memory location to be rotated right or left with or without carry either arithmetic or logical Also a digit in the accumulator can be rotated right or left with two digits in any memory location The bit manipulation instructions allow any bit in the accumulator any general purpose register or any external memory location
43. can be moved directly from register to register from memory to memory from memory to registers or from registers to memory In addi tion register contents and register memory contents can be exchanged without using temporary storage In particular the contents of main and alternate registers can be completely exchanged by executing only two instructions EX and EXX This register exchange procedure can be used to separate the set of working registers from different logical procedures or to expand the set of available registers in a single procedure Storage and retrieval of data between pairs of registers and memory can be controlled on a last in first out basis through PUSH and POP instructions that utilize a special STACK POINTER register SP This stack register is available both to manipulate data and to automatically store and retrieve addresses for subroutine linkage When a subroutine is called for example the address following the CALL instruction is placed on the top of the push down stack pointed to by sP When a subroutine returns to the calling routine the address on the top of the stack is used to set the program counter for the address of the next instruction The stack pointer is adjusted automatically to reflect the current top stack position during PUSH POP CALL and RET instructions This stack mechanism allows pushdown data stacks and subroutine calls to be nested to any practical depth because the stack area
44. d 46 46 UM008001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual RILO G Table 11 Bit Manipulation Group Continued Register Addressing Reg Indir Indexed Rest DD FD RES 0 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 87 80 81 82 83 84 85 86 d d 86 86 DD FD 1 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 8F 88 89 8A 88 8C 8D 8E d d 8E 8E DD FD 2 C8 C8 CS C8 C8 C8 C8 C8 C8 C8 97 90 91 92 93 94 95 96 d d 96 96 DD FD 3 C8 C8 C8 C8 CS C8 C8 C8 C8 C8 9F 98 99 9A 98 90 90 9E d d 9E 9E DD FD 4 C8 C8 C8 C8 C6 C8 C8 C8 C8 C8 A7 AO JAI a2 A3 Jas Jas A6 d d A6 A6 DD FD 5 C8 C8 C8 C8 08 C8 C8 C8 C8 C8 AF A8 A9 AA AB AC AD AE d d AE AE DD FD 6 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 B7 BO Bl 82 B3 B4 B5 B6 d d B6 B6 DD DD 7 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 BF B8 89 8A B8 8C BD 9E d d BE BE UM008001 1000 Z80 CPU Instruction Description 67 Z80 CPU User s Manual 68 RiLou Table 11 Bit Manipulation Group Continued Register Addressing Reg Indir Indexed Set DD FD un 0 C8 C8 C8 C8 cs C8 C8 C8 C8 C8 C7 co cl c2 C3 c4 C5 C6 d d C6 C6 DD FD 1 C8 C8 C8 C8 cs C8 C8 C8 C8 C8 CF C8 Co CA cs CC fcD CcE d d CE CE DD FD 2 C8 C8 C8 C8 cs C8 C8 C8 C8 C8 D7 DO DI D2 D3 D4 DS D6 d d D6 D6 DD FD 3 C8 C8 C8 C8 cs C8 C8 C8 C8 C8 DF D8
45. data from bit 7 of source register If the contents of the Index Register IY are 1000H and the contents of memory location 1002H are UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 201 7 6 5 4 8 2 1 0 1 0 00 1 0 0 0 at execution of RLC IY 2H the contents of memory location 1002H and the Carry flag are C 7 6 5 4 3 2 1 0 1 0 0 0 4 0 0 0 1 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual RL m Operation CY 4 7 4 0 Op Code PL Operands m The m operand is any of r HL 1X d or 1Y d as defined for the analogous PLC instructions These possible Op Code operand combinations are specified as follows in the assembled object code RL r 1 1 0 0 1 011 1 CB 0 00 1 0 a r gt RL HL 1 110 0 1 0 1 1 CB RL IX d 1 110 1 1 1 0 1 DD RL IY d MAA AAA UMO08001 1000 Z80 Instruction Set Description Z80 CPU User s Manual 203 ILOG r identifies registers B C D E H L or A assembled as follows in the object code field above Register r B 000 C 001 D 010 E 011 H 100 L 101 A 111 The contents of the m operand are rotated left 1 bit position The content
46. data from the memory location addressed by the contents of the HL register pair to the memory location addressed by the contents of the DE register pair Then both of these register pairs including the BC Byte Counter register pair are decremented M Cycles 4 Condition Bits Affected S is not affected Z is not affected H is reset T States 4 MHz E T 16 4 4 3 5 4 00 P V is set if BC 1 0 reset otherwise N is reset C is not affected Example If the HL register pair contains 1111H memory location 1111H contains byte 88H the DE register pair contains 2222H memory location 2222H contains byte 66H and the BC register pair contains 7H then instruction LDD results in the following contents in register pairs and memory addresses HL 1111H DE 2222H BC UM008001 1000 contains 1110H contains 88H contains 2221H contains 88H contains 6H Z80 Instruction Set 132 Z80 CPU User s Manual RitLou Operation Op Code Operands Description LDDR DE HL DE D lt 1 HL HL 1 BC lt BC 1 LDDR 1 1 1 0 1 1 0 1 ED 1 0 1 1 1 0 0 04 B8 This 2 byte instruction transfers a byte of data from the memory location addressed by the contents ofthe HL register pair to the memory location addressed by the contents of the DE register pair Then both of these registers as well as the BC Byte Counter are decremented If decrementing causes
47. ease of programming Every instruction is self documenting and programs written in Z80 language are easy to maintain In Table 2 some Op Codes that are available in the Z80 use two bytes This feature is an efficient method of memory utilization because 8 18 24 or 32 bit instructions are implemented in the Z80 Often utilized instructions such as arithmetic or logical operations are only eight bits which results in better memory utilization than is achieved with fixed instruction sizes such as 16 bits UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual ziLOGU Table 2 8 Bit Load Group LD Source Implied Register Reg Indirect 11indexed Ext Addr Imme Destination I JR DE IX d 1 d Inn Register A ED ED 1A FD DD 57 SF TE 7E d d B DD FD 46 46 d d C DD FD 4E 4E d d D DD FD 56 56 d d E DD FD 5E 5E d d H DD FD 66 66 d d L DD FD 6E 6E d d Reg HL Indirect BC DE INDEXED 1X d DD 36 d n IY d FD TI 70 71 72 73 74 75 36 d d d d jd jd jd d n EXT nn ADDR IMPLIED I ED 47 R ED 4F UMO08001 1000 Z80 CPU Instruction Description 51 52 Z80 CPU User s Manual RitLou All load instructions using indexed addressing for either the source or destination location actually use three bytes of memory
48. for each The flags are affected checking the input data Register r Flag 110 Undefined Op Code set the flag B 000 C 001 D 010 E 011 H 100 101 A 121 M Cycles T States 4 MHz E T 3 12 4 4 4 3 00 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 271 Condition Bits Affected S is set if input data is negative reset otherwise Z is set if input data is zero reset otherwise H is reset P V is set if parity is even reset otherwise N is reset C is not affected Example If the contents of register C are 07H the contents of register B are 10H and byte 7BH is available at the peripheral device mapped to I O port address 07H After execution of IN D C register D contains 7BH UMO08001 1000 Z80 Instruction Set 272 Z80 CPU User s Manual RitLou Operation Op Code Description INI HL C B B 1 HL HL 1 INI 1 1 1 0 1 1 0 1 ED 1 0 1 0 0 0 1 o A2 The contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports Register B may be used as a byte counter and its contents are placed on the top half A8 through A15 of the address bus at this time Then one byte from the selected port is placed on the data bus and written to the CPU The contents of the HL register pair are then placed on the address bus and the input byte is written t
49. if carry out of bit 11 reset otherwise P V is set if overflow reset otherwise N is reset C is set if carry from bit 15 reset otherwise If the register pair BC contains 2222H register pair HL contains 5437H and the Carry Flag is set at execution of ADC HL BC the contents of HL are 765AH UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual 2iLOU 181 SBC HL ss HL lt HI ss CY SBC HL ss 11 1 0 1 1 0 1 ED 0 1 ls s 0 0 1 0 The contents of the register pair ss any of register pairs BC DE HL or SP and the Carry Flag C flag in the F register are subtracted from the contents of register pair HL and the result is stored in HL Operand ss is specified as follows in the assembled object code Register Pair ss BC 00 DE 01 HL 10 SP 11 M Cycles T States 4 MHz E T 4 15 4 4 4 3 3 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if a borrow from bit 12 reset otherwise P V is set if overflow reset otherwise N is set C is set if borrow reset otherwise If the contents of the HL register pair are 9999H the contents of register pair DE are 1111H and the Carry flag is set At execution of SBC HL DE the contents of HL are 8887H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 182 C
50. in the CPU Then after the byte counter B is decremented the contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports Regis ter B may be used as a byte counter and its decremented value is placed on the top half A8 through A15 of the address bus at this time Next the byte to be output is placed on the data bus and written to the selected peripheral device Then register pair HL is decremented and if the decremented B register is not zero the Program Counter PC is decremented by two and the instruction is repeated If B has gone to zero the instruction is termi nated Interrupts are recognized and two refresh cycles are executed after each data transfer Note When B is set to zero prior to instruction execution the instruc tion outputs 256 bytes of data If B z 0 M Cycles T States 4 MHz E T 5 21 4 5 3 4 5 5 25 If B 0 M Cycles T States 4 MHz E T 4 16 4 5 3 4 4 00 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 287 Condition Bits Affected Example S is unknown Z is set H is unknown P V is unknown N is set C is not affected If the contents of register C are 07H the contents of register B are 03H the contents of the HL register pair are 1000H and memory locations have the following contents OFFEH contains 51H OFFFH contains A9H 1000H contains 03H then at execution of OTDR the HL reg
51. items are distinguished from general text by the use of the Courier font This convention is not used within tables For example The STP bit in the CNTR register must be 1 Where the use of the font is not possible as in the Index the name of the entity is presented in upper case Hexadecimal Values Designated by H Hexadecimal values are designated by a uppercase H and appear in the Courier typeface For example STAT is set to F8H Use of All Uppercase Letters The use of all uppercase letters designates the names of states and commands For example The receiver can force the SCL line to Low to force the transmitter into a WAIT state The bus is considered BUSY after the Start condition A START command triggers the processing of the initialization sequence Use of Initial Uppercase Letters Initial uppercase letters designate settings modes and conditions in general text For example The Slave receiver leaves the data line High In Transmit mode the byte is sent most significant bit first The Master can generate a Stop condition to abort the transfer Manual Objectives UM008001 1000 User s Manual Z80 CPU xviii LILLO Register Access Abbreviations Register access is designated by the following abbreviations Designation Description R Read Only R W Read Write W Write Only Unspecified or indeterminate Trademarks Z80 Z180 Z380 and Z80382 are trademarks of ZiLOG Inc UMO08001 1000 Manual Objectives Z80 CPU Us
52. long DMA cycles are used and dynamic memories are used the external controller also performs the refresh function This situation only occurs if very large blocks of data are transferred under DMA control During a bus request cycle the CPU cannot be interrupted by either an NMI or an INT signal Any M Cycle Bus Available Status SS e CLK BUSREQ BUSACK A15 Ao D Do MREQ RD WR IORQ RFSH Figure 8 Bus Request Acknowledge Cycle Interrupt Request Acknowledge Cycle Figure 9 illustrates the timing associated with an interrupt cycle The CPU samples the interrupt signal INT with the rising edge of the last clock at the end of any instruction The signal is not accepted if the internal CPU software controlled interrupt enable flip flop is not set or if the BUSREQ signal is active When the signal is accepted a special M1 cycle is generated During this special M1 cycle the IORQ signal becomes active instead of the normal MREQ to indicate that the interrupting device can place an 8 bit vector on the data bus Two wait states are automatically added to this cycle These states are added so that a ripple priority interrupt scheme can be easily implemented The two wait states allow sufficient UMO08001 1000 Overview Z80 CPU User s Manual time for the ripple signals to stabilize and identify which I O device must insert the response vector Refer to Chapter 6 for details on how the interrupt response vector is
53. of bit 7 is copied to the Carry flag and the previous content of the Carry flag is copied to bit 0 Instruction M Cycles T States RLr 2 8 4 4 RL HL 4 15 4 4 4 3 RL 1X d 6 23 4 4 3 5 4 3 RL Y d 6 23 4 4 3 5 4 3 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity even reset otherwise N is reset C is data from bit 7 of source register If the contents of register D and the Carry flag are C 7 6 5 4 3 2 1 0 ol fojojoj f f UMO08001 1000 4 MHz E T 2 00 3 75 5 75 5 75 Z80 Instruction Set Z80 CPU User s Manual 204 RitLou atexecution of RLD the contents of register D and the Carry flag are C 7 6 5 4 3 2 1 0 110 0 0 1 1 1 110 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual RRC m Operation Op Code RRC Operands m The m operand is any of r HL IX d or IY d as defined for the analogous RLC instructions These possible Op Code operand combinations are specified as follows in the assembled object code RRC r 1 1 00 1 0 1 1 CB RRC HL 1 1 0 O_ 110 1 1 CB RRC IX d 1 110 1 1 1 0 1 DD RRC IY d 11011 11 440 1 FB UMO08
54. operand is decremented Instruction M Cycles T States 4 MHz E T DECr 1 4 1 00 DEC HL 3 11 4 4 3 2 75 DEC 1X d 6 23 4 4 3 5 4 3 5 75 DEC 1Y d 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if borrow from bit 4 reset otherwise P V is set if m was 80H before operation reset otherwise N is set C is not affected Example If the D register contains byte 2AH at execution of DEC D register D contains 29H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 166 ILOG General Purpose Arithmetic and CPU Control Groups DAA Operation Op Code DAA 0 0 1 0 0 1 1 1 27 Description This instruction conditionally adjusts the Accumulator for BCD addition and subtraction operations For addition ADD ADC INC or subtraction SUB SBC DEC NEG the following table indicates the operation performed Hex Value Hex Value In In Lower Number C Before Upper Digit H Before Digit Added To C After Operation DAA bit 7 4 DAA bit 3 0 Byte DAA 0 9 0 0 0 9 00 0 0 0 8 0 A F 06 0 0 0 9 1 0 3 06 0 ADD 0 A F 0 0 9 60 1 ADC 0 9 F 0 A F 66 1 INC 0 A F 1 0 3 66 1 1 0 2 0 0 9 60 1 1 0 2 0 A F 66 1 1 0 3 1 0 3 66 1 SUB 0 0 9 0 0 9 00 0 SBC 0 0 8 1 6 F FA 0 DEC 1 7 F 0 0 9 AO 1 NEG 1 6 7 1 6 F 9A 1 UMO08001 1000 Z80 Instruct
55. r field for each that appears in the assembled object code Register r B 000 C 001 D 010 E 011 H 100 E 101 A 111 M Cycles T States 4 MHz E T 3 12 4 4 4 3 00 Condition Bits Affected None UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 281 Example If the contents of register C are 01H and the contents of register D are 5AH at execution of OUT C D byte 5AH is written to the peripheral device mapped to I O port address 01H UMO08001 1000 Z80 Instruction Set 282 Z80 CPU User s Manual RitLou Operation Op Code Description OUTI C HL B B 1 HL lt HL 1 OUTI tilo 3 10 1 ED 1 011 0 0 0 1 1 A3 The contents ofthe HL register pair are placed on the address bus to select a location in memory The byte contained in this memory location is temporarily stored in the CPU Then after the byte counter B is decremented the contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports Register B may be used as a byte counter and its decremented value is placed on the top half A8 through A15 of the address bus The byte to be output is placed on the data bus and written to a selected peripheral device Finally the register pair HL is incremented M Cycles T States 4 MHz E T 4 16 4 5 3 4 4 00 Condition Bits Affected Example S is unk
56. represent and process numeric information A positive number is identified by a 0 in Bit 7 A negative number is identified by a 1 The binary equivalent of the magnitude of a positive number is stored in bits 0 to 6 for a total range of from 0 to 127 A negative number is represented by the twos complement ofthe equivalent positive number The total range for negative numbers is from 1 to 1 28 When inputting a byte from an I O device to a register using an IN r C instruction the S Flag indicates either positive S 0 or negative S 1 data Z80 Instruction Description Execution time E T for each instruction is given in microseconds for an assumed 4 MHz clock Total machine cycles M are indicated with total clock periods T States Also indicated are the number of T States for each M cycle For example M Cycles 2T States 7 4 3 4 MHzE T 1 75 indicates that the instruction consists of 2 machine cycles The first cycle contains 4 clock periods T States The second cycle contains 3 clock periods for a total of 7 clock periods or T States The instruction executes in 1 75 microseconds Register format is indicated for each instruction with the most significant bit to the left and the least significant bit to the right UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual ZiLOo 81 8 Bit Load Group LDr r Operation r r Op Code LD Operands r r 0 1 r q r
57. reset otherwise N is reset C is set if carry from bit 7 reset otherwise Example If the contents ofthe Accumulator are 23H at execution of ADD A 33H the contents of the Accumulator are 56H UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual ADD A HL A amp A HL ADD A HL 1 00 0 0 1 1 0 86 The byte at the memory address specified by the contents ofthe HL register pair is added to the contents of the Accumulator and the result is stored in the Accumulator M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if overflow reset otherwise N is reset C is set if carry from bit 7 reset otherwise If the contents of the Accumulator are AOH and the content of the register pair HL is 2323H and memory location 2323H contains byte 08H at execution of ADD A HL the Accumulator contains A8H UMO08001 1000 Z80 Instruction Set 144 Z80 CPU User s Manual RitLou Operation Op Code Operands Description ADD A IX d A A IX4d ADD A IX d 1 1 0 1 1 1 0 1 DD 1 0 0 01 0 1 1 0 86 a d The contents of the Index Register register pair IX
58. s Manual 2iLOU 261 RET cc If cc true PCL lt sp pCH lt sp 1 RET cc 1 1 cc 0 0 0 If condition cc is true the byte at the memory location specified by the contents of the Stack Pointer SP register pair is moved to the low order eight bits ofthe Program Counter PC The SP is incremented and the byte at the memory location specified by the new contents of the SP are moved to the high order eight bits of the PC The SP is incremented again The next Op Code following this instruction is fetched from the memory location specified by the PC This instruction is normally used to return to the main line program at the completion of a routine entered by a CALL instruction If condition cc is false the PC is simply incremented as usual and the program continues with the next sequential instruction Condition cc is programmed as one of eight status that correspond to condition bits in the Flag Register register F These eight status are defined in the table below which also specifies the corresponding cc bit fields in the assembled object code UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 262 ftu Relevant cc Condition Flag 000 NZ non zero Z 001 Z zero Z 010 NC non carry C 011 C carry C 100 PO parity odd P V 101 PE parity even P V 110 P sign positive S 111 M sign negative S If cc is true M Cycles T States 4 MHz E T 3 11 5 3 3 2 75 If cc is false M Cycl
59. to count of 7 Perform a sequence of instructions loop to be performed 7 times DJNZ 8 Next Instruction to jump from N 12 to N 2 Z80 CPU Instruction Description 69 70 Z80 CPU User s Manual RitLou Table 13 lists the eight Op Codes for the restart instruction This instruction is a single byte call to any of the eight addresses listed The simple mnemonic for these eight calls is also listed This instruction is useful for frequently used routines because memory consumption is minimized Table 13 Restart Group CALL 0000H Address 0008H 0010H 0018H 0020H 0028H 0030H 0038H Input Output The Z80 has an extensive set of input and output instructions as shown in Table 14 and Table 15 The addressing of the input or output device can be either absolute or register indirect using the C register In the register indirect addressing mode data can be transferred between the I O devices and any of the internal registers In addition eight block transfer instructions have been implemented These instructions are similar to the memory block transfers except that they use register pair HL for a pointer to the memory source output commands or destination input commands while register B is used as a byte counter Register C holds the address of the port for which the input or output command is required Because register B is eight bits in length the I O block transfer command handles up to 256 byte
60. types addressing modes and instruction Op Codes Z80 Instruction Set Presents an overview of the User s Manual assenbly language status indicator flags and the Z80 instructions Related Documents Part Number Title DC number Part Number Title DC number Part Number Title DC number Manual Conventions The following assumptions and conventions are adopted to provide clarity and ease of use Use of the Words Set and Clear The words set and clear imply that a register bit or a condition contains the values logical 1 and logical 0 respectively When either of these terms is followed by a number the word logical may not be included but it is implied Notation for Bits and Similar Registers A field of bits within a register is designated as Register n n For example PWM CR 31 20 A field of bits within a bus is designated as Bus 4 For example PCntlz 4 A range of similar whole registers is designated as Registern Registern For example OPBCS5 OPBCSO UMO08001 1000 Manual Objectives Z80 CPU User s Manual LLO xvii Use of the Terms LSB and MSB In this document the terms LSB and MSB when appearing in upper case mean least significant byte and most significant byte respectively The lowercase forms msb and Isb mean least significant bit and most significant bit respectively Courier Font Commands code lines and fragments register and other mnemonics values equations and various executable
61. utilized by the CPU Last M Cycle of Instruction M1 CLK i 7 A15 Ao Mi MREQ TORQ D Do WAIT _ Figure 9 Interrupt Request Acknowledge Cycle Non Maskable Interrupt Response Figure 10 illustrates the request acknowledge cycle for the non maskable interrupt This signal is sampled at the same time as the interrupt line but this line takes priority over the normal interrupt and it can not be disabled under software control Its usual function is to provide immediate response to important signals such as an impending power failure The CPU response to a non maskable interrupt is similar to a normal memory read operation The only difference is that the content of the data bus is ignored while the processor automatically stores the PC in the external stack and jumps to location 0066H The service routine for the non maskable interrupt must begin at this location if this interrupt is used UMO08001 1000 Overview Z80 CPU User s Manual 7 18 ILOG Last M Cycle Figure 10 Non Maskable Interrupt Request Operation HALT Exit Whenever a software HALT instruction is executed the CPU executes NOPs until an interrupt is received either a non maskable or a maskable interrupt while the interrupt flip flop is enabled The two interrupt lines are sampled with the rising clock edge during each T4 state as depicted in Figure 11 If a non maskable interrupt has been received or a maskable interrupt has been received
62. 0 L 101 M Cycles T States 4 MHz E T 2 7 4 6 1 75 Condition Bits Affected None Example If register pair HL contains the number 75A1H and memory address 75A1H contains byte 58H the execution of LD C HL results in 58H in register C UMO08001 1000 Z80 Instruction Set 84 Z80 CPU User s Manual ILOG Operation Op Code Operands Description LD r IX d r lt IX d LD r 1X d 1 1 0 1 1 1 0 1 DD 0 1 r 1 1 0 a d The operand 1X d the contents of the Index Register IX summed with a two s complement displacement integer d is loaded to register r where r identifies register A B C D E H or L assembled as follows in the object code Register r A 111 B 000 C 001 D 010 E 011 H 100 L 101 M Cycles T States 4 MHz E T 5 19 4 4 3 5 3 2 50 Condition Bits Affected None Example If the Index Register IX contains the number 25AFH the instruction LD B IX 19H causes the calculation of the sum 25AFH 19H which points to memory location 25C8H If this address contains byte 39H the instruction results in register B also containing 39H UMO08001 1000 Z80 Instruction Set LD r IY d Operation r lt IY D Op Code LD Operands r IY d 1 1 1 1 1 1 1 1 0 1 lt r 1 0 m d z Z80 CPU User s Manual 2iLOU 85 FD Description The operand IY
63. 000 2 Relative Addressing Relative addressing uses one byte of data following the Op Code to specify a displacement from the existing program to which a program jump can occur This displacement is a signed two s complement number that is added to the address of the Op Code of the following instruction Op Code Jump Relative One Byte Op Code 8 Bit Two s Complement Op Code Displacement Added to Address A 2 The value of relative addressing is that it allows jumps to nearby locations while only requiring two bytes of memory space For most programs relative jumps are by far the most prevalent type of jump due to the proximity of related program segments Thus these instructions can Significantly reduce memory space requirements The signed displacement can range between 127 and 128 from A42 This allows for a total displacement of 129 to 126 from the jump relative Op Code address Another major advantage is that it allows for relocatable code UMO08001 1000 Z80 CPU Instruction Description 46 Z80 CPU User s Manual RitLou Extended Addressing Extended Addressing provides for two bytes 16 bits of address to be included in the instruction This data can be an address to which a program can jump or it can be an address where an operand is located One or Op Code Two Bytes Low Order Address to Low Order Operand High Order Address to Low Order Operand Extended addres
64. 001 1000 Z80 Instruction Set 206 Z80 CPU User s Manual RitLou r identifies registers B C D E H L or A assembled as follows in the object code field above Register r B 000 C 001 D 010 E 011 H 100 L 101 A 111 Description The contents of the m operand are rotated right 1 bit position The content of bit 0 is copied to the Carry flag and also to bit 7 Bit 0 is the least significant bit Instruction M cycles T States 4 MHz E T RRCr 2 8 4 4 2 00 RRC HL 4 15 4 4 4 3 3 75 RRC IX d 6 23 4 4 3 5 4 3 5 75 RRC 1Y d 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity even reset otherwise N is reset C is data from bit 0 of source register Example If the contents of register A are 7 6 5 4 3 2 1 0 0 0 1 1 0 0 0 1 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 207 at execution of RRC A the contents of register A and the Carry flag are 7 6 5 4 3 2 1 0 C 1 010 1 1 0 0 0 1 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 208 ILOG RR m Operation gt 7 0 5s m Op Code RR Operands m The m operand is any of r HL 1X d or 1Y d as defined for the analogous RLC instructions These possible Op Code operand combinat
65. 01 1000 D HL ARG1 ADDRESS OF MINUEND D DE ARG2 ADDRESS OF SUBTRAHE D B LENGTH LENGTH OF TWO ARGU AND A CLEAR CARRY FLAG D A DE SUBTRAHEND TO ACC SBC A HL SUBTRACT HL FROM ND ENTS ACC Hardware and Software Implementation Examples Z80 CPU User s Manual DAA ADJUST RESULT TO DECIMAL CODED VALUE LD HL A STORE RESULT INC HL ADVANCE MEMORY POINTERS INC DE DJNZ SUBDEC DECREMENT B AND GO TO SUBDEC IF B NOT ZERO OTHERWISE FALL IHROUGH Seventeen bytes are required for this operation Examples of Programming Tasks As depicted in Table 1 this example program sorts an array of numbers to ascending order using a standard exchange sorting algorithm These numbers range from 0 to 255 Table 1 Bubble Listing Loc Obj Code Stmt Source Statement 1 standard exchange bubble sort routine 2 i 3 at entry hl contains address of data 4 c contains number of elements to be sorted 5 1 c 256 6 7 at exit data sorted in ascending order 8 9 a use of registers 10 i 11 register contents 12 13 a temporary storage for calculations 14 A b counter for data array UMO08001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual Table 1 Bubble Listing Continued
66. 08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 279 OUT n A Operation n A Op Code OUT Operands n A Description The operand n is placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports The contents of the Accumulator register A also appear on the top half A8 through A15 of the address bus at this time Then the byte contained in the Accumulator is placed on the data bus and written to the selected peripheral device M Cycles T States 4 MHz E T 3 11 4 3 4 2 75 Condition Bits Affected None Example If the contents of the Accumulator are 23H at execution of OUT 01H byte 23H is written to the peripheral device mapped to I O port address 01H UMO08001 1000 Z80 Instruction Set 280 Z80 CPU User s Manual RitLou Operation Op Code Operands Description OUT C r The contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports The contents of Register B are placed on the top half A8 through A15 of the address bus at this time Then the byte contained in register r is placed on the data bus and written to the selected peripheral device Register r identifies any of the CPU registers shown in the following table which also shows the corresponding three bit
67. 09 DA DS DC DD DE d d DE DE DD FD 4 C8 C8 C8 C8 cs C8 C8 C8 C8 C8 E7 EO El E2 E3 E4 ES E6 d d E6 E6 DD FD 5 C8 C8 C8 C8 cs C8 C8 C8 C8 C8 EF E8 E9 EA EB EC ED EE d d EE EE DD FD 6 C8 C8 C8 C8 cs C8 C8 C8 C8 C8 F7 FO Fl F2 F3 F4 FS F6 d d F6 F6 DD FD 7 C8 cs C8 C8 cs C8 C8 C8 C8 C8 FF F8 F9 FA FB FC FD FE d d FE FE UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual ILOG Table 12 Jump Call and Return Group Condition Un Carry Non Zero Non Parity Parity Sign Sign Reg Cond Carry Zero Even Neg Pos Bx0 JUMP JP IMMED nn EXT JUMP JR RELATIVE PC e 18 38 30 28 20 JUMP JP Register HL INDIR IX Y CALL IMMED nn EXT Non Maskable INT RETN Decrement B Jump RELATIVE PC e 10 If Non Zero DINZ e 2 Return RE REGISTER SP Return From INDIR SP 1 ED INT RETI 4D Return From ED The instruction DJNZ is used to facilitate program loop control This two byte relative jump instruction decrements the B register and the jump occurs if the B register has not been decremented to zero The relative displacement is expressed as a signed two s complement number A simple example of its use is Address N N 1 N 2 to N 9 N 10 N 11 N 12 UMO08001 1000 Instruction LD B 7 Comments set B register
68. 1 0 1 O0 5000H UMO08001 1000 Z80 Instruction Set 222 Z80 CPU User s Manual RitLou Operation Op Code Operands Description RRD A Co 0 HL 1 1 1 0 1 1 0 1 ED amp 0 ge ape o3 67 The contents of the low order four bits bits 3 2 1 and 0 of memory location HL are copied to the low order four bits of the Accumulator register A The previous contents of the low order four bits of the Accumulator are copied to the high order four bits 7 6 5 and 4 of location HL and the previous contents of the high order four bits of HL are copied to the low order four bits of HL The contents of the high order bits of the Accumulator are unaffected HL means the memory location specified by the contents of the HL register pair M Cycles T States 4 MHz E T 5 18 4 4 3 4 3 4 50 Condition Bits Affected S is set if Accumulator is negative after operation reset otherwise Z is set if Accumulator is zero after operation reset otherwise H is reset P V is set if parity of Accumulator is even after operation reset otherwise N is reset C is not affected UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual Example If the contents of the HL register pair are 5000H and the contents of the Accumulator and memory location 5000H are 7 6 5 4 3 2 1 0 1 0 0 0 0 1 0 O Accumulator
69. 12H the instruction LD BC A results in 7AH in memory location 1212H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 96 RitLou LD DE A Operation DE A Op Code LD Operands DE A 0 0 0 1 0 0 1 o 12 Description The contents of the Accumulator are loaded to the memory location specified by the contents of the DE register pair M cycles T States 4 MHz E T 2 71 4 3 1 75 Condition Bits Affected None Example Ifthe contents of register pair DE are 1128H and the Accumulator contains byte AOH the instruction LD DE A results in AOH in memory location 1128H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 97 LD nn A Operation nn A Op Code LD Operands nn A ra n red n Description The contents of the Accumulator are loaded to the memory address specified by the operand nn The first n operand after the Op Code is the low order byte of nn M Cycles T States 4 MHz E T 4 13 4 3 3 3 3 25 Condition Bits Affected None Example If the contents of the Accumulator are byte D7H at execution of LD 3141 H AD7H results in memory location 3141H UM008001 1000 Z80 Instruction Set 98 Z80 CPU User s Manual ILOG LD A Operation A c 1 Op Code LD Operands A I 1 1 1 0 1 1 0 1 ED 0 110 1 0 1 1 1 57 Desc
70. 256 possible ports Register B may be used as a byte counter and its contents are placed on the top half A8 through A15 ofthe address bus at this time Then one byte from the selected port is placed on the data bus and written to the CPU The contents of the HL register pair are placed on the address bus and the input byte is written to the corresponding location of memory Finally the byte counter and register pair HL are decremented UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 276 zILOSG M Cycles T States 4 MHz E T 4 16 4 5 3 4 4 00 Condition Bits Affected S is unknown Z is set if B 1 0 reset otherwise H is unknown P V is unknown N is set C is not affected Example If the contents of register C are 07H the contents of register B are 10H the contents of the HL register pair are 1000H and byte 7BH is available at the peripheral device mapped to I O port address 07H At execution of IND memory location 1000H contains 7BH the HL register pair contains OFFFH and register B contains OFH UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 277 INDR Operation HL C B 131 HL lt HL1 Op Code INDR Vita dia a eb 1 0 1 1 14 0 1 0 BA Description The contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports Register B is used as a b
71. 3 3 3 50 Condition Bits Affected None Example Given Two interrupting devices with A and B connected in a daisy chain configuration and A having a higher priority than B A B L IEI IEO IEI IEO UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 204 tte B generates an interrupt and is acknowledged The interrupt enable out IEO of B goes Low blocking any lower priority devices from interrupting while B is being serviced Then A gen erates an interrupt suspending service of B The IEO of A goes Low indicating that a higher priority device is being serviced The A routine is completed and a RETI is issued resetting the IEO of A allowing the B routine to continue A second RETI is issued on completion of the B routine and the IEO of B is reset high allowing lower priority devices interrupt access UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 265 RETN Operation Return from non maskable interrupt Op Code RETN 1 1 1 0 1 1 0 1 ED 0 1 0 0 0 1 0 1 45 Description This instruction is used at the end of a non maskable interrupts service routine to restore the contents of the Program Counter PC analogous to the RET instruction The state of IFF2 is copied back to IFF1 so that maskable interrupts are enabled immediately following the RETN ifthey were enabled before the nonmaskable interrupt M Cycles T
72. 31 ex de hl 0011 10f5 32 djnz mloop repeat until no more bits 0013 c9 33 ret 34 end UMO08001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual 2iLGAG 41 Z80 CPU Instruction Description Overview The Z80 CPU can execute 158 different instruction types including all 78 of the 8080A CPU The instructions fall into these major groups Load and Exchange e Block Transfer and Search Arithmetic and Logical e Rotate and Shift e Bit Manipulation Set Reset Test Jump Call and Return Input Output Basic CPU Control Instruction Types The load instructions move data internally among CPU registers or between CPU registers and external memory All these instructions specify a source location from which the data is to be moved and a destination location The source location is not altered by a load instruction Examples of load group instructions include moves between any of the general purpose registers such as move the data to register B from register C This group also includes load immediate to any CPU register or to any external memory location Other types of load instructions allow transfer between CPU registers and memory locations The exchange instructions can trade the contents of two registers UMO08001 1000 Z80 CPU Instruction Description 42 Z80 CPU User s Manual ILOG A unique set of block transfer instructions is provided in the Z80 With a single instruction
73. 3E High Order Address The relative jump instruction uses only two bytes the second byte is a signed two s complement displacement from the existing PC This displacement can be in the range of 129 to 126 and is measured from the address of the instruction Op Code UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2ILOU 65 Three types of register indirect jumps are also included These instructions are implemented by loading the register pair HL or one of the index registers 1 X or IY directly into the PC This feature allows for program jumps to be a function of previous calculations A call is a special form of a jump where the address of the byte following the call instruction is pushed onto the stack before the jump is made A return instruction is the reverse of a call because the data on the top of the stack is popped directly into the PC to form a jump address The call and return instructions allow for simple subroutine and interrupt handling Two special return instruction are included in the Z80 family of components The return from interrupt instruction RETI and the return from nonmaskable interrupt RETN are treated in the CPU as an unconditional return identical to the Op Code c9n The difference is that RETI can be used at the end of an interrupt routine and all Z80 peripheral chips recognize the execution of this instruction for proper control of nested priority interrupt handling This ins
74. 4 3 1 75 ADC A IX4d 5 19 4 4 3 5 3 4 75 ADC A 1Y d 5 19 4 4 3 5 3 4 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if overflow reset otherwise N is reset C is set if carry from bit 7 reset otherwise Example If the Accumulator contents are 16H the Carry Flag is set the HL register pair contains 6666H and address 6666H contains 10H at execution of ADCA HL the Accumulator contains 27H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 148 ILOG SUB s Operation A lt A s Op Code SUB Operands S This s operand is any ofr n HL IX d or IY d as defined for the analogous ADD instruction These possible Op Code operand combinations are assembled as follows in the object code SUB r 1 01 0 1 0 r gt SUB n 1 110711 0 1 1 0 D6 SUB HL 1 0 0 1 0 1 1 0 96 SUB IX d 1 4 0 14 14 4 0 4 DD SUB IY d 11111 4 44 44 07 1 FD r identifies registers B C D E H L or A assembled as follows in the object code field above UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2ILOU 149 Register r B 000 C 001 D 010 E 011 H 100 L 101 A ri Description The s operand is subtracted from the contents of the Accumulator and the r
75. 7 Adding RAM 2 2 12 eei e bebe ERES ad 29 Memory Speed Control ooooocooococooorco ees 30 UM008001 1000 Table of Contents Z80 CPU User s Manual Dib E Interfacing Dynamic Memories 0 00 cece eee eee 31 Software Implementation Examples o ooooooomom o o 33 Overview of Software Features 0 0 0 eese 33 Examples of Specific Z80 Instructions oooooooommmomo 34 Examples of Programming Tasks lesse eee eens 37 Z80 CPU Instruction Description eee 41 OVGIVIEW cios iia dada edid eg 41 Instruction Types oues em ecce rper RR Uh ERR LR Rd 41 Addressing Modes ooooccccooccoc eee 44 Instruction Op Codes 0 0 0 0 cc eee 48 Z80 Instruction Set 44 ex dad RE e RELATED 75 Z80 Assembly Language 2 02 0 cece eee eee eee 75 Z80 Status Indicator Flags 0 0 ete tees 76 Add Subtract Flag 0 0 0 ccc eee ene eens 77 Z80 Instruction Description 0 0 cece eee eee 80 8 Bit Load Group 0 0 0 81 16 Bit Load Group ii ies rem eed ae 102 Exchange Block Transfer and Search Group 122 8 Bit Arithmetic Group 0 1 ee ee 140 General Purpose Arithmetic and CPU Control Groups 166 16 Bit Arithmetic Group 0 0 0 0c ee ee eee eee 179 Rotate and Shift Group 0 0 cece eee 190 Bit Set Reset and Test Group 0 cee cece eee 224 Jump GtOUD i ci eno rs de pedo m ie nie the a da 23
76. 8 Call And Return Group 00 00 cece eee 255 Input and Output Group 0 0 eee eee 269 Table of Contents UM008001 1000 Z80 CPU User s Manual E List of Instructions LI er Me UM ta ame tasas 146 ADC HESS gil dead diated oe eta dere xe E da 180 ADDA HE ooo ERROR ERE gaa A e RT ope Rr ide 143 ADD A IX d hr 144 ADAN DC iaa 145 ADDA Mil E E E EE E 142 ADDA T A AAAG 140 ADD HE SS embed Ii ee a ines bes E AA eee 179 ADD IX PP tet bud did die aes 182 ADD IA ao A aE E i E EAE EEEE 183 AND S 3 540 bad ooh aeRO ii 152 BEI b HE A t 226 BIT b IXtd jede de aa VICIT ek E aE ALS Wane he 228 BIT b IY4d ica vad Rm sae paw dee bee ee RR ER RR 230 O Tode Meaty Rie do hee gtr ER O R 224 CALL CC ll 2221 cea d o Riad eed ded 257 S Un 255 Bg 170 COPS E iria di eb ici dai 158 OPD RE O O 137 A ETE 138 EP dd is 134 AA ee RR RE EO UNE E ede lead 135 A oo tua Tents a E ase coat torah sy E eee 168 DAA dd be adapta 166 DEC IX ceo dr li nd td rea 188 A E E can E fue S ARE AE A E E E ate uehits a 189 DEC M aa aos 164 DECSS ia vie geeks a aia AN d ve baw Eee da arent 187 A A uel eas 174 DINA oa E dare a emcee 253 UM008001 1000 List of Instructions Z80 CPU User s Manual EZ vi Bt ou osos Sue Lett Ina ba 175 EX SP HL viral ARR CEA ade 125 EX SP IX 922a e ERE RR ERR 126 EX SP IY pi a et ee ale ne ERR E E RAE 127 EX AR AP
77. All these instructions operate with three registers HL points to the source location DE points to the destination location BC is a byte counter After the programmer has initialized these three registers any of these four instructions may be used The LDI Load and Increment instruction moves one byte from the location pointed to by HL to the location pointed to by DE Register pairs HL and DE are then automatically incremented and are ready to point to the following locations The byte counter register pair BC is also decremented at this time This instruction is valuable when blocks of data must be moved but other types of processing are required between each move The LDIR Load Increment and Repeat instruction is an extension of the LDI instruction The same load and increment operation is repeated until the byte counter reaches the count of zero Thus this single instruction can move any block of data from one location to any other UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2iLOU 57 Because 16 bit registers are used the size of the block can be up to 64 Kbytes 1K 1024 long and can be moved from any location in memory to any other location Furthermore the blocks can be overlapping because there are no constraints on the data used in the three register pairs The LDD and LDDR instructions are very similar to the LDI and LDIR The only difference is that register pairs HL and DE are de
78. B 000 C 001 D 010 E 011 H 100 L 101 A 111 T States 4 MHz E T 8 4 4 2 00 15 4 4 4 3 3 75 23 4 4 3 5 4 3 5 75 23 4 4 3 5 4 3 5 75 ES 6 D bit 6 in register 0 resets Bit 0 in register D is the Z80 Instruction Set Z80 CPU User s Manual 238 ILOG Jump Group JP nn Operation PC lt nn Op Code JP Operands nn r n rl n Note The first operand in this assembled object code is the low order byte of a two byte address Description Operand nn is loaded to register pair PC Program Counter The next instruction is fetched from the location designated by the new contents of the PC M Cycles T States 4 MHz E T 3 10 4 3 3 2 50 Condition Bits Affected None UMO08001 1000 Z80 Instruction Set JP cc nn Operation IF cc true PC nn Op Code JP Operands cc nn 1 a 00 0 1 0 a n ra n p Z80 CPU User s Manual 2iLOU 239 The first n operand in this assembled object code is the low order byte of a 2 byte memory address Description If condition cc is true the instruction loads operand nn to register pair PC Program Counter and the program continues with the instruction beginning at address nn If condition cc is false the Program Counter is incremented as usual and the program continues with the next sequential instru
79. BC to go to zero the instruction is terminated If BC is not zero the program counter is decremented by two and the instruction is repeated Interrupts are recognized and two refresh cycles execute after each data transfer When BC is set to zero prior to instruction execution the instruction loops through 64 Kbytes For BC z 0 M Cycles T States 4 MHz E T 5 21 4 4 3 5 5 5 25 For BC 0 M Cycles T States 4 MHz E T 5 21 4 4 3 5 5 5 25 Condition Bits Affected S is not affected Z 1s not affected H is reset P V is reset N is reset UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 133 Example If the HL register pair contains 11144 the DE register pair contains 2225H the BC register pair contains 0003H and memory locations have these contents 1114H contains 1113H contains 1112H contains Then at execution of LDDR locations are HL contains DE contains DC contains 1114H contains 1113H contains 1112H contains UMO08001 1000 A5H 2225H contains C5H 36H 2224H contains 59H 88H 2223H contains 66H the contents of register pairs and memory 1111H 2222H 0000H A5H 2225H contains A5H 36H 2224H contains 36H 88H 2223H contains 88H Z80 Instruction Set 134 Z80 CPU User s Manual RitLou Operation Op Code Operands Description CPI A HL HL HL 1 BC lt BC 1 CPI 13 395 4 41 10 d ED 1
80. Code Description Z80 CPU User s Manual NEG 1 1 1 0 1 1 0 1 ED 0 1 0 0 0 1 0 0 44 The contents of the Accumulator are negated two s complement This is the same as subtracting the contents of the Accumulator from zero Note that 80H is left unchanged M Cycles T States 4 MHz E T 2 8 4 4 2 00 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if borrow from bit 4 reset otherwise P V is set if Accumulator was 80H before operation reset otherwise N is set C is set if Accumulator was not 00H before operation reset otherwise If the contents of the Accumulator are 1 0 0 1 1 0 0 0 at execution of NEG the Accumulator contents are 0 LA 0 1 0 0 0 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 170 ANTE CCF Operation CY CY Op Code CCF 0 0 1111 1 111 41 3F Description The Carry flag in the F register is inverted M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected S is not affected Z is not affected H previous carry is copied P V is not affected N is reset C is set if CY was 0 before operation reset otherwise UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2ILGAG 171 SCF Operation CY 1 Op Code SCF 0 0 1 1 0 1 1 1 37
81. IS F FALL 17 I P V FLAG TH Is NDICATI F By THAT RI R RO US EGISTI bd C UG ED RAC R EMENTED TO Nineteen bytes are required for this operation Example Thr ee Zl RO TERS R BC WAS A 16 digit decimal number is shifted as depicted in the Figure 6 This shift is performed to mechanize BCD multiplication or division The 16 digit decimal number is represented in packed BCD format two BCD digits byte The operation is programmed as follows LD HL DATA ADDRESS OF FIRST BYTE LD B COUNT SHIFT COUNT XOR A CLEAR ACCUMULATOR ROTAT RLD ROTATE LEFT LOW ORDER DIGIT WITH DIGITS IN HL INC HL ADVANCE MEMORY POINTER DJNZ ROTAT DECREMENT B AND GO TO ROTA UMO08001 1000 IN ACC IF Hardware and Software Implementation Examples Z80 CPU User s Manual 7 36 RitLou B IS NOT THROUGH ZERO OTHERWISE FALL Eleven bytes are required for this operation Figure 6 N IN Shifting of BCD Digits Bytes Example Four One number is to be subtracted from another number both of which are in packed BCD format and are of equal but varying length The result is stored in the location of the minuend The operation is programmed as follows SUBDEC UMO080
82. K g aes s Mi HALT s Figure 12 Power Down Acknowledge UMO08001 1000 Overview Z80 CPU User s Manual 20 RitLou Power Down Release Cycle The system clock must be supplied to the CMOS Z80 CPU to release the power down state When the system clock is supplied to the CLK input the CMOS Z80 CPU restarts operations from the point at which the power down state was implemented The timing diagrams for the release from power down mode are featured in Figure 13 14 and 15 When the HALT instruction is executed to enter the power down state the CMOS Z80 CPU also enters the HALT state An interrupt signal either NMI or ANT or a RESET signal must be applied to the CPU after the system clock is supplied in order to release the power down state HALT g g Figure 14 Power Down Release Cycle No 2 UMO08001 1000 Overview Z80 CPU User s Manual HALT Figure 15 Power Down Release Cycle No 3 UMO08001 1000 Overview Z80 CPU User s Manual EILO INTERRUPT RESPONSE Overview An interrupt allows peripheral devices to suspend CPU operation and force the CPU to start a peripheral service routine This service routine usually involves the exchange of data status or control information between the CPU and the peripheral When the service routine is completed the CPU returns to the operation from which it was interrupted Interrupt Enable Disable The Z80 CPU has two interrupt inputs a software maskable interr
83. L 1 1100 1 011 1 CB 0 1 b 1 1 0 This instruction tests bit b in the memory location specified by the contents of the HL register pair and sets the Z flag accordingly Operand b is specified as follows in the assembled object code Bit Tested b 0 000 1 001 2 010 3 011 4 100 5 101 6 110 1 111 M Cycles T States 4 MHz E T 3 12 4 4 4 4 3 00 Condition Bits Affected S is unknown Z is set if specified Bit is 0 reset otherwise H is set P V is unknown H is reset C is not affected UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 227 Example If the HL register pair contains 4444H and bit 4 in the memory location 444H contains 1 at execution of BIT 4 HL the Z flag in the F register contains 0 and bit 4 in memory location 44444 still contains 1 Bit 0 in memory location 4444H is the least significant bit UMO08001 1000 Z80 Instruction Set 228 Z80 CPU User s Manual ILOG Operation Op Code Operands Description BIT b IX d Z c IX d b BIT b IX d 1 1 0 1 1 0 1 1 0 1 0 1 lt 0 1 a 1 1 DD CB This instruction tests bit b in the memory location specified by the contents of register pair IX combined with the two s complement displacement d and sets the Z flag accordingly Operand b is specified as follows in the assembled object code Bit Tested 1
84. M ODIO DEM ER 232 OO 211 SRAM moeni aa A NOR EMO RP aq weis 214 SRG MPH 217 SUBS CP 148 KOR ES m 156 UM008001 1000 List of Instructions Z80 CPU User s Manual List of Instructions UM008001 1000 Z80 CPU User s Manual amp X List of Figures Figure 1 Z80 CPU Block Diagram seeses eese 2 Figure 2 Z80 CPU Register Configuration oooooccoooomomo 3 Figure 3 Z80 I O Pin Configuration 00 eee eee eee 7 Figure 4 Basic CPU Timing Example 2 02 0 000 12 Figure 5 Instruction Op Code Fetch 0 020000 0 0008 13 Figure 6 Memory Read or Write Cycle 00 02 cee ee eee 14 Figure 7 Input or Output Cycles 0 0 eee eee eee 15 Figure 8 Bus Request Acknowledge Cycle o oooooo oooooo o 16 Figure 9 Interrupt Request Acknowledge Cycle 17 Figure 10 Non Maskable Interrupt Request Operation 18 Figure 11 HALT Exit oooooononcnccnronc I mne 19 Figure 12 Power Down Acknowledge 0200 eee eee 19 Figure 13 Power Down Release Cycle No 1 2 2 0005 20 Figure 14 Power Down Release Cycle No 2 02 0 005 20 Figure 15 Power Down Release Cycle No 3 02 0 005 21 Figure 16 Mode 2 Interrupt Response Mode 26 Figure 17 Minimum Z80 Computer System 28 Figure 18 ROM and RAM Implementation
85. None Example The Carry flag is set and it is required to jump back four locations from 480 The assembly language statement is JR C 4 The resulting object code and final PC value is shown below UMO08001 1000 Z80 Instruction Set UMO08001 1000 Location 47C 47D 47E 47F 480 481 Instruction lt PC after jump 38 Z80 CPU User s Manual 2iLOU 243 FA two s complement 6 Z80 Instruction Set 244 Z80 CPU User s Manual RitLou Operation Op Code Operands Description JR NC e If C 1 continue If C20 PC lt PC e JR NC e 0 0 1 1 0100 0 30 at e 2 po This instruction provides for conditional branching to other segments of a program depending on the results of a test on the Carry Flag If the flag is equal to 0 the value of the displacement e is added to the Program Counter PC and the next instruction is fetched from the location designated by the new contents of the PC The jump is measured from the address of the instruction Op Code and has a range of 126 to 129 bytes The assembler automatically adjusts for the twice incremented PC If the flag is equal to a 1 the next instruction executed is taken from the location following this instruction If the condition is met M Cycles T States 4 MHz E T 3 12 4 3 5 3 00 If the condition is not met M Cycles T States 4 MHz E T 7 7 4 3 1 75 Condition Bits Affected
86. Positive to a negative giving an incorrect difference Overflow is set Another method for identifying an Overflow is to observe the Carry to and out of the sign bit Ifthere is a Carry in and no Carry out or if there is no Carry in and a Carry out then Overflow has occurred This flag is also used with logical operations and rotate instructions to indicate the resulting parity is Even The number of 1 bits in a byte are counted If the total is Odd ODD parity is flagged P 0 If the total is Even EVEN parity is flagged P 1 During search instructions CPI CPIR CPD CPDR and block transfer instructions LDI LDIR LDD LDDR the P V Flag monitors the state of the UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 79 Byte Count Register BC When decrementing if the byte counter decrements to 0 the flag is cleared to 0 otherwise the flag is set to1 During LD A I and LD A R instructions the P V Flag is set with the value of the interrupt enable flip flop 1FF2 for storage or testing When inputting a byte from an I O device with an IN r C instruction the P V Flag is adjusted to indicate the data parity Half Carry Flag The Half Carry Flag H is set 1 or cleared 0 depending on the Carry and Borrow status between Bits 3 and 4 of an 8 bit arithmetic operation This flag is used by the Decimal Adjust Accumulator instruction DAA to correct the result of a packed BCD add or subtract oper
87. R ettet ire 110 LD nn HL id secu bath ca had wae Dc RW ba RR eec d D 109 LD nn IX 4 ede eoe Re RO UR RECO EAR ERU o Re c Sce 111 LD nti DY ascensu estne e uomen prae Sua mae Arpa id 112 LED AS BG aaa ale eS A eae ae 92 LD A DE sence peewee aie bes eq E EP E Peg 93 LD A nit ei eR ERE tbe due PEOR V PESCE ENDO dor 94 LDA IT oeroet konia dde Gated Bh ee Roe de UR Red RR tu oe cs A 98 LDA R taa A o Robe he Rut UR Ce ined 99 A imn e aces Post ett t ne te t D e Rd gc e enn 106 LDdd d 221m m ERR weed UR RR ROS Dee YEA 102 LD HL MO sata e da dn ea dne n ana n oido 105 sp mE 100 EDIX n ge edited dere iste dada 107 LODO qu PT 103 LD IY nn a e ORC AO a ORDRES 108 HAN Cm 104 LDCHL s hess a adi i 83 LD IX d iussu a e aec a eR RU AR RR R 84 LD ty IVA cu tb HOS da Ce e redes 85 TDR A uve EROIS ad da a DU VLA RS 101 LDE fuc xus MEVS d dece ded e e do es ed 81 LIED 24s eR ER e Eu de ob au md at ed dece o 82 EDE AA i P E E ostra ei 113 DDSSP DX ooo das ta E 114 UMO08001 1000 List of Instructions vil Z80 CPU User s Manual o m RS Vil N LD SP IY guessed ei ted ideas ORE rd eden 115 LDD eise eh qe PA ed cada Shas ER UT dde 131 Jb E PCI TRLDETTUTTST 132 DEDI dE hae a he acte eme as CR o p e ARS 128 LDIR pescati 129 NEG aaea eae a RNE 169 NOP eeen e o TEE aa pei A A aes 172 ORS eoe a eiio a e a eoim e E O E E EEEE 154 OTDR corri A ee RENE Sn 286 OTIR eq m 283 OUT C 1 i i n
88. Request output active Low tristate IORQ indicates that the lower half of the address bus holds a valid I O address for an I O read or write operation IORQ is also generated concurrently with M1 during an interrupt acknowledge cycle to indicate that an interrupt response vector can be placed on the data bus M1 Machine Cycle One output active Low M1 together with MREQ indicates that the current machine cycle is the opcode fetch cycle of an instruction execution M1 together with IORQ indicates an interrupt acknowledge cycle MREQ Memory Request output active Low tristate MREQ indicates that the address bus holds a valid address for a memory read of memory write operation NMI Non Maskable Interrupt input negative edge triggered NMI has a higher priority than INT NMI is always recognized at the end of the current instruction independent of the status of the interrupt enable flip flop and automatically forces the CPU to restart at location 0066H RD Read output active Low tristate RD indicates that the CPU wants to read data from memory or an I O device The addressed I O device or memory should use this signal to gate data onto the CPU data bus RESET Reset input active Low RESET initializes the CPU as follows it resets the interrupt enable flip flop clears the PC and registers I and R and sets UMO08001 1000 Overview 10 Z80 CPU User s Manual RitLou the interrupt stat
89. SUB instructions N is set to 1 Add Subtract Flag The Decimal Adjust Accumulator instruction DAA uses this flag to distinguish between ADD and SUBTRACT instructions For all ADD instructions N sets to 0 For all SUBTRACT instructions N sets to 1 Parity Overflow Flag P V This flag is set to a specific state depending on the operation performed For arithmetic operations this flag indicates an Overflow condition when the result in the Accumulator is greater than the maximum possible number UMO08001 1000 Z80 Instruction Set 78 Z80 CPU User s Manual EILO 127 or is less than the minimum possible number 1 28 This Overflow condition is determined by examining the sign bits of the operands For addition operands with different signs never cause Overflow When adding operands with like signs and the result has a different sign the Overflow Flag is set for example 120 0111 1000 ADDEND 105 0110 1001 AUGEND 225 1110 0001 95 SUM The two numbers added together resulted in a number that exceeds 127 and the two positive operands have resulted in a negative number 95 which is incorrect The Overflow Flag is therefore set For subtraction Overflow can occur for operands of unlike signs Operands of like signs never cause Overflow For example TE2ZT OLLI 1111 MINUEND 64 1100 0000 SUBTRAHEND 191 1011 1111 DIFFERENCE The minuend sign has changed from a
90. UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 177 IM 1 Operation Op Code IM Operands 1 1 1 41 0 14 1 0 1 ED 0 1 0 1 0 1 1 o 56 Description The IM 1 instruction sets interrupt mode 1 In this mode the processor responds to an interrupt by executing a restart to location 0038H M Cycles T States 4 MHz E T 2 8 4 4 2 00 Condition Bits Affected None UMO08001 1000 Z80 Instruction Set 178 Z80 CPU User s Manual ILOG Operation Op Code Operands Description IM IM 2 1 1 4 0 1 1 0 1 0 4 0 1 0 1 1 0 ED 56 The IM 2 instruction sets the vectored interrupt mode 2 This mode allows an indirect call to any memory location by an 8 bit vector supplied from the peripheral device This vector then becomes the least significant eight bits of the indirect pointer while the I register in the CPU provides the most significant eight bits This address points to an address in a vector table that is the starting address for the interrupt service routine M Cycles T States 2 8 4 4 Condition Bits Affected None UMO08001 1000 4 MHz E T 2 00 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 179 16 Bit Arithmetic Group Operation Op Code Operands Description ADD HL ss HL lt HL ss ADD HL ss 0 0s S 1 010 1
91. ag is set if the last arithmetic operation was a subtract The negate accumulator NEG instruction forms the two s complement of the number in the accumulator Finally notice that a reset carry instruction is not included in the Z80 because this operation can be easily achieved through other instructions such as a logical AND of the accumulator with itself Table 9 lists all the 16 bit arithmetic operations between 16 bit registers There are five groups of instructions including add with carry and subtract with carry ADC and SBC affect all the flags These two groups simplify address calculation operations or other 16 bit arithmetic operations Table 7 8 Bit Arithmetic and Logic Source Register Addressing Reg Indir Indexed Immed A B C D JE F L HL IX d 1Y d ADD FD 86 d ADD W CARRY FD ADC 8E d SUBTRACT FD SUB 96 d SUB w CARR FD SBC 9E d AND FD A6 d UM008001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual Biko Table 7 8 Bit Arithmetic and Logic Source Register Addressing Reg Indir Indexed Immed XOR FD AE d OR FD B6 d COMPARE FD CP BE d INCREMENT FD INC 34 d DECREMENT FD DEC 35 d Table 8 General Purpose AF Operation Decimal Adjust Acc DAA Complement Acc CPL Negate Acc NEG ED 2 s complement 44 Complement Carry Flag CCF Set Carry Flag SCF UMO08001 1000 Z80 CPU In
92. and the interrupt enable flip flop is set then the HALT state is exited on the next rising clock edge The following cycle is an interrupt acknowledge cycle corresponding to the type of interrupt that was received If both are received at this time then the non maskable one is acknowledged since it has highest priority The purpose of executing NOP instructions while in the HALT state is to keep the memory refresh signals active Each cycle in the HALT state is a normal M1 fetch cycle except that the data received from the memory is ignored and a NOP instruction is forced internally to the CPU The HALT acknowledge signal is active during this time indicating that the processor is in the HALT state UMO08001 1000 Overview Z80 CPU User s Manual 2iLOU 19 CLK HALT RD or NMI HALT Instruction is repeated during this Memory Cycle Figure 11 HALT Exit Power Down Acknowledge Cycle When the clock input to the CMOS Z80 CPU is stopped at either a High or Low level the CMOS Z80 CPU stops its operation and maintains all registers and control signals However ICC2 standby supply current is guaranteed only when the system clock is stopped at a Low level during T4 of the machine cycle following the execution of the HALT instruction The timing diagram for the power down function when implemented with the HALT instruction is shown in Figure 12 T T Te T4 T Ta Ts Ta CL
93. ands called statements Each statement is written on a single line and may consist of from one to four entries A label field an operation field an operand field and a comment field The source program is processed by the assembler to obtain a machine language program object program that can be executed directly by the Z80 CPU ZiLOG provides several assemblers that differ in the features offered Both absolute and relocatable assemblers are available with the Development and Micro computer Systems The absolute assembler is contained in base level software operating in a 16K memory space while the relocating assembler is part of the RIO environment operating in a 32K memory space UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 7 76 RitLou Z80 Status Indicator Flags The flag registers F and F supply information to the user about the status of the Z80 at any given time The bit positions for each flag is listed below Z X N X P V N C Symbol Field Name C Carry Flag N Add Subtract P V Parity Overflow Flag H Half Carry Flag Z Zero Flag S Sign Flag X Not Used Each ofthe two flag registers contains 6 bits of status information that are set or cleared by CPU operations Bits 3 and 5 are not used Four of these bits C P V Z and S may be tested for use with conditional JUMP CALL or RETURN instructions Two flags may not be tested H N and are use
94. anual 2iLOU 259 contents of the Stack Pointer is 3000H and the contents of the Program Counter is 2135H pointing to the address of the first Op Code of the subroutine now to be executed UM008001 1000 Z80 Instruction Set Z80 CPU User s Manual 260 ZiLaG Operation Op Code Description RET pCL lt sp pCH lt sp 1 RET 1 1 0 0 1 0 0 1 C9 The byte at the memory location specified by the contents of the Stack Pointer SP register pair is moved to the low order eight bits of the Program Counter PC The SP is now incremented and the byte at the memory location specified by the new contents of this instruction is fetched from the memory location specified by the PC This instruction is normally used to return to the main line program at the completion of a routine entered by a CALL instruction M Cycles T States 4 MHz E T 3 10 4 3 3 2 50 Condition Bits Affected None Example Ifthe contents of the Program Counter are 3535H the contents of the Stack Pointer are 2000H the contents of memory location 2000H are B5H and the contents of memory location of memory location 2001H are 18H At execution of RET the contents of the Stack Pointer is 2002H and the contents of the Program Counter is 18B5H pointing to the address of the next program Op Code to be fetched UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User
95. are conveyed implicitly or otherwise by this document under any intellectual property rights UMO08001 1000 Z80 CPU User s Manual LILA iii Table of Contents OVEIVIOW A A RRPASQd Te 1 Archifecture 4 sad Sak See ees ae Se See eee Kad RUP sede ate 1 CPU Registers 2 eect nn hmm 2 Arithmetic Logic Unit ALU 0000 5 Instruction Register and CPU Control o oo ooooooomoooooo 6 Pin Description vocacion occ a tpi xr eet Ra tat ma REPE 6 OVERVIEW E 6 Pin Functions lseeseeeeee m m 7 Timing Mm 11 VER VIC Wesce te eta eroe e A te PAR er Rete E 11 Instruction Fetch 0 0 0 cette eee 12 Memory Read Or Write 2 0 0 0 eee 13 Input or Output Cycles 22 eee eee nee 14 Bus Request Acknowledge Cycle 02 0 0 00 c eee ee eens 15 Interrupt Request Acknowledge Cycle ooooooooomoomooo 16 Non Maskable Interrupt Response 0 0000 ce cece eee 17 HAET Exit os eset es dio wed own e odd e qoe 18 Power Down Acknowledge Cycle 000 c eee neces 19 Power Down Release Cycle 0 0 cc cece cece eens 20 Interrupt Response exe iio eee eoe e Om te ee ate 22 OVerVI6W ioo rerien UME vam bee der ue EHI ATE UU ewes 22 Interrupt Enable Disable 00 000 ccc ees 22 CPU Response 12 29 eee dae eet e erbe Se er doe s 24 Hardware and Software Implementation Examples 27 Hardware 4 e ERU E ee See wie WOCHEN ERE NE TER e 27 Minimum System 0 0 0c hr 2
96. arting address from the table and performs a jump to this address This mode of response requires 19 clock periods to complete seven to fetch the lower eight bits from the interrupting device six to save the program counter and six to obtain the jump address The Z80 peripheral devices include a daisy chain priority interrupt struc ture that automatically supplies the programmed vector to the CPU during interrupt acknowledge Refer to the Z80 CPU Peripherals User Manual for more complete information UMO08001 1000 Overview Z80 CPU User s Manual 2iLOU 27 Hardware and Software Implementation Examples HARDWARE Minimum System This chapter is an introduction to implementing systems that use the Z80 CPU Figure 1 illustrates a simple Z80 system Any Z80 system must include the following elements UM008001 1000 5V Power Supply Oscillator Memory Devices VO Circuits CPU Hardware and Software Implementation Examples 28 Z80 CPU User s Manual RitLou OSC 5V Power Supply LK 5V GND Ae Aa i Z80 PIO Port A PortB C D Output Data Input Data Figure 1 Minimum Z80 Computer System Because the Z80 CPU requires only a single 5V power supply most small systems can be implemented using only this single supply The external memory can be any mixture of standard RAM ROM or PROM In Figure 1 a single 8K bit ROM 1 Kbytes comprises the entire memory system The Z80 internal register configuration contai
97. assembler automatically adjusts for the twice incremented PC M Cycles T States 4 MHz E T 3 12 4 3 5 3 00 Condition Bits Affected None Example To jump forward five locations from address 480 the following assembly language statement is used JR 45 The resulting object code and final PC value is shown below UMO08001 1000 Location 480 481 482 483 484 485 Instruction 18 03 lt PC after jump Z80 Instruction Set 242 Z80 CPU User s Manual RitLou Operation Op Code Operands Description JRC e If C 0 continue If C 1 PC lt PC e JR C e 0 0 1 1 1 0 0 0 38 de e 2 aa This instruction provides for conditional branching to other segments of a program depending on the results of a test on the Carry Flag If the flag is equal to a 1 the value of the displacement e is added to the Program Counter PC and the next instruction is fetched from the location designated by the new contents of the PC The jump is measured from the address of the instruction Op Code and has a range of 126 to 129 bytes The assembler automatically adjusts for the twice incremented PC If the flag is equal to a 0 the next instruction executed is taken from the location following this instruction If condition is met M Cycles T States 4 MHz E T 3 12 4 3 5 3 00 If condition is not met M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected
98. ation The H Flag is set 1 or cleared 0 according to the following table H Flag Add Subtract 1 A Carry occurs from Bit 3 to Bit 4 A Borrow from Bit 4 occurs 0 No Carry occurs from Bit 3 to Bit 4 No Borrow from Bit 4 occurs Zero Flag The Zero Flag Z is set 1 or cleared 0 if the result generated by the execution of certain instructions is 0 For 8 bit arithmetic and logical operations the Z flag is set to a 1 if the resulting byte in the Accumulator is 0 If the byte is not 0 the Z flag is reset to 0 For compare Search instructions the Z flag is set to 1 if the value in the Accumulator is equal to the value in the memory location indicated by the value of the Register pair HL When testing a bit in a register or memory location the Z flag contains the complemented state of the indicated bit see Bit b s UMO08001 1000 Z80 Instruction Set 80 Z80 CPU User s Manual RitLou When inputting or outputting a byte between a memory location and an I O device INI IND OUTI and OUTD if the result of decrementing the B Register is 0 the Z flag is 1 otherwise the Z flag is 0 Also for byte inputs from I O devices using IN r C the Z flag is set to indicate a 0 byte input Sign Flag The Sign Flag S stores the state of the most significant bit of the Accumulator bit 7 When the Z80 performs arithmetic operations on signed numbers the binary twos complement notation is used to
99. bit 0026 44 data defs 2 storage for data address 45 end The following program see Table 2 multiplies two unsigned 16 bit integers leaving the result in the HL register pair Table 2 Multiply Listing Obj Loc Codo Stmt Source Statement 0000 1 mult unsigned sixteen bit integer multiply 2 on entrance multiplier in de 3 multiplicand in hl 4 5 onexit result in hl 6 7 register uses 8 9 10 h high order partial result 11 l low order partial result 12 d high order multiplicand 13 e low order multiplicand 14 b counter for number of shifts 15 c high order bits of multiplier UM008001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual Table 2 Multiply Listing Continued Obj Loc God Stmt Source Statement 16 a low order bits of multiplier 17 f 0000 0610 18 ld b 16 number of bits initialize 0002 4a 19 ld c d move multiplier 0003 7b 20 ld a e 0004 eb 21 ex de hl move multiplicand 0005 210000 22 ld hl 0 clear partial result 0008 cb39 23 mloop srl e shift multiplier right 000a jf 24 Ira least significant bit is 25 i in carry 000b 3001 26 jr nc noadd if no carry skip the add good 19 27 add hl de else add multiplicand to 28 partial result 000e eb 29 noadd ex de h l shift multiplicand left goof 29 30 add hl hl by multiplying it by two 0010 eb
100. can potentially be as large as memory space The sequence of instruction execution can be controlled by six different flags carry zero sign parity overflow add subtract half carry which reflect the results of arithmetic logical shift and compare instructions UM008001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual 34 RitLou After the execution of an instruction that sets a flag that flag can be used to control a conditional jump or return instruction These instructions provide logical control following the manipulation of single bit 8 bit byte or 18 bit data quantities A full set of logical operations including AND OR XOR exclusive OR CPL NOR and NEG two s complement are available for Boolean opera tions between the accumulator and all other 8 bit registers memory loca tions or immediate operands In addition a full set of arithmetic and logical shifts in both directions are available which operate on the contents of all 8 bit primary registers or directly on any memory location The carry flag can be included or set by these shift instructions to provide both the testing of shift results and to link register register or register memory shift operations Examples of Specific Z80 Instructions Example One When a 737 byte data string in memory location DATA must be moved to location BUFFER the operation is programmed as follows D HL DATA START ADDRESS OF DATA
101. cement d is set Operand b is specified as follows in the assembled object code Bit Tested b 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 313 M Cycles T States 4 MHz E T 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected None Example If the contents of Index Register IY are 2000H at execution of SET 0 1Y 3H bit 0 in memory location 2003H is 1 Bit 0 in memory location 2003H is the least significant bit UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 236 ILOG RES b m Operation sb 0 Op Code RES Operands b m Operand b is any bit 7 through 0 of the contents of the m operand any of r HL 1X d or IY d as defined for the analogous SET instructions These possible Op Code operand combinations are assembled as follows in the object code RES b rn 1 1 0 0 1 0 1 1 CB RES b HL 1 1010 1 0 1 1 CB RES b IX d 1 110 1 1 1 0 1 DD RES b IY d 11111011 1 11011 FD UMO08001 1000 Z80 Instruction Set Description Bit b 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 Bit b in operand m is reset Instruction M Cycles RES r 4 RES HL 4 RES 1X d 6 RES 1Y d 6 Condition Bits Affected None Example UMO08001 1000 At execution of RI least significant bit Z80 CPU User s Manual PILOG 237 Register r
102. cremented after every move so that a block transfer starts from the highest address of the designated block rather than the lowest Table 6 specifies the Op Codes for the four block search instructions The first CP I Compare and Increment compares the data in the accumulator with the contents of the memory location pointed to by register HL The result of the compare is stored in one of the flag bits and the HL register pair is then incremented and the byte counter register pair BC is decremented The instruction CPTR is merely an extension of the CP1 instruction in which the compare is repeated until either a match is found or the byte counter register pair BC becomes zero Thus this single instruction can search the entire memory for any 8 bit character The CPD Compare and Decrement and CPDR Compare Decrement and Repeat are similar instructions their only difference is that they decrement HL after every compare so that they search the memory in the opposite direction The search is started at the highest location in the memory block These block transfer and compare instructions are extremely powerful in string manipulation applications UM008001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual Table 5 Block Transfer Group Destination Source Reg Indir DE Reg Indir HL ED LDI Load DE gt HL AO Inc HL and DE Dec BC ED LDIR Load DE HL BO Inc HL and
103. ction Condition cc is programmed as one of eight status that corresponds to condition bits in the Flag Register register F These eight status are defined in the table below that also specifies the corresponding cc bit fields in the assembled object code UMO08001 1000 cc 000 001 010 011 100 101 110 111 Condition NZ non zero Z zero NC no carry C carry PO parity odd PE parity even P sign positive M sign negative Relevant Flag Z Z C C P V P V S S Z80 Instruction Set Z80 CPU User s Manual 240 ILOG M Cycles T States 4 MHz E T 3 10 4 3 3 2 50 Condition Bits Affected None Example If the Carry flag C flag in the F register is set and the contents of address 1520 are 03H at execution of JP C 1520H the Program Counter contains 1520H and on the next machine cycle the CPD fetches byte 03H from address 1520H UMO08001 1000 Z80 Instruction Set Operation PC lt PC e Op Code JR Operands e Z80 CPU User s Manual 2iLOU 241 JRe 0 1 0 0 0 18 ra e 2 Description This instruction provides for unconditional branching to other segments of a program The value of the displacement e is added to the Program Counter PC and the next instruction is fetched from the location designated by the new contents of the PC This jump is measured from the address of the instruction Op Code and has a range of 126 to 129 bytes The
104. d The El instruction sets both IFF1 and IFF2 to the enable state When the CPU accepts a maskable interrupt both IFF1 and IFF2 are automatically reset inhibiting further interrupts until the programmer issues a new El instruction Note that for all of the previous cases IFF1 and IFF2 are always equal The purpose of IFF2 is to save the status of IFF1 when a non maskable interrupt occurs When a non maskable interrupt is accepted IFF1 resets to prevent further interrupts until reenabled by the programmer Thus after a non maskable interrupt is accepted maskable interrupts are disabled but the previous state of IFF1 has been saved so that the complete state of the CPU just prior to the non maskable interrupt can be restored at any time When a Load Register A with Register I LD A I instruction or a Load Register A with Register R LD A R instruction is executed the state of IFF2 is copied to the parity flag where it can be tested or stored A second method of restoring the status of IFF1 is through the execution of a Return From Non Maskable Interrupt RETN instruction This instruction indicates that the non maskable interrupt service routine is complete and the contents of IFF2 are now copied back into IFF1 so that the status of IFF1 just prior to the acceptance of the non maskable interrupt is restored automatically Table 1 is a summary of the effect of different instructions on the two enable flip flops UMO08001 1000 Overview
105. d If decrementing causes B to go to zero the instruction is terminated If B is not zero the PC is decremented by two and the instruction repeated Interrupts are recognized and two refresh cycles execute after each data transfer Note if B is set to zero prior to instruction execution 256 bytes of data are input If B 0 M Cycles T States 4 MHz E T 5 21 4 5 3 4 5 5 25 If B 0 M Cycles T States 4 MHz E T 4 16 4 5 3 4 4 00 Condition Bits Affected S is unknown Z is set H is unknown P V is unknown UM008001 1000 Z80 Instruction Set Z80 CPU User s Manual 274 EILO N is set C is not affected Example If the contents of register C are 07H the contents of register B are 03H the contents of the HL register pair are 1000H and the following sequence of bytes are available at the peripheral device mapped to I O port of address 07H 51H A9H 03H then at execution of INIR the HL register pair contains 1003H register B contains zero and memory locations contain the following 1000H contains 51H 1001H contains A9H 1002H contains 03H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 275 IND Operation HL C B B 1 HL lt HL 1 Op Code IND X EL Dog wx og EB 1 0 1 0 1 0 1 o AA Description The contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of
106. d for BCD arithmetic Carry Flag The Carry Flag C is set or cleared depending on the operation performed For ADD instructions that generate a Carry and SUB instructions that generate a Borrow the Carry Flag sets The Carry Flag is reset by an ADD instruction that does not generate a Carry and by a SUB instruction that does not generate a Borrow This saved Carry facilitates software routines UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 77 for extended precision arithmetic Also the DAA instruction sets the Carry Flag if the conditions for making the decimal adjustment are met For instructions RLA RRA RLS and RRS the Carry bit is used as a link between the least significant byte LSB and most significant byte MSB for any register or memory location During instructions RLCA RLC and SLA the Carry contains the last value shifted out of Bit 7 of any register or memory location During instructions RRCA RRC SRA and SRL the Carry contains the last value shifted out of Bit 0 of any register or memory location For the logical instructions AND OR and XOR the Carry is reset The Carry Flag can also be set by the Set Carry Flag SCF and complemented by the Compliment Carry Flag CCF instructions Add Subtract Flag The Add Subtract Flag N is used by the Decimal Adjust Accumulator instruction DAA to distinguish between ADD and SUB instructions For ADD instructions N is cleared to 0 For
107. d after the Op Code is the low order byte of nn M Cycles T States 4 MHz E T 6 20 4 4 3 3 3 3 5 00 Condition Bits Affected None Example If the content of register pair HL is 483AH at instruction LD B2291 1 HL address B229H contains 3AH and address B22AH contains 48H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 110 ANTE LD nn dd Operation nn 1 lt ddh nn lt ddl Op Code LD Operands nn dd 1pipipop1ip1jpojp1 ED 0 0 d d 0 01 1 n a n Description The low order byte of register pair dd is loaded to memory address nn the upper byte is loaded to memory address nn 1 Register pair dd defines either BC DE HL or SP assembled as follows in the object code Pair dd BC 00 DE 01 HL 10 SP 11 The first n operand after the Op Code is the low order byte of a two byte memory address M Cycles T States 4 MHz E T 6 20 4 4 3 3 3 3 5 00 Condition Bits Affected None Example If register pair BC contains the number 4644 54 the instruction LD 10008 BC results in 44H in memory location 1000H and 46H in memory location 1001H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 111 LD nn IX Operation nn 1 lt IXh nn IXI Op Code LD Operands nn IX 1 1 0 1 1 1 0 1 DD 0 0 1 0 0 0 1 0 22 at n lt a n
108. d to jump forward five locations from address 300 The following assembly language statement is used JRZ 45 The resulting object code and final PC value is UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 247 Location Instruction 300 28 301 03 302 303 304 305 PC after jump UMO08001 1000 Z80 Instruction Set 248 Z80 CPU User s Manual RitLou Operation Op Code Operands Description JR NZ e If Z 1 continue IfZ 0 PC pc e JR NZ e 0 0 1 0 0 010 o 20 d e 2 This instruction provides for conditional branching to other segments of a program depending on the results of a test on the Zero Flag If the flag is equal to a 0 the value of the displacement e is added to the Program Counter PC and the next instruction is fetched from the location designated by the new contents of the PC The jump is measured from the address of the instruction Op Code and has a range of 126 to 129 bytes The assembler automatically adjusts for the twice incremented PC If the Zero Flag is equal to a 1 the next instruction executed is taken from the location following this instruction If the condition is met M Cycles T States 4 MHz E T 3 12 4 3 5 3 00 If the condition is not met M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected None Example The Zero Flag is reset and it is required to jump back fou
109. e H is set if carry from bit 3 reset otherwise P V is set if overflow reset otherwise N is reset C is set if carry from bit 7 reset otherwise If the Accumulator contents are 11H the Index Register Pair IY contains 10004 and if the content of memory location 1005H is 22H at execution of ADD A IY 5H the contents of the Accumulator are 33H UMO08001 1000 Z80 Instruction Set 146 Z80 CPU User s Manual RitLou ADCA s Operation A lt A s CY Op Code ADC Operands A s This s operand is any ofr n HL 1X d or IY d as defined for the analogous ADD instruction These possible Op Code operand combinations are assembled as follows in the object code ADC A r 1 0 10 0 1 ma r gt ADC A n 1 1 0 0 1 1 1 o CE ADC A HL 110001 14 1 0 8E ADC A IX d 1 1 0 41 1 1 1 0 DD ADC A IY d 1 1 1 1 1 1 0 1 FD r identifies registers B C D E H L or A assembled as follows in the object code field above UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 147 Register r B 000 C 001 D 010 E 011 H 100 L 101 A iq Description The s operand along with the Carry Flag C in the F register is added to the contents of the Accumulator and the result is stored in the Accumulator Instruction M Cycle T States 4 MHz E T ADC A r 1 4 1 00 ADC A n 2 7 4 3 1 75 ADC A HL 2 7
110. e Stack This instruction first decrements SP and loads the high order byte of IX to the memory address specified by SP then decrements SP again and loads the low order byte to the memory location corresponding to this new address in SP M Cycles T States 4 MHz E T 3 15 4 5 3 3 3 75 Condition Bits Affected None Example If the Index Register IX contains 2233H and the Stack Pointer contains 10074 at instruction PUSH IX memory address 1006H contains 22H memory address 1005H contains 33H and the Stack Pointer contains 1005H UM008001 1000 Z80 Instruction Set 118 Z80 CPU User s Manual RitLou Operation Op Code Operands Description PUSH IY SP 2 lt TYL SP 1 IYH PUSH IY 1 33 53 aldo d 1 FD 1 1 1 0 0 110 1 ES The contents of the Index Register IY are pushed to the external memory LIFO last in first out Stack The Stack Pointer SP register pair holds the 16 bit address of the current top of the Stack This instruction first decrements the SP and loads the high order byte of IY to the memory address specified by SP then decrements SP again and loads the low order byte to the memory location corresponding to this new address in SP M Cycles T States 4 MHz E T 4 15 4 5 3 3 3 75 Condition Bits Affected None Example If the Index Register IY contains 2233H and the Stack Pointer Contains 1007H at instruction PUSH IY memory address 1006H con
111. e immediate addressing to specify the source and register indirect or indexed addressing to specify the destination Instruction Op Codes This section describes each of the Z80 instructions and provides tables listing the Op Codes for every instruction In each of these tables the Op Codes in shaded areas are identical to those offered in the 8080A CPU UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2iLOG 49 Also depicted is the assembly language mnemonic that is used for each instruction All instruction Op Codes are listed in hexadecimal notation Single byte Op Codes require two hex characters while double byte Op Codes require four hex characters For convenience the conversion from hex to binary is repeated in Table 1 Table 1 Hex Binary Decimal Conversion Table Hex Binary Decimal 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Il O 00 10 tA RA WN KF O TMmMrUoUOADPF OCH AIAAUNUA WHE CO I Rh a Se a onm RwWNF OO j Nn The Z80 instruction mnemonics consist of an Op Code and zero one or two operands Instructions where the operand is implied contains no operand Instructions that contain only one logical operand where one operand is invariant such as the Logical OR instruction are represented by a one operand mnemonic Instructions that contain two varying operands are represent
112. east significant byte of a 2 byte memory address Description The current contents of the Program Counter PC are pushed onto the top of the external memory stack The operands nn are then loaded to the PC to point to the address in memory where the first Op Code of a subroutine is to be fetched At the end of the subroutine a RETurn instruction can be used to return to the original program flow by popping the top of the stack back to the PC The push is accomplished by first decrementing the current contents of the Stack Pointer register pair SP loading the high order byte of the PC contents to the memory address now pointed to by the SP then decrementing SP again and loading the low order byte of the PC contents to the top of stack Because this is a 3 byte instruction the Program Counter was incremented by three before the push is executed M Cycles T States 4 MHz E T 5 17 4 3 4 3 3 4 25 Condition Bits Affected None UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 256 ZiLaG Example If the contents of the Program Counter are 14474 the contents of the Stack Pointer are 3002H and memory locations have the contents 1A47H contains CDH IA48H contains 35H 1A49H contains 21H If an instruction fetch sequence begins the 3 byte instruction CD3521H is fetched to the CPU for execution The mnemonic equivalent ofthis is CALL 2135H At execution of this instruction the contents of memory address 3001H is 1AH t
113. ecesse Penh Doct ee tas eom da deeded 280 OUT Hy A uere dace e dote Re dad a i aed 279 QUID T PP TUI 285 OUTI cxtat a estaba Ena 282 POP TX corri tai oine dio uer eoe QURE quce hae yb dee 120 POP IY icit UGA tue Wee ved do RE RARE GE a dues 121 POP dd iue rese daha ea acit bu ER e UR Reda RS 119 PUSH tnd een ERES S esce RR Rs Hoo eae etus 117 BUSH TY anio nico e ere Pc Dee o ee Seo eg een 118 PUSH Qd aur E PATERE E EA eps 116 RESID Mr PCMCIA 236 RET SV 1 E a o a eam ash vee des bites 260 RET 66 rapere Te ane eet et eee 261 RETI MT 263 id dp 265 pmo mM 202 JP rre 191 REC HL xc eaeque ases m suat ace e AA 196 RLC IX td e ien reb e e ek RR dues 198 REC IY Td e uL Rv d Geta kb CRIT ET V AA 200 REGIT RS ERREUR AS a RE d Uere ua Ru 194 RECA ithaca ped S Recte es mob arte dp dae n oo a 190 RLD iet tope etr Rasen Rose oer tela ceu d red reden aon e 220 A hated aoe ae Grae E B nn cee Rear dteg cee nde ate 208 List of Instructions UM008001 1000 Z80 CPU User s Manual E RRA ui Se e RUP CU LORI DA ROCHE SO ANE UPS 193 iX EMT EE 205 RRCA asa muse endum uU dao quite 192 RRD onset HR DECIR ERN Mts ti ett rU ados hn 222 RSI D eau tao tibiam esa die et ated cha a can 267 SBCA Sci be A deat esce ds e de 150 SBC HI SS racial ru DES S il a 181 SEE Li seed geom dederit dob di ada 171 SET b CHI iii 233 SET b EX td Listed ed eek a bee wed MESURES IS PORT PA Ae 234 SET b LY AG Dita ate uae oes 235 SET D ada QUN
114. ect code CPr 1 0 1 1 1 ma r gt cPn 1114 1 1 1 1 1 J 0 FE CP HL 1 0 15 1 1 1 1 0 BE CP IX d 1 110 7 1 1 0 1 DD CP IY d 111 14 1 14 14 014 4 FD a d gt r identifies registers B C D E H L or A specified as follows in the assembled object code field above UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 159 Register r B 000 C 001 D 010 E 011 H 100 L 101 A ma Description The contents of the s operand are compared with the contents of the Accumulator If there is a true compare the Z flag is set The execution of this instruction does not affect the contents of the Accumulator Instruction M Cycles T States 4 MHz E T CPr 4 1 00 CPn 2 7 4 3 1 75 CP HL 2 7 4 3 1 75 CP IX4d 5 19 4 4 3 5 3 4 75 CP 1Y d 5 19 4 4 3 5 3 4 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if borrow from bit 4 reset otherwise P V is set if overflow reset otherwise N is set C is set if borrow reset otherwise Example If the Accumulator contains 63H the HL register pair contains 6000H and memory location 6000H contains 60H the instruction CP HL results in the PN flag in the F register resetting UMO08001 1000 Z80 Instruction Set 160 Z80 CPU User s Manual 7 ILOG Operati
115. ed by two operand mnemonics UM008001 1000 Z80 CPU Instruction Description 50 Z80 CPU User s Manual RitLou Load and Exchange Table 2 defines the Op Code for all the 8 bit load instructions implemented in the Z80 CPU Also described in this table is the type of addressing used for each instruction The source of the data is found on the top horizontal row and the destination is specified in the left column For example load register C from register B uses the Op Code 48H In all the figures the Op Code is specified in hexadecimal notation and the 48H 0100 1000 binary code is fetched by the CPU from the external memory during M1 time decoded and then the register transfer is automatically performed by the CPU The assembly language mnemonic for this entire group is LD followed by the destination followed by the source LD DEST SOURCE Note that several combinations of addressing modes are possible For example the source may use register addressing and the destination may be register indirect such as load the memory location pointed to by register HL with the contents of register D The Op Code for this operation is 72 The mnemonic for this load instruction is LD HL D The parentheses around the HL indicates that the contents of HL are used as a pointer to a memory location In all Z80 load instruction mnemonics the destination is always listed first with the source following The Z80 assembly language is defined for
116. ed on the address bus at the beginning of the M1 cycle One half clock cycle later the MREQ signal goes active At this time the address to the memory has had time to stabilize so that the falling edge of MREQ can be used directly as a chip enable clock to dynamic memories The RD line also goes active to indicate that the memory read data should be enabled onto the CPU data bus The CPU samples the data from the memory on the data bus with the rising edge of the clock of state T3 and this same edge is used by the CPU to turn off the RD and MREQ signals Thus the data has already been sampled by the CPU before the RD signal becomes inactive Clock state T3 and T4 of a fetch cycle are used to refresh dynamic memories The CPU uses this time to decode and execute the fetched instruction so that no other operation could be performed at this time During T3 and T4 the lower seven bits of the address bus contain a memory refresh address and the RFSH signal becomes active tindicating that a refresh read of all dynamic memories must be accomplished An RD signal is not generated during refresh time to prevent data from different memory UMO08001 1000 Overview Z80 CPU User s Manual 2iLOU 13 segments from being gated onto the data bus The MREQ signal during refresh time should be used to perform a refresh read of all memory elements The refresh signal can not be used by itself because the refresh address is only guaranteed to be stable d
117. ed with the next highest memory address SP 1 M Cycles T States 4 MHz E T 5 19 4 3 4 3 5 4 75 Condition Bits Affected None Example If the HL register pair contains 7012H the SP register pair contains 8856H the memory location 8856H contains byte 11H and memory location 8857H contains byte 22H then the instruction EX SP HL results in the HL register pair containing number 2211H memory location 8856H containing byte 12H memory location 8857H containing byte 70H and Stack Pointer containing 885 6H UMO08001 1000 Z80 Instruction Set 126 Z80 CPU User s Manual RitLou Operation Op Code Operands Description EX SP IX IXH SP 1 IXL SP EX SP IX 1 1 0 1 1 1 0 1 DD 1 1 1 0 0 0 1 1 ES The low order byte in Index Register IX is exchanged with the contents of the memory address specified by the contents of register pair SP Stack Pointer and the high order byte of IX is exchanged with the next highest memory address SP 1 M cycles T States 4 MHz E T 6 23 4 4 3 4 3 5 5 75 Condition Bits Affected None Example If the Index Register IX contains 3988H the SP register pair Contains 0100H memory location 0100H contains byte 90H and memory location 0101H contains byte 48H then the instruction EX SP IX results in the IX register pair containing number 48 90H memory location 0100H containing 88H memory location 0101H c
118. egister pairs are decremented If decrementing causes the BC to go to zero or if A HL the instruction is terminated If BC is not zero and A HL the program counter is decremented by two and the instruction is repeated Interrupts are recognized and two refresh cycles execute after each data transfer When BC is set to zero prior to instruction execution the instruction loops through 64 Kbytes if no match is found For BC 0andA z HL M Cycles T States 4 MHz E T 5 21 4 4 3 5 5 5 25 For BC 0 and A HL M Cycles T States 4 MHz E T 4 16 4 4 3 5 4 00 Condition Bits Affected S is set if result is negative reset otherwise Z is set if A HL reset otherwise H is set if borrow form bit 4 reset otherwise P V is set if BC 1 z 0 reset otherwise N is set C is not affected UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 139 Example If the HL register pair contains 1118H the Accumulator contains F3H the Byte Counter contains 0007H and memory locations have these contents 1118H contains 52H 1117H contains 00H 1116H contains F3H Then at execution of CPDR the contents of register pair HL are 1115H the contents of the Byte Counter are 00048 the P V flag in the F register sets and the Z flag in the F register sets UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 140 PiLou 8 Bit Arithmetic Group Operation Op Code Operands Description ADD A r
119. ent memory location are loaded to the high order portion of IY The SP is incremented again M Cycles T States 4 MHz E T 4 14 4 4 3 3 3 50 Condition Bits Affected None Example If the Stack Pointer Contains 1000H memory location 1000H contains 55H and location 1001H contains 33H the instruction POP IY results in Index Register IY containing 3355H and the Stack Pointer containing 1002H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 122 ziL00 Exchange Block Transfer and Search Group EX DE HL Operation DE lt HL Op Code EX Operands DE HL 1 1 1 0 1 0 1 1 EB Description The 2 byte contents of register pairs DE and HL are exchanged M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected None Example If the content of register pair DE is the number 2822H and the content of the register pair HL is number 499AH at instruction EX DE HL the content of register pair DE is 499AH and the content of register pair HL is 2822H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 123 EX AF AF Operation AF AF Op Code EX Operands AF AF 0 0 0 0 1 0 0 0 08 Description The 2 byte contents of the register pairs AF and AF are exchanged Register pair AF consists of registers A and F M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected None Example If the content o
120. epeated If B has gone to zero the instruction is terminated Interrupts are recognized and two refresh cycles are executed after each data transfer Note When B is set to zero prior to instruction execution the instruc tion outputs 256 bytes of data If B 0 M Cycles T States 4 MHz E T 5 21 4 5 3 4 5 5 25 If B 0 M Cycles T States 4 MHz E T 4 16 4 5 3 4 4 00 Condition Bits Affected UMO08001 1000 Z80 Instruction Set 284 Z80 CPU User s Manual EILO Example S is unknown Z is set H is unknown P V is unknown N is set C is not affected If the contents of register C are 07H the contents of register B are 03H the contents of the HL register pair are 1000H and memory locations have the following contents 1000H contains 51H 1001H contains A9H 1002H contains 03H then at execution of OTIR the HL register pair contains 1003H register B contains zero and a group of bytes is written to the peripheral device mapped to I O port address 07H in the following sequence 51H A9H 03H UMO08001 1000 Z80 Instruction Set Operation Op Code Description Z80 CPU User s Manual 2iLOU 285 OUTD C lt HL B B 1 HL lt HL 1 OUTD 1 1 1 0 11 0 1 ED 1 0 1 0 1 0 1 1 AB The contents ofthe HL register pair are placed on the address bus to select a location in memory The byte contained in this memory location is temporarily stored i
121. er s Manual ILOG Overview ARCHITECTURE The ZiLOG Z80 CPU family of components are fourth generation enhanced microprocessors with exceptional computational power They offer higher system throughput and more efficient memory utilization than comparable second and third generation microprocessors The speed offerings from 6 20 MHz suit a wide range of applications which migrate software The internal registers contain 208 bits of read write memory that are accessible to the programmer These registers include two sets of six general purpose registers which may be used individually as either 8 bit registers or as 16 bit register pairs In addition there are two sets of accumulator and flag registers The Z80 CPU also contains a Stack Pointer Program Counter two index registers a REFRESH register and an INTERRUPT register The CPU is easy to incorporate into a system since it requires only a single 5V power source All output signals are fully decoded and timed to control standard memory or peripheral circuits the Z80 CPU is supported by an extensive family of peripheral controllers Figure 1 illustrates the internal architecture and major elements of the Z80 CPU UMO08001 1000 Overview Z80 CPU User s Manual Z 2 RitLou 13 CPU and System Control Signals Data Bus Control IN Inst 7 Register lt Internal Data Bus ALU Instruction Decode
122. eration IY d lt n Op Code LD Operands IY d n LD IY d n 4 4 0 0 0 1 1 0 ra gt a gt Z80 CPU User s Manual ZiLOG 91 FD 36 Description Integer n is loaded to the memory location specified by the contents of the Index Register summed with the two s complement displacement integer d T States 4 MHz E T 19 4 4 3 5 3 2 50 Condition Bits Affected None Example Ifthe Index Register IY contains the number A940H the instruction LD 1Y 10H 97H results in byte 97H in memory location A950H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 92 ILOG LD A BC Operation A lt BC Op Code LD Operands A BC 0 0 0 0 1 OJ 1 o OA Description The contents of the memory location specified by the contents of the BC register pair are loaded to the Accumulator M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected None Example If the BC register pair contains the number 4747H and memory address 4747H contains byte 12H then the instruction LD A BC results in byte 12H in register A UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 93 LD A DE Operation A DE Op Code LD Operands A DE 0 0 0 1 1 0 1 0 1A Description The contents of the memory location specified by the register
123. ers B C D E H L or A specified as follows in the assembled object code field above UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 153 Register r B 000 C 001 D 010 E 011 H 100 L 101 A anaal Description A logical AND operation is performed between the byte specified by the s operand and the byte contained in the Accumulator the result is stored in the Accumulator Instruction M Cycles T States 4 MHz E T AND r 1 4 1 00 AND n 2 7 4 3 1 75 AND HL 2 7 4 3 1 75 AND IX4d 5 19 4 4 3 5 3 4 75 AND IX4d 5 19 4 4 3 5 3 4 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set P V is reset if overflow reset otherwise N is reset C is reset Example If the B register contains 7BH 0111 1011 and the Accumulator contains C3H 1100 0011 atexecution of AND B the Accumulator contains 43H 0100 0011 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 154 zikon ORs Operation A lt A vs Op Code OR Operands S The s operand is any ofr n HL 1X d or 1Y d as defined for the analogous ADD instructions These possible Op Code operand combinations are assembled as follows in the object code OR r 1 0 1 1 0 a r gt ORn 1 1 1 1 0 1 4 04 F6 OR HL 1 0 1 1 0 1 1 0 B6 OR IX d 1 1 0 1 1 1 0 1 DD OR
124. es T States 4 MHz E T 1 5 1 25 Condition Bits Affected None Example Ifthe S flag in the F register is set the contents of the Program Counter are 3535H the contents of the Stack Pointer are 2000H the contents of memory location 2000H are B5H and the contents of memory location 2001H are 18H At execution of RET M the contents of the Stack Pointer is 2002H and the contents of the Program Counter is 18B5H pointing to the address of the next program Op Code to be fetched UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manu RETI Operation Return from Interrupt Op Code RETI 1 1 1 0 1 1 0 1 ED 0 1 00 1 1 10 1 4D Description This instruction is used at the end of a maskable interrupt service routine to Restore the contents of the Program Counter PC analogous to t RET instruction e Signalan I O device that the interrupt routine is completed The RI al he ETI instruction also facilitates the nesting of interrupts allowing higher priority devices to temporarily suspend service of lower priority service routines However this instruction does not enable interrupts that were disabled when the interrupt routine was entered Before doing the RETI instruction the enable interrupt instruction EI should be executed to allow recognition of interrupts after completion of the current service routine M Cycles T States 4 MHz E T 4 14 4 4
125. esult is stored in the Accumulator Instruction M Cycle T States 4 MHz E T SUB r 1 4 1 00 SUB n 2 7 4 3 1 75 SUB HL 2 7 4 3 1 75 SUB IX d 5 19 4 4 3 5 3 4 75 SUB 1Y d 5 19 4 4 3 5 3 4 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if borrow from bit 4 reset otherwise P V is set if overflow reset otherwise N is set C is set if borrow reset otherwise Example If the Accumulator contents are 29H and register D contains 11H at execution of SUB D the Accumulator contains 18H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 150 ILOG SBC A s Operation A lt A s CY Op Code SBC Operands A s The s operand is any of r n HL 1X d or 1Y d as defined for the analogous ADD instructions These possible Op Code operand combinations are assembled as follows in the object code SBCA r 1 0 0 1 1 a r p SBC A n 1 110 1 1 1 1 0 DE SBC A HL 110 011 1 14 41 70 9E SBC A IX d 3 1 98 P999 o ae a BB SBC A IY d 11114 14 14 14po 4 14 FD r identifies registers B C D E H L or A assembled as follows in the object code field above UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 151 Register r B 000 C 001 D 010 E 011 H 100 L 101 A 111 Description The s
126. et Operation Op Code Operands Description Z80 CPU User s Manual 2ILGAG 191 RLA 0 0 0 1 0 1 1 1117 The contents of the Accumulator register A are rotated left 1 bit position through the Carry flag The previous content of the Carry flag is copied to bit 0 Bit 0 is the least significant bit M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected Condition Bits Affected Example S is not affected Z is not affected H is reset P V is not affected N is reset C is data from bit 7 of Accumulator If the contents of the Accumulator and the Carry flag are C 7 6 5 4 3 2 1 0 1 0 1 1 1 0 1 1 0 at execution of RLA the contents ofthe Accumulator and the Carry flag are C 7 6 5 4 3 2 1 0 0 1 1 1 0 1 110 1 UMO08001 1000 Z80 Instruction Set 192 Z80 CPU User s Manual RitLou Operation Op Code Operands Description RRCA 0 0 0 0 1 1 1 1 OF The contents of the Accumulator register A are rotated right 1 bit position Bit 0 is copied to the Carry flag and also to bit 7 Bit 0 is the least significant bit M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected Example S is not affected Z is not affected H is reset P V is not affected N i
127. f register pair AF is number 9900H and the content of register pair AF is number 59444 at instruction EX AF AF the contents of AF is 5944H and the contents of AF is 9900H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 124 Ce EXX Operation BC e BC DE o DE HL gt HL Op Code EXX Operands 1 11011 1 0 0 O0 DY Description Each 2 byte value in register pairs BC DE and HL is exchanged with the 2 byte value in BC DE and HL respectively M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected None Example If the contents of register pairs BC DE and HL are the numbers 445AH 3DA2H and 8859H respectively and the contents of register pairs BC DE and HL are 0988H 9300H and 00E7H respectively at instruction EXX the contents of the register pairs are as follows BC contains 0988H DE contains 9300H HL contains 00E7H BC contains 445AH DE contains 3DA2H and HL contains 8859H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOG 125 EX SP HL Operation H lt gt SP 1 L lt gt SP Op Code EX Operands SP HL 1 1 1 0 0 0 1 1 E3 Description The low order byte contained in register pair HL is exchanged with the contents of the memory address specified by the contents of register pair SP Stack Pointer and the high order byte of HL is exchang
128. f the contents of the Program Counter are 1000H and the contents of the IX Register Pair are 4800H at execution of JP IX the contents of the Program Counter are 4800H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 252 fte JP IY Operation PC IY Op Code JP Operands IY Yd es ee a 0 1 1 1 0 1 010 1 E9 Description The Program Counter register pair PC is loaded with the contents of the TY Register Pair The next instruction is fetched from the location designated by the new contents of the PC M Cycles T States 4 MHz E T 2 8 4 4 2 00 Condition Bits Affected None Example If the contents of the Program Counter are 1000H and the contents of the IY Register Pair are 4800H at execution of JP IY the contents of the Program Counter are 4800H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 253 DJNZ e Operation Op Code DJNZ Operands e 0 0 0 10 0 0 0 0 10 E e2 Description This instruction is similar to the conditional jump instructions except that a register value is used to determine branching The B register is decremented and if a non zero value remains the value of the displacement a is added to the Program Counter PC The next instruction is fetched from the location designated by the new contents of the PC The jump is measured from the address of the instructio
129. h lt nn 1 ddl lt nn Op Code LD Operands dd nn laa old ad 0 iiidid 1 0 1 1 ra n ra n Description The contents of address nn are loaded to the low order portion of register pair dd and the contents of the next highest memory address nn 1 are loaded to the high order portion of dd Register pair dd defines BC DE HL or SP register pairs assembled as follows in the object code Pair dd BC 00 DE 01 HL 10 SP 11 The first n operand after the Op Code is the low order byte of nn M Cycles T States 4 MHz E T 6 20 4 4 3 3 3 3 5 00 Condition Bits Affected None Example If Address 2130H contains 65H and address 2131M contains 78H at instruction LD BC 2130H the BC register pair contains 7865H UMO08001 1000 Z80 Instruction Set LD IX nn Operation I Xh lt nn 1 IXI lt nn Op Code LD Operands IX nn 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 ra n a n Z80 CPU User s Manual 2iLGAG 107 DD 2A Description The contents of the address nn are loaded to the low order portion of Index Register IX and the contents of the next highest memory address nn 1 are loaded to the high order portion of IX The first n operand after the Op Code is the low order byte of nn M Cycles T States 4 MHz E T 6 20 4 4 3 3 3 3 5 00 Condition Bits Affected
130. he contents of address 3000H is 4AH the contents of the Stack Pointer is 3000H and the contents of the Program Counter is 2135H pointing to the address of the first Op Code of the subroutine now to be executed UMO08001 1000 Z80 Instruction Set Operation IF cc true sp 1 lt PCH sp 2 lt PCL pc nn Op Code CALL CALL cc nn Operands cc nn 1 1 lt cc 0 lt a n p ra n p Z80 CPU User s Manual 2iLOU 2b7 Note The first of the two n operands in the assembled object code above is the least significant byte of the 2 byte memory address Description If condition cc is true this instruction pushes the current contents of the Program Counter PC onto the top of the external memory stack then loads the operands nn to PC to point to the address in memory where the first Op Code of a subroutine is to be fetched At the end of the subroutine a RETurn instruction can be used to return to the original program flow by popping the top of the stack back to PC If condition cc is false the Program Counter is incremented as usual and the program continues with the next sequential instruction The stack push is accomplished by first decrementing the current contents of the Stack Pointer SP loading the high order byte of the PC contents to the memory address now pointed to by SP then decrementing SP again and loading the low order byte of the
131. ificant bit M Cycles T States 4 MHz E T 4 15 4 4 4 3 3 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity even reset otherwise N is reset C is data from bit 7 of source register Example If the contents of the HL register pair are 2828H and the contents of memory location 2828H are 7 6 5 4 3 2 1 0 1 0 0 0 1 0 0 0 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 197 atexecution of RLC HL the contents of memory location 2828H and the Carry flag are C 7 6 5 4 3 2 1 0 1 0 0 0 4 0 0 0 1 UMO08001 1000 Z80 Instruction Set 198 Z80 CPU User s Manual ILOG Operation Op Code Operands Description RLC IX d CY m 724 0 E IX d RLC 1X d 1 1 10 1 1 1 0 1 DD 1 10 0 1 011 1 CB 0 0 0 0 0 111 o 06 The contents of the memory address specified by the sum of the contents of the Index Register IX and a two s complement displacement integer d are rotated left 1 bit position The content of bit 7 is copied to the Carry flag and also to bit 0 Bit 0 is the least significant bit M Cycles T States 4 MHz E T 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected Example S is set if result is negative reset
132. ing address from the table The upper eight bits of this pointer is formed from the contents of the I register The 1 register must be loaded with the applicable value by the programmer such as LD I A A CPU reset clears the I register so that it is initialized to zero The lower eight bits of the pointer must be supplied by the interrupting device Only seven bits are required from the interrupting device because the least significant bit must be a zero This is required UMO08001 1000 Overview 26 Z80 CPU User s Manual RitLou because the pointer is used to get two adjacent bytes to form a complete 16 bit service routine starting address and the addresses must always start in even locations Starting Address Pointed to by Interrupt Service Low Order Routine Register Seven Bits From Starting Hien Onder Contents Peripheral Address aes Table Figure 16 Mode 2 Interrupt Response Mode The first byte in the table is the least significant low order portion of the address The programmer must complete this table with the correct addresses before any interrupts are accepted The programmer can change this table by storing it in Read Write Memory which also allows individual peripherals to be serviced by different service routines When the interrupting device supplies the lower portion of the pointer the CPU automatically pushes the program counter onto the stack obtains the st
133. ingle byte instruction Alternatively any UMO08001 1000 Overview Z80 CPU User s Manual 2iLOU 2b other instruction such as a 3 byte call to any location in memory could be executed The number of clock cycles necessary to execute this instruction is two more than the normal number for the instruction This occurs because the CPU automatically adds two wait states to an Interrupt response cycle to allow sufficient time to implement an external daisy chain for priority control Figure 9 and Figure 10 illustrate the detailed timing for an interrupt response After the application of RESET the CPU automatically enters interrupt Mode 0 Mode 1 When this mode is selected by the programmer the CPU responds to an interrupt by executing a restart to location 0038H Thus the response is identical to that for a non maskable interrupt except that the call location is 0038H instead of 0066H The number of cycles required to complete the restart instruction is two more than normal due to the two added wait states Mode 2 This mode is the most powerful interrupt response mode With a single 8 bit byte from the user an indirect call can be made to any memory location In this mode the programmer maintains a table of 16 bit starting addresses for every interrupt service routine This table may be located anywhere in memory When an interrupt is accepted a 16 bit pointer must be formed to obtain the desired interrupt service routine start
134. ion 48 Z80 CPU User s Manual RitLou except that a displacement is added with indexed addressing Register indirect addressing allows for very powerful but simple to implement memory accesses The block move and search commands in the Z80 are extensions of this type of addressing where automatic register incrementing decrementing and comparing has been added The notation for indicating register indirect addressing is to put parentheses around the name of the register that is to be used as the pointer For example the symbol HL specifies that the contents of the HL register are to be used as a pointer to a memory location Often register indirect addressing is used to specify 16 bit operands In this case the register contents point to the lower order portion of the operand while the register contents are automatically incremented to obtain the upper portion of the operand Bit Addressing The Z80 contains a large number of bit set reset and test instructions These instructions allow any memory location or CPU register to be specified for a bit operation through one of three previous addressing modes register register indirect and indexed while three bits in the Op Code specify which of the eight bits is to be manipulated Addressing Mode Combinations Many instructions include more than one operand such as arithmetic instructions or loads In these cases two types of addressing may be employed For example load can us
135. ion Set Z80 CPU User s Manual 2iLOU 167 M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected Example S is set if most significant bit of Accumulator is 1 after operation reset otherwise Z is set if Accumulator is zero after operation reset otherwise H see instruction P V is set if Accumulator is even parity after operation reset otherwise N is not affected C see instruction If an addition operation is performed between 15 BCD and 27 BCD simple decimal arithmetic gives this result 15 27 42 But when the binary representations are added in the Accumulator according to standard binary arithmetic 0001 0101 0010 0111 0011 1100 3C the sum is ambiguous The DAA instruction adjusts this result so that the correct BCD representation is obtained 0011 1100 0000 0110 0100 0010 42 UMO08001 1000 Z80 Instruction Set 168 Z80 CPU User s Manual ILOG Operation Op Code Description CPL Re A CPL opop1 0 111111 J1 2F The contents of the Accumulator register A are inverted one s complement M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected Example S is not affected Z is not affected H is set P V is not affected N is set C is not affected If the contents of the Accumulator are 1011 0100 at execution of CPL the Accumulator contents are 0100 1011 UMO08001 1000 Z80 Instruction Set Operation Op
136. ions are specified as follows in the assembled object code RR r 1 1 00 1 0 1 1 CB 0 0 00 1 lt r gt RR HL 1 1 0 0 1 0 1 1 CB RR IX d 1 1 0 1 1 1 0 1 DD RR IY d 1 1 1 1 1 1 0 1 FD UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 209 r identifies registers B C D E H L or A assembled as follows in the object code field above Register r B 000 C 001 D 010 E 011 H 100 E 101 A 115 Description The contents of operand m are rotated right 1 bit position through the Carry flag The content of bit 0 is copied to the Carry flag and the previous content of the Carry flag is copied to bit 7 Bit 0 is the least significant bit Instruction M Cycles T States 4 MHz E T RRr 2 8 4 4 2 00 RR HL 4 15 4 4 4 3 3 75 RR IX d 6 23 4 4 3 5 4 3 5 75 RR 1Y d 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity even reset otherwise N is reset C is data from bit 0 of source register Example If the contents of the HL register pair are 4343H and the contents of memory location 4343H and the Carry flag are 7 6 5 4 3 2 1 0 C 1 1 0 1 1 1 0 1 0
137. is added to a two s complement displacement d to point to an address in memory The contents of this address is then added to the contents of the Accumulator and the result is stored in the Accumulator M Cycles T States 4 MHz E T 5 16 4 4 3 5 3 4 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if overflow reset otherwise N is reset C is set if carry from bit 7 reset otherwise If the Accumulator contents are 11H the Index Register IX contains 1000H and if the contents of memory location 1005H is 22H at execution Of ADD A IX 5H the contents of the Accumulator are 33H UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual ADD A IY d A lt A ID d ADD A IY d IS A O a a Y e a aD 1 00 0 0 1 1 0 86 d The contents of the Index Register register pair IY is added to a two s complement displacement d to point to an address in memory The contents of this address is then added to the contents of the Accumulator and the result is stored in the Accumulator M Cycles T States 4 MHz E T 5 16 4 4 3 5 3 4 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwis
138. ister pair contain OFFDH register B contains zero and a group of bytes is written to the peripheral device mapped to I O port address 07H in the following sequence 03H A9H 51H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 288 ILOG UMO08001 1000 Z80 Instruction Set
139. its are supplied by the interrupting device This address points to the first of two sequential bytes in a table where the address of the service routine is located The CPU automatically obtains the starting address and performs a CALL instruction to this address lt q Pointer to Interrupt Table Register is Upper Address Peripheral Supplies Lower Address Address of Interrupt Service Routine UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual Table 14 Input Group Register Immed Indir n c Input Input IN Register A ED Destination Address 7B B ED 40 C ED 48 D ED 50 E ED 58 H ED 60 L ED 68 INI input amp Register HL ED Block inc HL Dec B Indir A2 Input INIR INP Inc HL ED Commands Dec B repeat IF B40 B2 IND input amp Inc ED Dec HL Dec B AA INDR input Dec HL ED Dec B repeat IF B40 BA UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual zian 73 Table 15 8 Bit Arithmetic and Logic Source Register Register Indir A B C D E JH L HL 110UT Immed n Reg c ED JED ED ED ED ED ED Ind 79 41 49 51 59 61 69 11OUT output ED Block inc HL dec B A3 Output 11OUT output ED Command dec B repeat if B 0 B3 11OUT output ED dec HL and B AB 11OUTDR outpu
140. jo 1 Fl Description The top two bytes of the external memory LIFO last in first out Stack are popped to Index Register IX The Stack Pointer SP register pair holds the 16 bit address of the current top of the Stack This instruction first loads to the low order portion of IX the byte at the memory location corresponding to the contents of SP then SP is incremented and the contents of the corresponding adjacent memory location are loaded to the high order portion of IX The SP is incremented again M Cycles T States 4 MHz E T 4 14 4 4 3 3 3 50 Condition Bits Affected None Example Ifthe Stack Pointer contains 1000H memory location 1000H contains 55H and location 1001H contains 33H the instruction POP IX results in Index Register IX containing 3355H and the Stack Pointer containing 1002H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 121 POP IY Operation IYH lt SP X1 TYL lt SP Op Code POP Operands IY 1 1 0 1 1 1 0 1 DD 4 a dao B Description The top two bytes of the external memory LIFO last in first out Stack are popped to Index Register IY The Stack Pointer SP register pair holds the 16 bit address of the current top of the Stack This instruction first loads to the low order portion of IY the byte at the memory location corresponding to the contents of SP then SP is incremented and the contents of the corresponding adjac
141. location addressed by the contents of the DE register pair Then both these register pairs are incremented and the BC Byte Counter register pair is decremented M Cycles T States 4 MHz E T 4 16 4 4 3 5 4 00 Condition Bits Affected Example S is not affected Z is not affected H is reset P V is set if BC 1 z 0 reset otherwise N is reset C is not affected Ifthe HL register pair contains 1111H memory location 1111H contains byte 88H the DE register pair contains 2222H the memory location 2222H contains byte 66H and the BC register pair contains 7H then the instruction LDI results in the following contents in register pairs and memory addresses HL contains 1112H 1111H contains 88H DE contains 2223H 2222H contains 88H BC contains 6H UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual 2iLOU 129 LDIR DE lt HL DE lt DE 1 HL lt HL 1 BC Fo BC 1 LDIR B8 1 1 1 0 1 110 1 ED 1 0 1 1 0 0 0 0 BO This 2 byte instruction transfers a byte of data from the memory location addressed by the contents of the HL register pair to the memory location addressed by the DE register pair Both these register pairs are incremented and the BC Byte Counter register pair is decremented If decrementing causes the BC to go to zero the instruction is terminated If BC is not zero the program counter is dec
142. lows directly after the Op Code Table 3 specifies the 16 bit load operations The extended addressing feature covers all register pairs Register indirect operations specifying the stack pointer are the PUSH and POP instructions The mnemonic for these instructions is PUSH and POP These differ from other 16 bit loads in that the stack pointer is automatically decremented and incremented as each byte is pushed onto or popped from the stack respectively For example the instruction PUSH AF isa single byte instruction with the Op Code of F5H During execution this sequence is generated Decrement SP LD SP A Decrement SP LD SP F The external stack now appears as UM008001 1000 Z80 CPU Instruction Description 54 Z80 CPU User s Manual RitLou SP F H4 Top of stack SP 1 A The PoP instruction is the exact reverse of a PUSH All PUSH and POP instructions utilize a 16 bit operand and the high order byte is always pushed first and popped last PUSH BC is PUSH 8 then C PUSH DE is PUSH D then E PUSH HL is PUSH H then L POP HL is POP L then H The instruction using extended immediate addressing for the source requires two bytes of data following the Op Code For example LD DE 0659H appears as Address A E6 Op Code A 1 07 Operand In all extended immediate or extended addressing modes the low order byte always appears first after the Op Code Table
143. metic and Logic eese 73 Table 19 Miscellaneous CPU Control 0 000 e ee eee 73 UM008001 1000 List of Tables xiii Z80 CPU User s Manual List of Tables UMO08001 1000 Z80 CPU User s Manual Z amp iLu g XV Manual Objectives This user manual describes the architecture and instruction set of the Z80 CPU About This Manual ZiLOG recommends that the user read and understand everything in this manual before setting up and using the product However we recognize that users have different styles of learning some will want to set up and use their new evaluation kit while they read about it others will open these pages only to check on a particular specification Therefore we have designed this manual to be used either as a how to procedural manual or a reference guide to important data Intended Audience This document is written for ZiLOG customers who are experienced at working with microprocessors or in writing assembly code or compilers Manual Organization The Z80 CPU User s Manual is divided into four chapters Overview Presents an overview of the User s Manual Architecture Pin descriptions timing and Interrupt Response Hardware and Software Implementation Presents examples of the User s Manual hardware and software UMO08001 1000 Manual Objectives xvi User s Manual Z80 CPU BibL Z80 CPU Instruction Description Presents the User s Manual instruction
144. n Op Code and has a range of 126 to 129 bytes The assembler automatically adjusts for the twice incremented PC If the result of decrementing leaves B with a zero value the next instruction executed is taken from the location following this instruction if B 0 M Cycles T States 4 MHz E T 3 13 5 3 5 3 25 If B 0 M Cycles T States 4 MHz E T 2 8 5 3 2 00 Condition Bits Affected None UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 254 RitLou Example A typical software routine is used to demonstrate the use of the DINZ instruction This routine moves a line from an input buffer INBUF to an output buffer OUTBUF It moves the bytes until it finds a CR or until it has moved 80 bytes whichever occurs first LD 8 80 Set up counter LD HL Inbuf Set up pointers LD DE Outbuf LOOP LID A HL Get next byte from input buffer LD DE A Store in output buffer CP ODH PIS it a CR JR Z DONE Yes finished INC HL Increment pointers INC DE DJNZ LOOP Loop back if 80 bytes have not been moved DONE UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 255 Call And Return Group CALL nn Operation SP 1 lt PCH SP 2 lt PCL PC lt nn Op Code CALL Operands nn 1 1 0 0 1 1 0 1 CD a n ra n The first of the two n operands in the assembled object code above is the l
145. n the CPU Then after the byte counter B is decremented the contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports Register B may be used as a byte counter and its decremented value is placed on the top half A8 through A15 of the address bus at this time Next the byte to be output is placed on the data bus and written to the selected peripheral device Finally the register pair HL is decremented M Cycles T States 4 MHz E T 4 16 4 5 3 4 4 00 Condition Bits Affected Example S is unknown Z is set if B 1 0 reset otherwise H is unknown P V is unknown N is set C is not affected If the contents of register C are 07H the contents of register B are 10H the contents of the HL register pair are 1000H and the contents of memory location 1000H are 59H at execution of OUTD register B contains OFH the HL register pair contains OFFFH and byte 59H is written to the peripheral device mapped to I O port address 07H UMO08001 1000 Z80 Instruction Set 286 Z80 CPU User s Manual ILOG Operation Op Code Description OTDR C HL B lt B 1 HL HL 1 OTDR iis lsatal1 alo 07 ED 1po 1 1 1 o 1 1 1 8BB The contents of the HL register pair are placed on the address bus to select a location in memory The byte contained in this memory location is tempo rarily stored
146. nown Z is set if B 1 0 reset otherwise H is unknown P V is unknown N is set C is not affected If the contents of register C are 07H the contents of register B are 10H the contents of the HL register pair are 100014 and the contents of memory address 1000H are 5914 then after thee execution of OUTI register B contains OFH the HL register pair contains 1001H and byte 59H is written to the peripheral device mapped to I O port address 07H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2ILOU 283 OTIR Operation C HL B B 1 HL lt HL 1 Op Code OTIR 1 1 1 0 1 1 0 1 ED 1 011 1 0 0 1 1 B3 Description The contents of the HL register pair are placed on the address bus to select a location in memory The byte contained in this memory location is tempo rarily stored in the CPU Then after the byte counter B is decremented the contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports Register B may be used as a byte counter and its decremented value is placed on the top half A8 through A15 of the address bus at this time Next the byte to be output is placed on the data bus and written to the selected peripheral device Then register pair HL is incremented If the decremented B register is not zero the Program Counter PC is decremented by two and the instruction is r
147. ns sufficient Read Write storage requiring no external RAM memory I O circuits allow computer systems to interface with the external devices In Figure 1 the output is an 8 bit control vector and the input is an 8 bit status word The input data can be gated to the data bus using any standard three state driver while the output data can be latched with any type of stan dard TTL latch A Z80 PIO serves as the I O circuit This single circuit attaches to the data bus as indicated and provides the required 16 bits of TTL compatible I O Refer to the Z80 CPU Peripherals User s Manual for details on the operation ofthis circuit This powerful computer is built with only three LSI circuits a simple oscillator and a single 5V power supply UMO08001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual Adding RAM Most computer systems require some external Read Write memory for data storage and stack implementation Figure 2 illustrates how 256 bytes of static memory are added to the previous example in Figure 1 The memory space is assumed to be organized as follows Address 0000H 03FFH 0400H O4FFFH In this diagram the address space is described in hexadecimal notation Address bit A10 separates the ROM space from the RAM space allowing this address to be used for the chip select function For larger amounts of external ROM or RAM a simple TTL decoder is required to form the chip selects Address Bus
148. o the corresponding location of memory Finally the byte counter is decremented and register pair HL is incremented M Cycles T States 4 MHz E T 4 16 4 5 3 4 4 00 Condition Bits Affected Example S is unknown Z is set if B 1 0 reset otherwise H is unknown P V is unknown N is set C is not affected If the contents of register C are 07H the contents of register B are 10H the contents of the HL register pair are 1000H and byte 7BH is available at the peripheral device mapped to I O port address 07H At execution of INI memory location 1000H contains 7BH the HL register pair contains 1001H and register B contains OFH UMO08001 1000 Z80 Instruction Set Operation Op Code Description Z80 CPU User s Manual ILOG INIR HL C B B 1 HL HL 1 11111io 1 1 o 1 ED 1 0 1 1 0 0 1 o He The contents of register C are placed on the bottom half A0 through A7 of the address bus to select the I O device at one of 256 possible ports Register B is used as a byte counter and its contents are placed on the top half A8 through A15 of the address bus at this time Then one byte from the selected port is placed on the data bus and written to the CPU The contents of the HL register pair are placed on the address bus and the input byte is written to the corresponding location of memory Then register pair HL is incremented the byte counter is decremente
149. oe Operation Op Code Operands Description ADD IX pp IX IX pp ADD IX pp 1 1 0 11 1 0 1 DD 0 1p p 1 0 0 1 The contents of register pair pp any of register pairs BC DE IX or SP are added to the contents of the Index Register IX and the results are stored in IX Operand pp is specified as follows in the assembled object code Register Pair pp BC 00 DE 01 IX 10 SP 11 M Cycles T States 4 MHz E T 4 15 4 4 4 3 3 75 Condition Bits Affected Example S is not affected Z 1s not affected H is set if carry out of bit 11 reset otherwise P V is not affected N is reset C is set if carry from bit 15 reset otherwise Ifthe contents of Index Register IX are 333H and the contents of register pair BC are 5555H at execution of ADD IX BC the contents of IX are 8888H UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual 2ILGAG 183 ADD IY rr IY IY rr ADD IY rr The contents of register pair rr any of register pairs BC DE IY or SP are added to the contents of Index Register IY and the result is stored in IY Operand rr is specified as follows in the assembled object code Register Pair rr BC 00 DE 01 IY 10 SP 11 M Cycles T States 4 MHz E T 4 15 4 4 4 3 3 75 Condition Bits Affected Example S is not affected Z is n
150. of the C register One major advantage of using the C register as a pointer to the I O device is that it allows multiple I O ports to share common software driver routines This advantage is not possible when the address is part of the Op Code if the routines are stored in ROM Another feature of these input instructions is the automatic setting of the flag register making additional operations unnecessary to determine the state of the input data The parity state is one example The Z80 CPU includes single instructions that can move blocks of data up to 256 bytes automatically to or from any I O port directly to any memory location In conjunction with the dual set of general purpose registers these instructions provide fast I O block transfer rates The power of this I O instruction set is demonstrated by the Z80 CPU providing all required floppy disk formatting on double density floppy disk drives on an interrupt driven basis For example the CPU provides the preamble address data and enables the CRC codes Finally the basic CPU control instructions allow various options and modes This group includes instructions such as setting or resetting the interrupt enable flip flop or setting the mode of interrupt response UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 44 RitLou Addressing Modes Most of the Z80 instructions operate on data stored in internal CPU registers external memory or in the I O ports Add
151. on Op Code Operands Description INC r rer l INC Register r is incremented and register r identifies any of the registers A B C D E H or L assembled as follows in the object code Register r A 111 B 000 C 001 D 010 E 011 H 100 L 101 M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if r was 7FH before operation reset otherwise N is reset C is not affected If the contents of register D are 28H at execution of INC D the contents of register D are 29H UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual 2iLOU 161 INC HL HL lt HL 1 INC HL opo 11 0 1 0 0 34 The byte contained in the address specified by the contents of the HL register pair is incremented M Cycles T States 4 MHz E T 3 11 4 4 3 2 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if HL was 7FH before operation reset otherwise N is reset C is not affected If the contents of the HL register pair are 3434H and the contents of address 3434H are 82H at executi
152. on o INC HL memory location 3434H contains 83H UMO08001 1000 Z80 Instruction Set 162 Z80 CPU User s Manual RitLou Operation Op Code Operands Description INC IX d IX d IX4d 1 INC X d 111 1014 14 1 0 1 DD 0 0 1 1 0 1 0 0 3 t d The contents of the Index Register IX register pair IX are added to a two s complement displacement integer d to point to an address in memory The contents of this address are then incremented M Cycles T States 4 MHz E T 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if IX d was 7FH before operation reset otherwise N is reset C is not affected If the contents of the Index Register pair IX are 2020H and the memory location 2030H contains byte 34H at execution of INC IX 10H the contents of memory location 2030H is 35H UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual 2ILOU 163 INC IY d IY d lt IY d 1 INC IY d i ti aili i ilo a FD 0 01 1 0 1 0 0 34 a d The contents of the Index Register IY register pair IY are added to a two s complement displacement integer d to point to an addre
153. ontaining 39H and the Stack Pointer containing 0100H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 127 EX SP IY Operation IYH lt SP 1 TYL lt SP Op Code EX Operands SP IY fi poo ate oso px ges e 1 1 1 0 0 0 1 1 E3 Description The low order byte in Index Register IY is exchanged with the contents of the memory address specified by the contents of register pair SP Stack Pointer and the high order byte of IY is exchanged with the next highest memory address SP 1 M Cycles T States 4 MHz E T 6 23 4 4 3 4 3 5 5 75 Condition Bits Affected None Example If the Index Register IY contains 3988H the SP register pair contains 0100H memory location 0100H contains byte 90H and memory location 0101H contains byte 48H then the instruction EX SP IY results in the IY register pair containing number 4890H memory location 0100H containing 88H memory location 0101H containing 39H and the Stack Pointer containing 0100H UMO08001 1000 Z80 Instruction Set 128 Z80 CPU User s Manual RitLou Operation Op Code Operands Description LDI DE HL DE lt DE 1 HL lt HL 1 BC lt BC 1 LDI SP HL 1 1 1 0 1 1 0 1 ED 1 0 1 0 0 0 0 0 AO A byte of data is transferred from the memory location addressed by the contents of the HL register pair to the memory
154. ontents of operand m The content of bit 0 is copied to the Carry flag and the previous content of bit 7 is unchanged Bit 0 is the least significant bit Instruction M Cycles T States 4 MHz E T SRAr 2 8 4 4 2 00 SRA HL 4 15 4 4 4 3 3 75 SRA IX d 6 23 4 4 3 5 4 3 5 75 SRA 1Y d 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity is even reset otherwise N is reset C is data from bit 0 of source register Example If the contents of the Index Register IX are 10004 and the contents of memory location 1003H are 7 6 5 4 3 2 1 0 1 Oj 1 1 1 0 0 0 UM008001 1000 Z80 Instruction Set 216 Z80 CPU User s Manual RitLou at execution of SRA 1X 3H the contents of memory location 1003H and the Carry flag are 7 6 5 4 3 2 1 1 1 0 1 1 1 0 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 217 SRL m Operation 0 70 CY Op Code SRL Operands m The operand m is any of r HL 1X d or 1Y d as defined for the analogous RLC instructions These possible Op Code operand combinations are specified as follows in the assembled object code UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 218 ILOG SRLr 11 1100 1 0 1 1 CB
155. operand along with the Carry flag C in the F register is subtracted from the contents of the Accumulator and the result is stored in the Accumulator Instruction M Cycles T States 4 MHz E T SBC A r 1 4 1 00 SBC A n 2 7 4 3 1 75 SBC A HL 2 7 4 3 1 75 SBC A IX d 5 19 4 4 3 5 3 4 75 SBC A Y d 5 19 4 4 3 5 3 4 75 Condition Bits Affected S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if borrow from bit 4 reset otherwise P V is reset if overflow reset otherwise N is set C is set if borrow reset otherwise Example If the Accumulator contains 16H the carry flag is set the HL register pair contains 3433H and address 3433H contains 05H at execution of SBC A HL the Accumulator contains 10H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 152 zicou AND s Operation A A AS Op Code AND Operands S The s operand is any ofr n HL 1X d or 1Y d as defined for the analogous ADD instructions These possible Op Code operand combinations are assembled as follows in the object code AND r 1 0 1 0 0 r ANDn 1 1 41 0 0 14 1 0 E6 AND HL 1 0 1 0 0 1 41 0 A6 AND IX d 1 4 0 1 144 4 0 7 14 DD AND IY d 1 1 1 1 1 1 0 1 FD 110 110 0 144 4 0 A6 d r identifies regist
156. ot affected H is set if carry out of bit 11 reset otherwise P V is not affected N is reset C is set if carry from bit 15 reset otherwise Ifthe contents of Index Register IY are 333H and the contents of register pair BC are 555H at execution of ADD IY BC the contents of IY are 8888H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 194 Coe INC ss Operation ss ss 1 Op Code INC Operands ss 0 0 s s 0 0 1 1 Description The contents of register pair ss any of register pairs BC DE HL or SP are incremented Operand ss is specified as follows in the assembled object code Register Pair ss BC 00 DE 01 HL 10 SP 11 M Cycles T States 4 MHz E T 1 6 1 50 Condition Bits Affected None Example If the register pair contains 1000H after the execution of INC HL HL contains 1001H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual zicea 185 INC IX Operation IX IX 1 Op Code INC Operands IX 1 10 1 1 1 0 1 DD opo 1 0 0 o 1 1 2 Description The contents of the Index Register IX are incremented M Cycles T States 4 MHz E T 2 10 4 6 2 60 Condition Bits Affected None Example Ifthe Index Register IX contains the integer 3300H at execution of INC IX the contents of Index Register IX are 3301H UMO08001 1000 Z80 Instruction Set 186 Z80 CPU User s Manual ILOG INC IY Operation
157. otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity even reset otherwise N is reset C is data from bit 7 of source register If the contents of the Index Register IX are 1000H and the contents of memory location 1022H are UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 199 7 6 5 4 3 2 1 0 1 0 0 0 1 0 0 0 at execution of RLC IX 2H the contents of memory location 1002H and the Carry flag are C 7 6 5 4 3 2 1 0 1 0 0 0 1 0 0 0 1 UMO08001 1000 Z80 Instruction Set 200 Z80 CPU User s Manual RitLou Operation Op Code Operands Description RLC IY d CY Pa 724 0 IY d RLC IY d E SESMESEBENSC MESE 1 11 0 0 1 0 1 4 1 CB 0 0 0 0 0 1 1 0 06 The contents of the memory address specified by the sum of the contents of the Index Register IY and a two s complement displacement integer d are rotated left 1 bit position The content of bit 7 is copied to the Carry flag and also to bit 0 Bit O is the least significant bit M Cycles T States 4 MHz E T 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is reset P V is set if parity even reset otherwise N is reset C is
158. pair DE are loaded to the Accumulator M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected None Example If the DE register pair contains the number 30A2H and memory address 30A2H contains byte 22H then the instruction LD A DE results in byte 22H in register A UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 94 RitLou LD A nn Operation A nn Op Code LD Operands A nn 0 0 1 1 1 0 1 0 3A aa n rt n Description The contents of the memory location specified by the operands nn are loaded to the Accumulator The first n operand after the Op Code is the low order byte of a 2 byte memory address M Cycles T States 4 MHz E T 4 13 4 3 3 3 3 25 Condition Bits Affected None Example If the contents of nn is number 8832H and the content of memory address 8832H is byte 04H at instruction LD A nn byte 04H is in the Accumulator UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 95 LD BC A Operation BC A Op Code LD Operands BC A 0 0 0 0 0 0 1 0 02 Description The contents of the Accumulator are loaded to the memory location specified by the contents of the register pair BC M Cycles T States 4 MHz E T 2 7 4 3 1 75 Condition Bits Affected None Example If the Accumulator contains 7AH and the BC register pair contains 12
159. placement must follow directly With immediate addressing the actual operand follows directly For example the instruction AND 07H is Address A E6 Op Code A 1 07 Operand Assuming that the accumulator contained the value F3H the result of 03H is placed in the accumulator Accumulator before operation1111 0011 F3H Operand 0000 0111 07H Result to Accumulatoro000 0011 03H The Add instruction ADD performs a binary add between the data in the source location and the data in the accumulator The Subtract SUB performs a binary subtraction When the Add with Carry is specified ADC or the Subtract with Carry SBC then the Carry flag is also added or subtracted respectively The flags and decimal adjust instruction DAA in the Z80 allow arithmetic operations for Miultiprecision packed BCD numbers e Miultiprecision signed or unsigned binary numbers e Miultiprecision two s complement signed numbers UM008001 1000 Z80 CPU Instruction Description 60 Z80 CPU User s Manual Loa Other instructions in this group are logical and AND logical or OR exclusive or XOR and compare CP Five general purpose arithmetic instructions operate on the accumulator or carry flag These five are listed in Table 8 The decimal adjust instruction can adjust for subtraction as well as addition making BCD arithmetic operations simple Note that to allow for this operation the flag N is used This fl
160. programmer selects the accumulator and flag pair with a single exchange instruction so that it is possible to work with either pair General Purpose Registers Two matched sets of general purpose registers each set containing six 8 bit registers may be used individually as 8 bit registers or as 16 bit register pairs One set is called BC DE and HL while the complementary set is called BC DE and HL At any one time the programmer can select either set of registers to work through a single exchange command for the entire set In systems that require fast interrupt response one set of general purpose registers and an ACCUMULATOR FLAG register may be reserved for handling this fast routine One exchange command is executed to switch routines This greatly reduces interrupt service time by eliminating the requirement for saving and retrieving register contents in the external stack during interrupt or subroutine processing These general purpose registers are used for a wide range of applications They also simplify programing specifically in ROM based systems where little external read write memory is available Arithmetic Logic Unit ALU The 8 bit arithmetic and logical instructions of the CPU are executed in the ALU Internally the ALU communicates with the registers and the external data bus by using the internal data bus Functions performed by the ALU include UMO08001 1000 Overview 6 Z80 CPU User s Manual RitLou
161. ption The contents of the register pair HL are loaded to the Stack Pointer SP M Cycles T States 4 MHz E T 6 20 4 4 3 3 3 3 5 00 Condition Bits Affected None Example If the register pair HL contains 442EH at instruction LD SP HL the Stack Pointer also contains 442EH UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 114 zikon LD SP IX Operation SP lt IX Op Code LD Operands SP 1X piel at 1 19 4 DD 1 1 1 1 1 010 1 F9 Description The 2 byte contents of Index Register IX are loaded to the Stack Pointer SP M Cycles T States 4 MHz E T 2 10 4 6 2 50 Condition Bits Affected None Example If the contents of the Index Register IX are 98DAH at instruction LD SP IX the contents of the Stack Pointer are also 98DAH UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 115 LD SP IY Operation SP IY Op Code LD Operands SP IY id aa A do te FB 1 1 1 1 1 010 1 F9 Description The 2 byte contents of Index Register IY are loaded to the Stack Pointer SP M Cycles T States 4 MHz E T 2 10 4 6 2 50 Condition Bits Affected None Example If Index Register IY contains the integer A227H at instruction LD SP IY the Stack Pointer also contains A227H UMO08001 1000 Z80 Instruction Set 116 Z80 CPU User s Manual RitLou Operation Op Code Operands
162. r locations from 480 The assembly language statement is JR NZ 4 The resulting object code and final PC value is UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 249 Location Instruction 47C lt PC after jump 47D ATE 47F 480 20 481 FA two s complement 6 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 250 ANT JP HL Operation pc lt hL Op Code JP Operands HL 1 1 1 0 1 0 0 1 E9 Description The Program Counter register pair PC is loaded with the contents of the HL register pair The next instruction is fetched from the location designated by the new contents of the PC M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected None Example If the contents of the Program Counter are 1000H and the contents of the HL register pair are 4800H at execution of JP HL the contents of the Program Counter are 4800H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual ZiLOo 251 JP IX Operation pc lt IX Op Code JP Operands 1X 1 1 0 1 14 1 o 1 DD 1 1 1 0 1 01 0 1 E9 Description The Program Counter register pair PC is loaded with the contents of the IX Register Pair The next instruction is fetched from the location designated by the new contents of the PC M Cycles T States 4 MHz E T 2 8 4 4 2 00 Condition Bits Affected None Example I
163. re 2005H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual zitea 189 DEC IY Operation IY IY 1 Op Code DEC Operands IY MAN A MOUSE 0 011 0 1 011 1 2B Description The contents of the Index Register IY are decremented M Cycles T States 4 MHz E T 2 10 4 6 2 50 Condition Bits Affected None Example If the contents of the index Register IY are 764 9H at execution of DEC IY the contents of index Register IY are 7648H UMO08001 1000 Z80 Instruction Set 190 Z80 CPU User s Manual RitLou Rotate and Shift Group RLCA Operation CY 7 4 0 mp Op Code RLCA Operands 0 0 0 0 0 1 1 1 07 Description The contents of the Accumulator register A are rotated left 1 bit position The sign bit bit 7 is copied to the Carry flag and also to bit 0 Bit 0 is the least significant bit M cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected S is not affected Z is not affected H is reset P V is not affected N is reset C is data from bit 7 of Accumulator Example If the contents of the Accumulator are 7 6 5 4 3 2 1 0 1 0 0 0 1 0 0 0 at execution of RLCA the contents of the Accumulator and Carry flag are C 7 6 5 4 3 2 1 0 1 0 0 0 4 0 0 0 1 UMO08001 1000 Z80 Instruction S
164. remented by two and the instruction is repeated Interrupts are recognized and two refresh cycles are executed after each data transfer When BC is set to zero prior to instruction execution the instruction loops through 64 Kbytes For BC 0 M Cycles T States 4 MHz E T 5 21 4 4 4 3 5 5 5 25 For BC 0 M Cycles T States 4 MHz E T 4 16 4 4 3 5 4 00 Condition Bits Affected S is not affected Z is not affected H is reset P V is reset N is reset C is not affected UMO08001 1000 Z80 Instruction Set 130 Z80 CPU User s Manual RitLou Example If the HL register pair contains 11111H the DE register pair contains 2222H the BC register pair contains 0003H and memory locations have these contents 1111H 1112H 1113H contains 88H contains 36H contains A5H 2222H contains 66H 2223H contains 59H 2224H contains C5H then at execution of LDIR the contents of register pairs and memory locations are HL DE BC 1111H 1112H 1113H UMO08001 1000 contains 1114H contains 2225H contains 0000H contains 88H 2222H contains 88H contains 36H 2223H contains 36H contains A5H 2224H contains A5H Z80 Instruction Set Operation Op Code LDD Operands Z80 CPU User s Manual 2iLOU 131 LDD DE lt HL DE DE 1 HL HL 1 BC lt BC 1 1 0 1 ED 0 0 0 A8 Description This 2 byte instruction transfers a byte of
165. rementing causes BC to go to zero or if A HL the instruction is terminated If BC is not zero and A HL the program counter is decremented by two and the instruction is repeated Interrupts are recognized and two refresh cycles are executed after each data transfer If BC is set to zero before instruction execution the instruction loops through 64 Kbytes if no match is found For BC z0and A HL M cycles T States 4 MHz E T 5 21 4 4 3 5 5 5 25 For BC 0 and A HL M Cycles T States 4 MHz E T 4 16 4 4 3 5 4 00 Condition Bits Affected S is set if result is negative reset otherwise Z is set if A equals HL reset otherwise H is set if borrow from bit 4 reset otherwise P V is set if BC 1 does not equal 0 reset otherwise N is set C is not affected UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 136 zILOSG Example If the HL register pair contains 1111H the Accumulator contains F3H the Byte Counter contains 0007H and memory locations have these contents 1111H contains 52H 1112H contains 00H 1113H contains F3H Then at execution of CPIR the contents of register pair HL is 1114H the contents of the Byte Counter is 0004H the P V flag in the F register sets and the Z flag in the F register sets UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual 2iLOU 137 CPD A HL HL HL 1 BC BC 1 CPD 11
166. ressing refers to how the address of this data is generated in each instruction This section is a brief summary of the types of addressing used in the Z80 while subsequent sections detail the type of addressing available for each instruction group Immediate In this mode of addressing the byte following the Op Code in memory contains the actual operand Op Code Lone or Two Bytes Op Code D7 DO Examples of this type of instruction is loading the accumulator with a constant where the constant is the byte immediately following the Op Code Immediate Extended This mode is an extension of immediate addressing in that the two bytes following the Op Codes are the operand Op Code One or Two Bytes Op Code Low Order Op Code High Order Examples of this type of instruction is loading the HL register pair 16 bit register with 16 bits two bytes of data UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2iLOU 45 Modified Page Zero Addressing The Z80 has a special single byte CALL instruction to any of eight locations in page zero of memory This instruction which is referred to as a restart sets the PC to an effective address in page zero The value of this instruction is that it allows a single byte to specify a complete 16 bit address where commonly called subroutines are located thus saving memory space Op Code One Byte B7 BO Effective Address is B5 B4 B3
167. ription The contents of the Interrupt Vector Register I are loaded to the Accumulator M Cycles T States MHz E T 2 9 4 5 2 25 Condition Bits Affected S is set if I Register is negative reset otherwise Z is set if I Register is zero reset otherwise H is reset P V contains contents of IFF2 N is reset C is not affected If an interrupt occurs during execution of this instruction the Parity flag contains a 0 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGAG 99 LDA R Operation A R Op Code LD Operands A R E ee a onse a at 0 1 0 1 1 1 1 1 SF Description The contents of Memory Refresh Register R are loaded to the Accumulator M Cycles T States MHz E T 2 9 4 5 2 25 Condition Bits Affected S is set if R Register is negative reset otherwise Z is set if R Register is zero reset otherwise H is reset P V contains contents of IFF2 N is reset C is not affected If an interrupt occurs during execution of this instruction the parity flag contains a 0 UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 100 ZiLaG LD I A Operation Ic A Op Code LD Operands LA 1 1 1 0 1 1 0 1 ED 0 1 0 0 0 1 1 1 47 Description The contents of the Accumulator are loaded to the Interrupt Control Vector Register I M Cycles T States MHz E T 2 9 4 5 2 25 Condition Bits Affected None UMO08001 1000 Z80
168. s UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2iLOU 71 In the instructions IN A and OUT n A the I O device address n appears in the lower half of the address bus A7 A0 while the accumulator content is transferred in the upper half of the address bus In all register indirect input output instructions including block I O transfers the content of register C is transferred to the lower half of the address bus device address while the content of register B is transferred to the upper half of the address bus CPU Control Group Table 16 illustrates the six general purpose CPU control instructions The NOP is a do nothing instruction The HALT instruction suspends CPU operation until a subsequent interrupt is received while the DI and E1 are used to lock out and enable interrupts The three interrupt mode commands set the CPU to any ofthe three available interrupt response modes as follows If Mode 0 is set the interrupting device can insert any instruction on the data bus and allow the CPU to execute it Mode 1 is a simplified mode where the CPU automatically executes a restart RST to location 0038H so that no external hardware is required the old PC content is pushed onto the stack Mode 2 is the most powerful because it allows for an indirect call to any location in memory With this mode the CPU forms a 16 bit memory address where the upper eight bits are the content of register I and the lower eight b
169. s 0 reset otherwise H is set P V is unknown H is reset C is not affected Example If the contents of Index Register are 2000H and bit 6 in memory location 2004H contains 1 at execution of BIT 6 1Y 4H the Z flag and the F register still contain 0 and bit 6 in memory location 20048 still contains 1 Bit 0 in memory location 20044 is the least significant bit UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 232 zikon SET b r Operation rb 1 Op Code SET Operands b r Description Bit b in register r any of registers B C D E H L or A is set Operands b and r are specified as follows in the assembled object code Bit b Register r 0 000 B 000 1 001 C 001 2 010 D 010 3 011 E 011 4 100 H 100 5 101 L 101 6 110 A 111 7 111 M Cycles T States4 MHz E T 2 8 4 4 2 00 Condition Bits Affected None Example At execution of SET 4 A bit 4 in register A sets Bit 0 is the least significant bit UM008001 1000 Z80 Instruction Set Z80 CPU User s Manual ZiLOO 233 SET b HL Operation HL b lt 1 Op Code SET Operands b HL 1 1 0 0 1 0 1 1 CB 1 1 a b gt r gt Description Bit b in the memory location addressed by the contents of register pair HL is set Operand b is specified as follows in the assembled object code Bit Tested b 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111
170. s and Shifts Source T A B C D E F L HL IX d Y d A Rotate ur PEE ot qn CY b7 a bo Left Circular Rotate Shift Rotate RCL CB CB CB CB CB CB CB CB DD FD RLCA BE Right Circular 07 00 01 02 03 04 06 OE ICB CB d d 06 06 Rotate RRC CB CB CB CB CB CB CB CB DD FD RRCA P E ten OF 08 09 Joa o6 OC OD OE ICB CB d d 0E OE Rotate RL CB CB CB CB CB CB CB CB DD FD RLA Right 17 10 11 12 13 14 15 16 CB CB d d 16 16 Shift CY RR CB CB CB CB CB CB CB CB DD FD RRA Left Arithmetic IF 18 19 lA IB IC ID IE ICB CB d d IE JIE Shift Right Arithmetic SLA CB CB CB CB CB CB CB CB DD FD 27 20 21 22 23 24 25 26 CB CB d d 26 26 aruit Right Logical SRA CB CB CB CB CB CB CB CB DD FD i 2F 28 29 2A 2B 2C 2D 2E CB CB 0 d d Y Rotate 2E ACE babp b7b4 bs bo HL Digit SRL CB CB CB CB CB CB CB CB DD FD ACC Left 3F 38 39 3A 3B 3C 3D 3E CB CB d d 3E 3E 1 ED HL Rotate 6F Digit ACC A Right ED 67 Bit Manipulation The ability to set reset and test individual bits in a register or memory location is needed in almost every program These bits may be flags in a general purpose software routine indications of external control UMO08001 1000 Z80 CPU Instruction Description 64 Z80 CPU User s Manual RitLou conditions or data packed into memory locations making memory utiliza
171. s reset C is data from bit 0 of Accumulator If the contents of the Accumulator are 7 6 5 4 3 2 1 0 0 0 0 1 0 0 0 1 at execution of RRCA the contents of the Accumulator and the Carry flag are 7 6 5 4 3 2 1 0 C 1 0 0 1 1 0 0 0 1 UMO08001 1000 Z80 Instruction Set Operation Op Code Operands Description Z80 CPU User s Manual 2ILGAG 193 RRA RRA 0 0 0 1 11 1 1 1F The contents of the Accumulator register A are rotated right 1 bit position through the Carry flag The previous content of the Carry flag is copied to bit 7 Bit 0 is the least significant bit M Cycles T States 4 MHz E T 1 4 1 00 Condition Bits Affected Example S is not affected Z is not affected H is reset P V is not affected N is reset C is data from bit 0 of Accumulator If the contents of the Accumulator and the Carry Flag are 7 6 5 4 3 2 1 0 C 1 111 0 0 00 1 at execution of RRA the contents of the Accumulator and the Carry flag are 7 6 5 4 3 2 1 0 C 0 11 1 0 0 00 1 UMO08001 1000 Z80 Instruction Set 194 Z80 CPU User s Manual ILOG Operation Op Code Operands Description RLC r CY a 7 4 0 lt lt
172. sing is required for a program to jump from any location in memory to any other location or load and store data in any memory location During extended addressing use specify the source or destination address of an operand This notation nn is used to indicate the content of memory at nn where nn is the 16 bit address specified in the instruction The two bytes of address nn are used as a pointer to a memory location The use of the parentheses always means that the value enclosed within them is used as a pointer to a memory location For example 3200 refers to the contents of memory at location 1200 Indexed Addressing In this type of addressing the byte of data following the Op Code contains a displacement that is added to one of the two index registers the Op Code specifies which index register is used to form a pointer to memory The contents of the index register are not altered by this operation Op Code Op Code mm Byte Op Code Operand added to index register to form a pointer to memory Displacement An example of an indexed instruction is to load the contents of the memory location Index Register Displacement into the accumulator UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2iLOU 47 The displacement is a signed two s complement number Indexed addressing greatly simplifies programs using tables of data because the index register can point to the start of any table
173. ss in memory The contents of this address are then incremented M Cycles T States 4 MHz E T 6 23 4 4 3 5 4 3 5 75 Condition Bits Affected Example S is set if result is negative reset otherwise Z is set if result is zero reset otherwise H is set if carry from bit 3 reset otherwise P V is set if 1Y d was 7FH before operation reset otherwise N is reset C is not affected If the contents of the Index Register pair IY are 2020H and the memory location 2030H contain byte 34H at execution of INC IY 10H the contents of memory location 2030H are 35H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 164 zikon Operation m lt m 1 Op Code DEC Operands m DEC m The m operand is any of r HL 1X d or 1Y d as defined for the analogous INC instructions These possible Op Code operand combinations are assembled as follows in the object code DEC r DEC HL DEC IX d DEC IY d 0 0 a r 1 0 1 0 0 1 1 0 110 1 35 1 110 1 1 1 0 1 DD 0 0 1 1 0 110 1 35 a gt 1 1 1 1 1 110 1 FD 0 0 1 1 0 1 0 14 35 i r identifies registers B C D E H L or A assembled as follows in the object code field above Register t umunay UMO08001 1000 000 001 010 011 100 101 111 Z80 Instruction Set Z80 CPU User s Manual 2iLOU 165 Description The byte specified by the m
174. struction Description 61 Z80 CPU User s Manual 62 RitLou Table 9 16 Bit Arithmetic Rotate and Shift Source BC DE HL SP IX IY Destination HL o 19 29 s ADD IX DD DD DD DD 09 19 39 29 IY FD FD FD FD 09 19 39 29 ADD with carry and set HL ED ED ED ED flags ADC 4A 5A 6A 7A SUB with carry and set HL ED ED ED ED flags SBC 42 52 62 72 Increment INC DD FD 23 23 Decrement DEC DD FD 2B 2B A major feature of the Z80 is to rotate or shift data in the accumulator any general purpose register or any memory location All the rotate and shift Op Codes are depicted in Figure 10 Also included in the Z80 are arithmetic and logical shift operations These operations are useful in a wide range of applications including integer multiplication and division Two BCD digit rotate instructions RRD and RLD allow a digit in the accumulator to be rotated with the two digits in a memory location pointed to by register pair HL See Figure 10 These instructions allow for efficient BCD arithmetic UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual ziLag 63 Table 10 Rotate
175. t dec ED HL and B repeat IF B40 BB Port Destination Address Table 16 Miscellaneous CPU Control NOP HALT Disable INT EI Enable INT EI Set INT mode 0 IMO Set INT mode 1 ED Call to location 0038H IM1 56 Set INT mode 2 ED indirect call using register I and B IM2 SE bits from INTER device as a pointer 8080A mode UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 74 RitLou UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2ILOU 75 Z80 Instruction Set Z80 Assembly Language The assembly language allows the user to write a program without concern for memory addresses or machine instruction formats It uses symbolic addresses to identify memory locations and mnemonic codes Op Codes and operands to represent the instructions Labels symbols are assigned to a particular instruction step in a source program to identify that step as an entry point for use in subsequent instructions Operands following each instruction represent storage locations registers or constant values The assembly language also includes assembler directives that supplement the machine instruction A pseudo op for example is a statement that is not translated to a machine instruction but rather is interpreted as a directive that controls the assembly process A program written in assembly language is called a source program which consists of symbolic comm
176. t bits of the indirect address while the interrupting device provides the lower eight bits of the address This feature allows interrupt routines to be dynamically located anywhere in memory with minimal access time to the routine Memory Refresh Register R The Z80 CPU contains a memory refresh counter enabling dynamic memories to be used with the same ease as static memories Seven bits of this 8 bit register are automatically incremented after each instruction fetch The eighth bit remains as programmed resulting from an LD R A instruction The data in the refresh counter is sent out on the lower portion of the address bus along with a refresh control signal while the CPU is decoding and executing the fetched instruction This mode of refresh is transparent to the programmer and does not slow the CPU operation The programmer can load the R register for testing purposes but this register is normally not used by the programmer During refresh the contents of the 1 register are placed on the upper eight bits of the address bus UMO08001 1000 Overview Z80 CPU User s Manual Accumulator and Flag Registers The CPU includes two independent 8 bit accumulators and associated 8 bit flag registers The accumulator holds the results of 8 bit arithmetic or logical operations while the FLAG register indicates specific conditions for 8 bit or 1 16 bit operations such as indicating whether or not the result of an operation is equal to zero The
177. t require minor modifications to the examples given here ZiLOG Application Notes are available describing how the Z80 CPU is interfaced with most popular dynamic RAM Figure 5 illustrates the logic necessary to interface 8 Kbytes of dynamic RAM using 18 pin 4K dynamic memories This logic assumes that the RAMs are the only memory in the system so that A12 is used to select between the two pages of memory During refresh time all memories in the system must be read The CPU provides the correct refresh address on lines AO through A6 When adding more memory to the system it is necessary to replace only the two gates that operate on A12 with a decoder that oper ates on all required address bits Address buffers and data bus buffers are generally required for larger systems UMO08001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual 32 RitLou 4K x 8 RAM Array Page 1 Data Bus 1000 to 1FFFF 4K x 8 RAM Array Page 0 0000 to OFFFF Figure 5 Interfacing Dynamic RAMs UMO08001 1000 Hardware and Software Implementation Examples Z80 CPU User s Manual 2iLOU 33 SOFTWARE IMPLEMENTATION EXAMPLES Overview of Software Features The Z80 instruction set provides the user with a large number of operations to control the Z80 CPU The main alternate and index registers can hold arithmetic and logical operations form memory addresses or act as fast access storage for frequently used data Information
178. t time does not exist for an I O port to decode its address and activate the WAIT line ifa wait is required Also without this wait state it is difficult to design MOS I O devices that can operate at full CPU speed During this wait state time the WAIT request signal is sampled UMO08001 1000 Overview Z80 CPU User s Manual ZiLOo 15 During a read I O operation the RD line is used to enable the addressed port onto the data bus just as in the case of a memory read For I O write operations the WR line is used as a clock to the I O port Automatically inserted WAIT state Figure 7 Input or Output Cycles Bus Request Acknowledge Cycle Figure 8 illustrates the timing for a Bus Request Acknowledge cycle The BUSREQ signal is sampled by the CPU with the rising edge of the last clock period of any machine cycle If the BUSREQ signal is active the CPU sets its address data and tristate control signals to the high impedance state with the rising edge of the next clock pulse At that time any external device can control the buses to transfer data between memory and I O devices This operation is generally known as Direct Memory Access DMA using cycle stealing The maximum time for the CPU to respond to a bus request is the length of a machine cycle and the external controller can UMO08001 1000 Overview Z80 CPU User s Manual 16 RiLou maintain control of the bus for as many clock cycles as is required If very
179. tains 22H memory address 1005H contains 33H and the Stack Pointer contains 1005H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2ILOU 119 POP qq Operation qqH lt SP 1 qqL lt SP Op Code POP Operands qq 1 1 q q 0 0 0 1 Description The top two bytes of the external memory LIFO last in first out Stack are popped to register pair qq The Stack Pointer SP register pair holds the 16 bit address of the current top of the Stack This instruction first loads to the low order portion of qq the byte at memory location corresponding to the contents of SP then SP is incriminated and the contents of the corresponding adjacent memory location are loaded to the high order portion of qq and the SP is now incriminated again The operand qq identifies register pair BC DE HL or AF assembled as follows in the object code Pair r BC 00 DE 01 HL 10 AF 11 M Cycles T States 4 MHz E T 3 10 4 3 3 2 50 Condition Bits Affected None Example If the Stack Pointer contains 1000H memory location 1000H contains 55H and location 1001H contains 33H the instruction POP HL results in register pair HL containing 3355H and the Stack Pointer containing 1002H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 120 TEE POP IX Operation IXH lt SP 1 IXL lt SP Op Code POP Operands IX 1 1 0 1 1 1 0 1 DD 1 1 1 ojo o
180. the incrementer Stack Pointer SP The stack pointer holds the 16 bit address of the current top of a stack located anywhere in external system RAM memory The external stack memory is organized as a last in first out LIFO file Data can be pushed onto the stack from specific CPU registers or popped off of the stack to specific CPU registers through the execution of PUSH and POP instructions The data popped from the stack is always the last data pushed onto it The UMO08001 1000 Overview Z80 CPU User s Manual RitLou stack allows simple implementation of multiple level interrupts unlimited subroutine nesting and simplification of many types of data manipulation Two Index Registers IX and IY The two independent index registers hold a 16 bit base address that is used in indexed addressing modes In this mode an index register is used as a base to point to a region in memory from which data is to be stored or retrieved An additional byte is included in indexed instructions to specify a displacement from this base This displacement is specified as a two s complement signed integer This mode of addressing greatly simplifies many types of programs especially where tables of data are used Interrupt Page Address Register 1 The Z80 CPU can be operated in a mode where an indirect call to any memory location can be achieved in response to an interrupt The 1 register is used for this purpose and stores the high order eigh
181. tion LD IX 45A2H the Index Register contains integer 45A2H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 104 zikon LD IY nn Operation IY lt nn Op Code LD Operands IY nn ra n re n Description Integer nn is loaded to the Index Register IY The first n operand after the Op Code is the low order byte M Cycles T States 4 MHz E T 4 14 4 4 3 3 3 50 Condition Bits Affected None Example At instruction LD IY 7733H the Index Register IY contains the integer 7733H UMO08001 1000 Z80 Instruction Set LD HL nn Operation H lt nn 1 L nn Op Code LD Operands HL nn 0 01 0 1 0 1 r n n Z80 CPU User s Manual 2iLGAG 105 2A Description The contents of memory address nn are loaded to the low order portion of register pair HL register L and the contents of the next highest memory address nn 1 are loaded to the high order portion of HL register H The first n operand after the Op Code is the low order byte of nn M Cycles T States 4 MHz E T 5 16 4 3 3 3 3 4 00 Condition Bits Affected None Example If address 4545H contains 37H and address 4546H contains A1H at instruction LD HL 4545H the HL register pair contains A137H UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 106 TEE LD dd nn Operation dd
182. tion more efficient The Z80 can set reset or test any bit in the accumulator any general purpose register or any memory location with a single instruction Table 11 lists the 240 instructions that are available for this purpose Register addressing can specify the accumulator or any general purpose register on which the operation is to be performed Register indirect and indexed addressing are available to operate on external memory locations Bit test operations set the Zero flag Z if the tested bit is a zero Jump Call and Return Table 12 lists all the jump call and return instructions implemented in the Z80 CPU A jump is a branch in a program where the program counter is loaded with the 16 bit value as specified by one of the three available addressing modes Immediate Extended Relative or Register Indirect Notice that the jump group has several conditions that can be specified before the jump is made If these conditions are not met the program merely continues with the next sequential instruction The conditions are all dependent on the data in the flag register The immediate extended addressing is used to jump to any location in the memory This instruction requires three bytes two to specify the 16 bit address with the low order address byte first followed by the high order address byte For example an unconditional jump to memory location 3E32H is Address A C3 Op Code A 1 32 Low Order Address A 2
183. to as T time cycles and the operations are referred to as M machine cycles Figure 4 illustrates how a typical instruction is series of specific M and T cycles Notice that this instruction consists of three machine cycles M1 M2 and M3 The first machine cycle of any instruction is a fetch cycle which is four five or six T cycles long unless lengthened by the WAIT signal which is described in the next section The fetch cycle M1 is used to fetch the opcode of the next instruction to be executed Subsequent machine cycles move data between the CPU and memory or I O devices and they may have anywhere from three to five T cycles again they may be lengthened by wait states to synchronize the external devices to the CPU The following paragraphs describe the timing which occurs within any of the basic machine cycles During T2 and every subsequent Tw the CPU samples the WAIT line with the falling edge of Clock If the WAIT line is active at this time another WAIT state is entered during the following cycle Using this technique the read can be lengthened to match the access time of any type of memory device UMO08001 1000 Overview 12 Z80 CPU User s Manual RitLou CLK Machine Cycle M1 Opcode Fetch M2 Memory Read M3 Memory Write Instruction Cycle Figure 4 Basic CPU Timing Example Instruction Fetch Figure 5 depicts the timing during an M1 opcode fetch cycle The PC is plac
184. to be set reset or tested with a single instruction For example the most significant bit of register H can be reset This group is especially useful in control applications and for controlling software flags in general purpose programming The JUMP CALL and RETURN instructions are used to transfer between various locations in the user s program This group uses several different techniques for obtaining the new program counter address from specific external memory locations A unique type of call is the RESTART instruction This instruction actually contains the new address as a part of UM008001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2iLOU 43 the 8 bit Op Code This is possible because only eight separate addresses located in page zero of the external memory may be specified Program jumps may also be achieved by loading register HL IX or IY directly into the PC thus allowing the jump address to be a complex function of the routine being executed The input output group of instructions in the Z80 allow for a wide range of transfers between external memory locations or the general purpose CPU registers and the external I O devices In each case the port number is provided on the lower eight bits of the address bus during any I O transaction One instruction allows this port number to be specified by the second byte of the instruction while other Z80 instructions allow it to be specified as the content
185. truction coupled with the Z80 peripheral devices implementation simplifies the normal return from nested interrupt Without this feature the following software sequence is necessary to inform the interrupting device that the interrupt routine is completed Disable Interrupt Prevent interrupt before routine is exited LDA n Notify peripheral that service OUT n A routine is complete Enable Interrupt Return This seven byte sequence can be replaced with the one byte ET instruction and the two byte RETI instruction in the Z80 This is important because interrupt service time often must be minimized UMO08001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 66 RiLou Table 11 Bit Manipulation Group Register Addressing Reg Indir Indexed A 8 C D E H L HL IX d IY4d Bit DD FD Test 0 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 Bit 47 40 41 42 43 44 45 46 d d 46 46 DD FD 1 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 4F 48 49 4A 48 4C 4D 4E d d 4E 4E DD FD 2 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 57 50 51 52 53 54 55 56 d d 56 56 DD FD 3 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 SF 58 59 5A 5B 5C 5D SE d d 46 46 DD FD 4 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 67 60 61 62 63 64 65 66 d d 66 66 DD FD 5 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 6F 68 69 6A 68 6C 6D 6E d d 6E 6E DD FD 6 C8 C8 C8 C8 C8 C8 C8 C8 C8 C8 TE 70 71 72 73 74 75 76 d d 76 76 DD DD 7 C8 C8 C8 C8 C8 C8 CS C8 C8 C8 TF 78 79 TA 78 7C 7D 7E d
186. truction DI the maskable interrupt is disabled until it is subsequently re enabled by an EI instruction The CPU does not respond to an Interrupt Request INT signal UMO08001 1000 Z80 Instruction Set Operation Op Code Description El IFF lt 1 EI 1 1 1 1 1 0 Z80 CPU User s Manual 2iLOU 175 FB The enable interrupt instruction sets both interrupt enable flip flops IFFI and IFF2 to a logic 1 allowing recognition of any maskable interrupt Note that during the execution of this instruction and the following instruction maskable interrupts are disabled M Cycles T States 1 Condition Bits Affected None Example 4 When the CPU executes instruction El enabled at execution of the RI UMO08001 1000 4 MHz E T 1 00 RETI the maskable interrupt is ETI instruction Z80 Instruction Set Z80 CPU User s Manual 176 ANTE IM O Operation Op Code IM Operands 0 1 1 1 0 1 1 0 1 ED 0 1 0 1 0 1 1 o 56 Description The IM 0 instruction sets interrupt mode 0 In this mode the interrupting device can insert any instruction on the data bus for execution by the CPU The first byte of a multi byte instruction is read during the interrupt acknowledge cycle Subsequent bytes are read in by a normal memory read sequence M Cycles T States 4 MHz E T 2 8 4 4 2 00 Condition Bits Affected None
187. upt INT and a non maskable interrupt NMI The non maskable interrupt cannot be disabled by the programmer and is accepted whenever a periph eral device requests it This interrupt is generally reserved for very impor tant functions that can be enabled or disabled selectively by the programmer This routine allows the programmer to disable the interrupt during periods when his program has timing constraints that do not allow interrupt In the Z80 CPU there is an interrupt enable flip flop IFF that is set or reset by the programmer using the Enable Interrupt ET and Disable Interrupt DI instructions When the IFF is reset an interrupt cannot be accepted by the CPU The two enable flip flops are IFF1 and IFF2 IFF1 IFF2 Disables interrupts Temporary storage from being accepted location for IFF1 The state of IFF1 is used to inhibit interrupts while IFF2 is used as a tempo rary storage location for IFF1 UMO08001 1000 Overview Z80 CPU User s Manual 2iLOU 23 A CPU reset forces both the IFF1 and IFF2 to the reset state which disables interrupts Interrupts can be enabled at any time by an EI instruction from the programmer When an El instruction is executed any pending interrupt request is not accepted until after the instruction following EI is executed This single instruction delay is necessary when the next instruction is a return instruction Interrupts are not allowed until a return is complete
188. uring MREQ time M1 Cycle CLK A45 Ag MREQ Figure 5 Instruction Op Code Fetch Memory Read Or Write Figure 6 illustrates the timing of memory read or write cycles other than an Op Code fetch cycle These cycles are generally three clock periods long unless wait states are requested by the memory through the WAIT signal The MREQ signal and the RD signal are used the same as in the fetch cycle In a memory write cycle the MREQ also becomes active when the address bus is stable so that it can be used directly as a chip enable for dynamic memories The WR line is active when data on the UMO08001 1000 Overview 14 Z80 CPU User s Manual Z RiLou data bus is stable so that it can be used directly as a R W pulse to virtually any type of semiconductor memory Furthermore the WR signal goes inactive one half T state before the address and data bus contents are changed so that the overlap requirements for almost any type of semiconductor memory type is met Memory Read Cycle Memory Write Cycle MI eee CLK Ais Ao MREQ RD WR D7 Do WAIT Figure 6 Memory Read or Write Cycle Input or Output Cycles Figure 7 illustrates an I O read or I O write operation During I O operations a single wait state is automatically inserted The reason is that during I O operations the time from when the IORQ signal goes active until the CPU must sample the WAIT line is very short Without this extra state sufficien
189. us to Mode 0 During reset time the address and data bus go to a high impedance state and all control output signals go to the inactive state Notice that RESET must be active for a minimum of three full clock cycles before the reset operation is complete RFSH Refresh output active Low RFSH together with MREQ indicates that the lower seven bits of the system s address bus can be used as a refresh address to the system s dynamic memories WAIT WAIT input active Low WAIT communicates to the CPU that the addressed memory or I O devices are not ready for a data transfer The CPU continues to enter a WAIT state as long as this signal is active Extended WAIT periods can prevent the CPU from properly refreshing dynamic memory WR Write output active Low tristate WR indicates that the CPU data bus holds valid data to be stored at the addressed memory or I O location CLK Clock input Single phase MOS level clock UMO08001 1000 Overview Z80 CPU User s Manual 2iLOU 11 TIMING Overview The Z80 CPU executes instructions by stepping through a precise set of basic operations These include Memory Read or Write e I O Device Read or Write Interrupt Acknowledge All instructions are series of basic operations Each of these operations can take from three to six clock periods to complete or they can be lengthened to synchronize the CPU to the speed of external devices The clock periods are referred
190. with the third byte being the displacement d For example a load register E with the operand pointed to by IX with an offset of 8 is written LID E IX 8 The instruction sequence for this in memory is Address A DD Op Code A 1 5E Displacement A 2 nm s Operand The two extended addressing instructions are also three byte instructions For example the instruction to load the accumulator with the operand in memory location 6F32H is written LID A 6F 32H and its instruction sequence is Address A 3A Op Code A 1 32 Low Order Address A 2 6F High Order Address Notice that the low order portion of the address is always the first operand The load immediate instructions for the general purpose 8 bit registers are two byte instructions The instruction load register H with the value 36H is written LD H 36H and its sequence is Address A 26 Op Code A 1 36 Operand UM008001 1000 Z80 CPU Instruction Description Z80 CPU User s Manual 2iLOU 53 Loading a memory location using indexed addressing for the destination and immediate addressing for the source requires four bytes For example LD IX 15 21H appears as Address A DD Op Code A 1 36 A42 F1 One or Two Bytes Displacement 15 in Signed Two s Complement Operand to Load A 3 2 pire Notice that with any indexed addressing the displacement always fol
191. y 4 M Cycles T States 4 MHz E T 15 4 4 4 3 3 75 Condition Bits Affected None Example If the contents of the HL register pair are 3000H at execution of SET 4 HL bit 4 in memory location 3000H is 1 Bit 0 in memory location 3000H is the least significant bit UMO08001 1000 Z80 Instruction Set 234 Z80 CPU User s Manual RitLou Operation Op Code Operands Description SET b IX d IX d b 1 SET b IX d Bit b in the memory location addressed by the sum of the contents of the IX register pair and the two s complement integer d is set Operand b is specified as follows in the assembled object code Bit Tested b 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 y 6 M Cycles T States 4 MHz E T 23 4 4 3 5 4 3 5 75 Condition Bits Affected None Example If the contents of Index Register are 2000H at execution of SET 0 IX 3H bit 0 in memory location 2003H is 1 Bit 0 in memory location 2003H is the least significant bit UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 2iLGOG 235 SET b IY d Operation IY d b lt 1 Op Code SET Operands b IY d 1 14 4 4744 14 0 14 FD 1 1 0 0 1 0 1 1 CB lt lt d 1 1 lt b gt 1 1 0 Description Bit b in the memory location addressed by the sum of the contents of the IY register pair and the two s complement displa
192. yte counter and its contents are placed on the top half A8 through A15 of the address bus at this time Then one byte from the selected port is placed on the data bus and written to the CPU The contents of the HL register pair are placed on the address bus and the input byte is written to the corresponding location of memory Then HL and the byte counter are decremented If decrementing causes B to go to zero the instruction is terminated If B is not zero the PC is decremented by two and the instruction repeated Interrupts are recognized and two refresh cycles are executed after each data transfer When B is set to zero prior to instruction execution 256 bytes of data are input IfB 0 M Cycles T States 4 MHz E T 5 21 4 5 3 4 5 5 25 fB 0 M Cycles T States 4 MHz E T 4 16 4 5 3 4 4 00 Condition Bits Affected S is unknown Z is set H is unknown P V is unknown N is set UMO08001 1000 Z80 Instruction Set Z80 CPU User s Manual 278 ZiLaGg C is not affected Example If the contents of register C are 07H the contents of register B are 03H the contents of the HL register pair are 1000H and the following sequence of bytes are available at the peripheral device mapped to I O port address 07H 51H A9H 03H then at execution of INDR the HL register pair contains OFFDH register B contains zero and memory locations contain the following OFFEH contains 03H OFFFH contains A9H 1000H contains 51H UMO

Download Pdf Manuals

image

Related Search

Related Contents

Auto Pro Gun Manual - Magnum Venus Products  Samsung HT-DS630 User Manual  取扱説明書  HP PAVILLION ZD7000 User's Manual    The IMAGE Inventory: A User Guide  Electrolux ER7620C Refrigerator  Fiber Loop Converter Reference Guide  LG 60PV450 Product manual  ControlCenter WebCenter - InfraLogic WebCenter Login  

Copyright © All rights reserved.
Failed to retrieve file