Pppdddff
![]()
|
Команда T Код Пояснения C Z P S N H LD r1,r2 4 01 r1 r2 r1 ← r2 LD r,(HL) 7 01 r 110 r ← (HL) LD (HL),r 7 01 110 r (HL) ← r LD r,n 7 00 r 110 r ← n - n - LD (HL),n 10 00 110 110 (HL) ← n - n - LD r,(IX+d) 19 11 011 101 r ← (IX+d) 01 r 110 - d - LD r,(IY+d) 19 11 111 101 r ← (1Y+d) 01 r 110 - d - LD {IX+d),r 19 11 011 101 (IX+d) ← r 01 110 r - d - LD (IY+d),r 19 11 111 101 (IY+d) ← r 01 110 r - d - LD (IX+d),n 19 11 011 101 (IX+d) ← n 00 110 110 - d - - n - LD (IY+d),n 19 11 111 101 (IY+d) ← n 00 110 110 - d - - n - LD A,(BC) 7 00 001 010 A ← (BC) LD A,(DE) 7 00 011 010 A ← (DE) LD A,(nn) 13 00 111 010 A ← (nn) - n - - n - LD (BC),А 7 00 000 010 (BC) ← А LD (DE),A 7 00 010 010 (DE) ← A LD (nn),A 13 00 110 010 (nn) ← A - n - - n - LD A,I 9 11 101 101 A ← I ? IF ? 0 0 01 010 111 LD A,R 9 11 101 101 A ← R ? IF ? 0 0 01 011 111 LD I,A 9 11 101 101 I ← A 01 000 111 LD R,A 11 101 101 R ← A 01 001 111 Таблица 5.1.2. 16-битовые команды загрузки Команда T Код Пояснения C Z P S N H LD dd,nn 10 00 dd0 001 dd ← nn - n - - n - LD IX,nn 14 11 011 101 IX ← nn 00 100 001 - n - - n - LD IY,nn 14 11 111 101 IY ← nn 00 100 001 - n - - n - LD HL,(nn) 16 00 101 010 H ← (nn+1) L ← (nn) - n - - n - Команда T Код Пояснения C Z P S N H LD dd,(nn) 20 11 101 101 dd H ← (nn+1) 01 dd1 011 dd L ← (nn) - n - - n - LD IX,(nn) 20 11 011 101 IX H ← (nn+1) 00 101 010 IX L ← (nn) - n - - n - LD IY,(nn) 20 11 111 101 IY H ← (nn+1) 00 101 010 IY L ← (nn) - n - - n - LD (nn),HL 16 00 100 010 (nn+1) ← H (nn) ← L - n - - n - LD (nn),dd 20 11 101 101 (nn+1) ← dd H 01 dd0 011 (nn) ← dd L - n - - n - LD (nn),IX 20 11 011 101 (nn+1) ← IX H 00 100 010 (nn) ← IX L - n - - n - LD (nn),IY 20 11 111 101 (nn+1) ← IY H 00 100 010 (nn) ← IY L - n - - n - LD SP,HL 6 11 111 001 SP ← HL LD SP,IX 10 11 011 001 SP ← IX 11 111 001 LD SP,IY 10 11 111 001 SP ← IY 11 111 001 PUSH qq 11 11 qq0 101 (SP-2) ← qq L (SP-1) ← qq H PUSH IX 15 11 011 101 (SP-2) ← IX L 11 100 101 (SP-1) ← IX H PUSH IY 15 11 111 101 (SP-2) ← IY L 11 100 101 (SP-1) ← IY H POP qq 10 11 qq0 001 qq H ← (SP+1) qq L ← (SP) POP IX 14 11 011 101 IX H ← (SP+1) 11 100 001 IX L ← (SP) POP IY 14 11 111 101 IY H ← (SP+1) 11 100 001 IY L ← (SP) Таблица 5.1.З. Команды обработки блоков Команда T Код Пояснения C Z P S N H LDI 16 11 101 101 (DE) ← (HL) ? 0 0 10 100 000 затем DE ← DE+1 P=0, если BC-1=0 HL ← HL+1 P=1, если BC-1≠0 BC ← BC-1 LDIR 21 11 101 101 (DE) ← (HL) 0 0 0 (16) 10 110 000 затем DE ← DE+1 HL ← HL+1 BC ← BC-1 и повтор до BC=0 LDD 16 11 101 101 (DE) ← (HL) ? 0 0 10 101 000 затем DE ← DE-1 P=0, если BC-1=0 HL ← HL-1 P=1, если BC-1≠0 BC ← BC-1 Команда T Код Пояснения C Z P S N H LDDR 21 11 101 101 (DE) ← (HL) 0 0 0 (16) 10 111 000 затем DE ← DE-1 HL ← HL-1 BC ← BC-1 и повтор до BC=0 CPI 16 11 101 101 A-(HL)=? ? ? ? 1 ? затем HL ← HL+1 Z=1, если A=(HL) ВС←ВС-1 Z=0, если A≠(HL) Р=0, если BC-1=0 Р=1, если BC-1≠0 CPIR 21 11 101 101 A-(HL)=? ? ? ? 1 ? (16) 10 110 001 затем HL ← HL+1 Z=1, если A=(HL) ВС←ВС-1 Z=0, если A≠(HL) и повтор по BC=0 Р=0, если BC-1=0 или A=(HL) Р=1, если BC-1≠0 CPD 16 11 101 101 A-(HL)=? ? ? ? 1 ? 10 101 001 затем HL ← HL-1 Z=1, если A=(HL) ВС←ВС-1 Z=0, если A≠(HL) Р=0, если BC-1=0 Р=1, если BC-1≠0 CPDR 21 11 101 101 A-(HL)=? ? ? ? 1 ? (16) 10 111 001 затем HL ← HL-1 Z=1, если A=(HL) ВС←ВС-1 Z=0, если A≠(HL) и повтор по BC=0 Р=0, если BC-1=0 или A=(HL) Р=1, если BC-1≠0 Таблица 5.1.4. 8-битовые арифметические и логические команды Команда T Код Пояснения C Z P S N H ADD A,r 4 10 000 r A ← A+r ? ? V ? 0 ? ADD A,n 7 11 110 A ← A+n ? ? V ? 0 ? - n - ADD A,(HL) 7 10 000 110 A ← A+(HL) ? ? V ? 0 ? ADD A,(IX+d) 19 11 011 101 A ← A+(IX+d) ? ? V ? 0 ? 10 000 110 - d - ADD A,(IY+d) 19 11 111 101 A ← A+(IY+d) ? ? V ? 0 ? 10 000 110 - d - ADC A,s 001 A ← A+s+C ? ? V ? 0 ? SUB s 010 A ← A-s ? ? V ? 1 ? SBC A,s 011 A ← A-s-C ? ? V ? 1 ? AND s 100 A ← A AND s 0 ? P ? 0 1 OR s 110 A ← A OR a 0 ? P ? 0 0 XOR s 101 A ← A XOR a 0 ? P ? 0 0 CP s 111 A-s=? ? ? V ? 1 ? Код подставляется вместо 000 в командах INC r 4 00 r 100 г ← r+1 ? V ? 0 ? INC (HL) 11 00 110 100 (HL) ← (HL) + 1 ? V ? 0 ? INC (IX+d) 23 11 011 101 (IX+d) ← (IX+d)+1 ? V ? 0 ? 00 110 100 - d - INC (IY+d) 23 11 111 101 (IY+d) ← (IY+d)+1 ? V ? 0 ? 00 110 100 - d - DEC t 101 t ← t-1 ? V ? 1 ? Код подставляется вместо 100 в командах INC Команда T Код Пояснения C Z P S N H DAA 4 00 100 111 Двоично-десятичная коррекция A ? ? P ? ? CPL 4 00 101 111 A ← инверсия A 1 1 NEG 8 11 101 101 А ← -А ? ? V ? 1 ? 01 000 100 CCF 4 00 111 111 C ← инверсия C ? 0 X SCF 4 00 110 111 C ← 1 1 0 0 Таблица 5.1.5. 16 битовые арифметические команды Команда T Код Пояснения C Z P S N H ADD HL,dd 11 00 dd1 001 HL ← HL+dd ? 0 X ADC HL,dd 15 11 101 101 HL ← HL+dd+C ? ? V ? 0 X 01 dd1 010 SBC HL,dd 15 11 101 101 HL ← HL-dd-C ? ? V ? 1 X 01 dd0 010 ADD IX,pp 15 11 011 101 IX ← IX+pp ? 0 X 00 pp1 001 ADD IY,rr 15 11 111 101 IY ← IY+rr ? 0 X 00 rr1 001 INC dd 6 00 dd0 011 dd ← dd+1 INC IX 10 11 011 101 IX ← IX+1 00 100 011 INC IY 10 11 111 101 IY ← IY+1 00 100 011 DEC dd 6 00 dd1 011 dd ← dd-1 DEC IX 10 11 011 101 IX ← IX-1 00 101 011 DEC IY 10 11 111 101 IY ← IY-1 00 101 011 Таблица 5.1.6. Команды переходов Команда T Код Пояснения C Z P S N H JP nn 10 11 000 011 PC ← nn - n - - n - JP cc,nn 10 11 cc 010 PC ← nn, если - n - условие выполняется - n - PC ← PC+3, если нет JR e 12 00 011 000 PC ← PC+e - e-2 - JR C,e 12 00 111 000 PC ← PC+e, еcли C=1 (7) - e-2 - PC ← PC+2, если C=0 JR NC,e 12 00 110 000 PC ← PC+e, если C=0 (7) - e-2 - PC ← PC+2, если C=1 JR Z,e 12 00 101 000 PC ← PC+e, если Z=1 (7) - e-2 - PC ← PC+2, если Z=0 JR NZ,e 12 00 100 000 PC ← PC+e, если Z=0 (7) - e-2 - PC ← PC+2, если Z=1 JP (HL) 4 11 101 001 PC ← HL JP (IX) 8 11 011 101 PC ← IX 11 101 001 PC ← IY JP (IY) 8 11 111 101 11 101 001 Команда T Код Пояснения C Z P S N H DJNZ e 13 00 010 000 B ← B-1, (8) - e-2 - при B=0 PC ← PC+2 при B≠0 PC ← PC+e Таблица 5.1.7 Команды для работы с битами Команда T Код Пояснения C Z P S N H BIT b,r 8 11 001 011 Z ← инверсия r b ? X X 0 1 01 b r BIT b,(HL) 12 11 001 011 Z ← инверсия (HL) b ? X X 0 1 01 b 110 BIT b,(IX+d) 20 11 011 101 Z ← инверсия (IX+d) b ? X X 0 1 11 001 011 - d - 01 b 110 BIT b,(IY+d) 20 11 111 101 Z ← инверсия (IY+d) b ? X X 0 1 11 001 011 - d - 01 b 110 SET b.r 8 11 001 011 r b ← 1 11 b r SET b,(HL) 15 11 001 011 (HL) b ← 1 11 b 110 SET b,(IX+d) 23 11 011 101 (IX+d) b ← 1 11 001 011 - d - 11 b 110 SET b,(IY+d) 23 11 111 101 (IY+d) b ← 1 11 001 011 - d - 11 b 110 RES b,t 10 t b ← 0. Код 10 подставляется вместо 11 в командах SET Таблица 5.1.8 Команды обмена Команда T Код Пояснения C Z P S N H EX DE,HL 4 11 101 011 DE ↔ HL EX AF,AF’ 4 00 001 000 AF ↔ AF’ EXX 4 11 011 001 BC ↔ ВС’ DE ↔ DE’ HL ↔ HL’ EX (SP),HL 19 11 100 011 H ↔ (SP+1) L ↔ (SP) EX (SP),IX 23 11 011 101 IX H ↔ (SP+1) 11 100 011 IX L ↔ (SP) EX (SP),IY 23 11 111 101 IY H ↔ (SP+1) 11 100 011 IY L ↔ (SP) Таблица 5.1.9. Команды ввода вывода Команда T Код Пояснения C Z P S N H IN A,(n) 11 11 011 011 A ← (n) ADR ← A/n - n - IN r,1С) 12 11 101 101 r ← (C) ADR ← B/C ? P ? 0 ? 01 r 000 INF 12 11 101 101 F ← (C) ADR ← B/C ? P ? 0 ? 01 110 000 F-регистр флагов INI 16 11 101 101 (HL)←(C) ADR←B/C ? X X 1 X 10 100 010 затем B ← B-1 Z=1, если B-1=0 HL ← HL+1 Z=0, если B-1≠0 INIR 21 11 101 101 (HL)←(C) ADR←B/C 1 X X 1 X (16) 10 110 010 затем B ← B-1 HL ← HL+1 и повтор до B=0 IND 16 11 101 101 (HL)←(C) ADR←B/C ? X X 1 X 10 101 010 затем B ← B-1 Z=1, если B-1=0 HL ← HL-1 Z=0, если B-1≠0 Команда T Код Пояснения C Z P S N H INDR 21 11 101 101 (HL)←(C) ADR←B/C 1 X X 1 X (16) 10 111 010 затем B ← B-1 HL ← HL-1 и повтор до B=0 OUT (n),A 11 11 010 011 (n) ← A ADR ← A/n - n - OUT (C),r 12 11 101 101 (C) ← r ADR ← B/C 01 r 001 OUTI 16 11 101 101 (C)←(HL) ADR←B/C ? X X 1 X 10 100 011 затем B ← B-1 Z=1, если B-1=0 HL ← HL+1 Z=0, если B-1≠0 OTIR 21 11 101 101 (C)←(HL) ADR←B/C 1 X X 1 X (16) 10 110 011 затем B ← B-1 HL ← HL+1 и повтор до B=0 OUTD 16 11 101 101 (C)←(HL) ADR←B/C ? X X 1 X 10 101 011 затем B ← B-1 Z=1, если B-1=0 HL ← HL-1 Z=0, если B-1≠0 OTDR 21 11 101 101 (C)←(HL) ADR←B/C 1 X X 1 X 1 (16) 10 111 011 затем B ← B-1 HL ← HL-1 и повтор до B=0 Таблица 5.1.10. Команды вызова и возврата Команда T Код Пояснения C Z P S N H CALL nn 17 11 001 101 (SP-1) ← PC H - n - (SP-2) ← PC L - n - PC ← nn CALL cc,nn 17 11 cc 100 (10) - n - (SP-2) ← PC L - n - PC←nn, если cc верно PC←PC+3, если нет RET 10 11 001 001 PC L ← (SP) PC H ← (SP+1) RET cc 11 11 cc 000 PC L ← (SP) (6) PC H ← (SP+1) PC ← PC+1, если cc не выполняется RETI 14 11 101 101 Возврат из INT 01 001 101 RETN 14 11 101 101 Возврат из NMI 01 000 101 RST p 11 11 a 111 (SP-1) ← PC H (SP-2) ← PC L PC ← 0 PC L ← p Для некоторых команд в колонке T указано два значения - без скобок и в скобках: - для условных команд JR, CALL, RET в скобках указано количество тактов выполнения команды при невыполнении условия; - для "цикличных" команд DJNZ, LDIR, LDDR, CPIR, CPDR, INIR, INDR, OTIR. OTDR в скобках указано количество тактов, за которое выполняется команда в последний (перед завершением) раз. Таблица 5.1.11. Команды сдвига и вращения Команда T Код Пояснения C Z P S N H RLCA 4 00 000 111 ? 0 0 RLA 4 00 010 111 ? 0 0 RRCA 4 00 001 111 ? 0 0 RRA 4 00 011 111 ? 0 0 Команда T Код Пояснения C Z P S N H RLC r 8 11 001 011 ? ? P ? 0 0 00 000 r RLC (HL) 15 11 001 011 ? ? P ? 0 0 00 000 110 RLC (IX+d) 23 11 011 101 ? ? P ? 0 0 11 001 011 - d - 00 000 110 RLC (IY+d) 23 11 111 101 ? ? P ? 0 0 11 001 011 - d - 00 000 110 RL t 010 ? ? P ? 0 0 RRC t 001 ? ? P ? 0 0 RR t 011 ? ? P ? 0 0 SLA t 100 ? ? P ? 0 0 SRA t 101 ? ? P ? 0 0 SRL t 111 ? ? P ? 0 0 RLD 18 11 101 101 ? P ? 0 0 01 101 111 RRD 18 11 101 101 ? P ? 0 0 01 100 111 Таблица 5.1.12. Команды управления микропроцессором Команда T Код Пояснения C Z P S N H NOP 4 00 000 000 Нет операции HALT 4 01 110 110 Останов DI 4 11 110 011 Прерывания запрещены EI 4 11 111 011 Прерывания разрешены IM 0 8 11 101 101 Режим прерывания 0 01 000 110 IM 1 8 11 101 101 Режим прерывания 1 01 010 110 IM 2 8 11 101 101 Режим прерываний 2 01 011 110 5.3. Флаги признаков Каждый из двух флаговых регистров МП Z80 содержит по шесть информационных битов, состояние которых устанавливается в соответствии с результатом операции. Флаги S, Z, C и P/V используются в командах условного перехода, условного вызова подпрограмм и условного возврата из подпрограмм. Флаги H и N непосредственно программно не анализируются. Они используются в двоично-десятичной арифметике. S (F7) Sign - Флаг знака Этот Флаг предназначен для обработки чисел со знаком. Флаг устанавливается, когда результат операции отрицателен. Т.к. бит 7 является знаковым (любое отрицательное число содержит единицу в 7 бите), то этот флаг копирует состояние 7 бита аккумулятора. При программировании состояние этого флага условно кодируется как P (Plus, знак плюс, S=0) и M (Minus, знак минус, S=1). Z (F6) Zero - Флаг нуля Флаг Z устанавливается или обнуляется в результате выполнения следующих команд: 1. При 8-битных арифметических и логических операциях флаг устанавливается в 1, если результат выполнения команды равен нулю. Если результат не равен нулю, флаг Z обнуляется. 2. При командах поиска и сравнения флаг Z устанавливается в 1. когда содержимое ячейки памяти адресуемой регистровой парой HL, совладает с содержимым аккумулятора. 3. После выполнения команды тестирования отдельного бита во флаг Z записывается инвертированное значение проверенного бита. 4. Если при выполнении команд INI, IND, OUTI, OUTD результат декремента (В-1) не равен нулю, то флаг Z=0. Когда результат (В-1)=0, флаг Z устанавливается. 5. Флаг Z устанавливается в 1, когда в результате выполнения команд IN r,(C) содержимое регистра r обнуляется. При программировании этот флаг следует условно кодировать как Z (Zero, результат равен нулю, Z=1) и NZ (No Zero, результат не равен нулю, Z=0) |