Zilog Z80/Система команд: различия между версиями

Материал из Emuverse
(+ ED xx)
Строка 772: Строка 772:
| --------
| --------
| 8/15*
| 8/15*
| 2
|
|}
== Префикс ED ==
{| class=fixed
! colspan=2 | Код
! Данные
! Команда
! Действие
! Флаги
! Такты
! Байты
! Примечание
|-
! colspan=9 | Группа 00
|-
| nowrap | 11 101 101<br>00 XXX XXX
| ED<br>xx
|
| INVALID
| NOP/NONI
| --------
| 8
| 2
| R увеличивается на 2 (далее аналогично)
|-
! colspan=9 | Группа 01
|-
| 11 101 101<br>01 110 000
| ED<br>70
|
| *IN F, [C]
| IN[BC]
| SZ503P0-
| 12?
| 2
| Меняются только флаги<br>Номер порта в реальности 16-разрядный
|-
| 11 101 101<br>01 DDD 000
| ED<br>xx
|
| IN DDD, [C]
| DDD <- IN[BC]
| SZ503P0-
| 12
| 2
| DDD кроме 110
|-
| 11 101 101<br>01 110 001
| ED<br>71
|
| *OUT [C], 0
| OUT[BC] <- 0
| --------
| 12
| 2
|
|-
| 11 101 101<br>01 SSS 001
| ED<br>xx
|
| nowrap | OUT [C], SSS
| OUT[BC] <- SSS
| --------
| 12
| 2
| SSS кроме 110<br>Номер порта в реальности 16-разрядный
|-
| 11 101 101<br>01 RP0 010
| ED<br>xx
|
| SBC HL, RP
| HL <- HL-RP-C
| SZ***V1C
| 15
| 2
| См. ADD HL, RP
|-
| 11 101 101<br>01 RP1 010
| ED<br>xx
|
| ADC HL, RP
| HL <- HL+RP+C
| SZ***V0C
| 15
| 2
| См. ADD HL, RP
|-
| 11 101 101<br>01 RP0 011
| ED<br>xx
| nn
| LD [nn], RP
| [nn] <- RP
| --------
| 20
| 4
|
|-
| 11 101 101<br>01 RP1 011
| ED<br>xx
| nn
| LD RP, [nn]
| RP <- [nn]
| --------
| 20
| 4
|
|-
| 11 101 101<br>01 XXX 100
| ED<br>44
|
| NEG/*NEG
| A <- 0-A
| SZ5H3V1C
| 8
| 2
| XXX<>0 недок<br>PV=1 если перед операцией A=80<br>С=1 если перед операцией A<>0
|-
| 11 101 101<br>01 001 101
| ED<br>4D
|
| RETI
| IFF1 <- IFF2<br>SP <- SP+2<br>PC <- [SP-2]
| --------
| 14
| 2
| Возврат из INT
|-
| 11 101 101<br>01 XXX 101
| ED<br>xx
|
| RETN<br>*RETN
| IFF1 <- IFF2<br>SP <- SP+2<br>PC <- [SP-2]
| --------
| 14
| 2
| Возврат из NMI<br>XXX=1 => RETI<br>XXX>1 недок.
|-
| 11 101 101<br>01 X00 110
| ED<br>46
|
| IM 0/*IM 0
| IM <- 0
| --------
| 8
| 2
| X=1 недок
|-
| 11 101 101<br>01 X01 110
| ED<br>4E
|
| *IM 0/1
| IM <- 0/1?
| --------
| 8
| 2
| Устанавливается один из режимов, какой - по одним источникам неизвестно, по другим IM 0
|-
| 11 101 101<br>01 X10 110
| ED<br>56
|
| IM 1/*IM 1
| IM <- 1
| --------
| 8
| 2
| X=1 недок
|-
| 11 101 101<br>01 X11 110
| ED<br>5E
|
| IM 2/*IM 2
| IM <- 2
| --------
| 8
| 2
| X=1 недок
|-
| 11 101 101<br>01 000 111
| ED<br>47
|
| LD I, A
| I <- A
| --------
| 9
| 2
|
|-
| 11 101 101<br>01 001 111
| ED<br>4F
|
| LD R, A
| R <- A
| --------
| 9
| 2
|
|-
| 11 101 101<br>01 010 111
| ED<br>57
|
| LD A, I
| A <- I<br>PV <- IFF2
| SZ503*0-
| 9
| 2
| Известная ошибка: если в момент выполнения команды получено прерывание, то в PV вместо 1 ошибочно попадает 0. Есть программы, которые строят на этом защиту от эмуляции.
|-
| 11 101 101<br>01 011 111
| ED<br>5F
|
| LD A, R
| A <- R<br>PV <- IFF2
| SZ503*0-
| 9
| 2
| См. LD A, I<br>Значение в A равно R выполнения инструкции
|-
| 11 101 101<br>01 100 111
| ED<br>67
|
| RRD
|
| SZ503P0-
| 18
| 2
| Флаги по результату в A
|-
| 11 101 101<br>01 101 111
| ED<br>6F
|
| RLD
|
| SZ503P0-
| 18
| 2
| См. RRD
|-
| 11 101 101<br>01 11X 111
| ED<br>xx
|
| NOP
|
| --------
| 8?
| 2
|
|-
! colspan=9 | Группа 10
|-
| 11 101 101<br>10 0XX XXX
| ED<br>xx
|
| *INVALID
| NOP/NONI
| --------
| 8
| 2
|
|-
| 11 101 101<br>10 100 000
| ED<br>A0
|
| LDI
| [DE] <- [HL]<br>DE <- DE+1<br>HL <- HL+1<br>BC <- BC-1
| --*0**0-
| 16
| 2
| PV=1 если после декремента BC<>0<br>F3=бит 3 операции переданный байт + A<br>F5=бит 1 операции переданный байт + A<br>R увеличивается на 2 (далее аналогично)
|-
| 11 101 101<br>10 100 001
| ED<br>A1
|
| CPI
| A-[HL]<br>HL <- HL+1<br>BC <- BC-1
| SZ*H**1-
| 16
| 2
| PV=1 если после декремента BC<>0<br>S,Z,HC из A-[HL]<br>F3=бит 3 операции A-[HL]-HC, где HC взят из F после предыдущей операции<br>F5=бит 1 операции A-[HL]-HC
|-
| 11 101 101<br>10 100 010
| ED<br>A2
|
| INI
| [HL] <- IN [BC]<br>HL <- HL+1<br>B <- B-1
| SZ5*3***
| 16
| 2
| Адрес порта 16-битный из ВС<br>Флаги см. [[/INI]]
|-
| 11 101 101<br>10 100 011
| ED<br>A3
|
| OUTI
| OUT [BC] <- [HL]<br>HL <- HL+1<br>B <- B-1
| SZ5*3***
| 16
| 2
| См. INI
|-
| 11 101 101<br>10 100 1XX
| ED<br>xx
|
| *INVALID
| NOP/NONI
| --------
| 8
| 2
|
|-
| 11 101 101<br>10 101 000
| ED<br>A8
|
| LDD
| [DE] <- [HL]<br>DE <- DE-1<br>HL <- HL-1<br>BC <- BC-1
| --*0**0-
| 16
| 2
| См. LDI
|-
| 11 101 101<br>10 101 001
| ED<br>A9
|
| CPD
| A-[HL]<br>HL <- HL-1<br>BC <- BC-1
| SZ*H**1-
| 16
| 2
| См. CPI
|-
| 11 101 101<br>10 101 010
| ED<br>AA
|
| IND
| [HL] <- IN [BC]<br>HL <- HL11<br>B <- B-1
| SZ5*3***
| 16
| 2
| См. INI
|-
| 11 101 101<br>10 101 011
| ED<br>AB
|
| OUTD
| OUT [C], [HL]<br>HL <- HL-1<br>B <- B-1
| SZ5*3***
| 16
| 2
| См. INI
|-
| 11 101 101<br>10 101 1XX
| ED<br>xx
|
| *INVALID
| NOP/NONI
| --------
| 8
| 2
|
|-
| 11 101 101<br>10 110 000
| ED<br>B0
|
| LDIR
| nowrap | Повторять LDI до BC=0, т.е.:<br>&nbsp;&nbsp;&nbsp;&nbsp;Выполнить LDI<br>&nbsp;&nbsp;&nbsp;&nbsp;Если BC<>0 то PC <- PC-2
| --*0**0-
| 21/16**
| 2
| См. LDI<br>R увеличивается на 2 каждый цикл?
|-
| 11 101 101<br>10 110 001
| ED<br>B1
|
| CPIR
| Повторять CPI до BC=0
| SZ*H**1-
| 21/16**
| 2
| См. CPI
|-
| 11 101 101<br>10 110 010
| ED<br>B2
|
| INIR
| Повторять INI до B=0
| SZ5*3***
| 21/16**
| 2
|
|-
| 11 101 101<br>10 110 011
| ED<br>B3
|
| OTIR
| Повторять OTI до B=0
| SZ5*3***
| 21/16**
| 2
|
|-
| 11 101 101<br>10 110 1XX
| ED<br>xx
|
| *INVALID
| NOP/NONI
| --------
| 8
| 2
|
|-
| 11 101 101<br>10 111 000
| ED<br>B8
|
| LDDR
| Повторять LDD до BC=0
| --*0**0-
| 21/16**
| 2
| См. LDI
|-
| 11 101 101<br>10 111 001
| ED<br>B9
|
| CPDR
| Повторять CPD до BC=0
| SZ*H**1-
| 21/16**
| 2
| См. CPI
|-
| 11 101 101<br>10 111 010
| ED<br>BA
|
| INDR
| Повторять IND до B=0
| SZ5*3***
| 21/16**
| 2
| См. INI
|-
| 11 101 101<br>10 111 011
| ED<br>BB
|
| OTDR
| Повторять OTD до B=0
| SZ5*3***
| 21/16**
| 2
| См. INI
|-
| 11 101 101<br>10 111 1XX
| ED<br>xx
|
| *INVALID
| NOP/NONI
| --------
| 8
| 2
|
|-
! colspan=9 | Группа 11
|-
| 11 101 101<br>11 XXX XXX
| ED<br>xx
|
| *INVALID
| NOP/NONI
| --------
| 8
| 2
| 2
|  
|  

Версия от 11:54, 15 февраля 2008

Этот документ создан для Emuverse и распространяется на условиях лицензии CC-BY-SA-3.0.

Команды без префикса

Код Данные Команда Действие Флаги Такты Байты Примечание
2 16 SZ5H3VNC
Без префикса
Группа 00
00 000 000 00 NOP -------- 4 1
00 001 000 08 EX AF, AF' AF <-> AF' ******** 4 1
00 010 000 10 d DJNZ d B <- B-1
Если B<>0 то PC <- PC+d
-------- 13/8 2 PC равен адресу следующей за DJNZ команды
00 011 000 18 d JR d PC <- PC+d -------- 12 2 PC равен адресу следующей команды
00 1СС 000 d JR СС, d Если СС то PC <- PC+d -------- 12/7 2 PC равен адресу следующей команды
00 RP0 001 nn LD RP, nn RP <- nn -------- 10 3
00 RP1 001 ADD HL, RP HL <- HL + RP --***-0C 11 1 F5,H,F3 берутся по результатам сложения старших байтов
00 0R0 010 LD [R], A [R] <- A -------- 7 1
00 0R1 010 LD A, [R] A <- [R] -------- 7 1
00 100 010 22 nn LD [nn], HL [nn] <- HL -------- 16 3
00 101 010 2A nn LD HL, [nn] HL <- [nn] -------- 16 3
00 110 010 32 nn LD [nn], A [nn] <- A -------- 13 3
00 111 010 3A nn LD A, [nn] A <- [nn] -------- 13 3
00 RP0 011 INC RP RP <- RP+1 -------- 6 1
00 RP1 011 DEC RP RP <- RP-1 -------- 6 1
00 SSS 100 INC SSS SSS <- SSS+1 SZ5H3V0- 4 1 V=1, если SSS=7F до операции
00 SSS 101 DEC SSS SSS <- SSS-1 SZ5H3V1- 4 1 V=1, если SSS=80 до операции
00 DDD 110 d LD DDD, d DDD <- d -------- 7 2
00 000 111 07 RLCA Цикл. сдвиг A влево, CY<-A7 --503-0C 4 1
00 001 111 0F RRCA Цикл. сдвиг A вправо, CY<-A0 --503-0C 4 1
00 010 111 17 RLA Цикл. сдвиг A+CY влево --503-0C 4 1
00 011 111 1F RRA Цикл. сдвиг A+CY вправо --503-0C 4 1
00 100 111 27 DAA Десятичная коррекция SZ5*3P-* 4 1 См. /DAA
00 101 111 2F CPL A <- NOT A --*1*-1- 4 1 F3 и F5 из A
00 110 111 37 SCF CY = 1 --*0*-01 4 1 F3 и F5 из A
00 111 111 3F CCF CY <- NOT CY --***-0C 4 1 H <- старый C, F3 и F5 из A
Группа 01
01 110 110 76 HALT -------- 4 1 Повторяет циклы NOP до прерывания или сброса
01 DDD 110 LD DDD, [HL] DDD <- [HL] -------- 7/15* 1
01 110 SSS LD [HL], SSS [HL] <- SSS -------- 7/15* 1
01 DDD SSS LD DDD, SSS DDD <- SSS -------- 4 1 DDD и SSS не равны 110
Группа 10
10 000 SSS ADD A, SSS A <- A+SSS SZ5H3V0C 4/7/15* 1
10 001 SSS ADC A, SSS A <- A+SSS+CY SZ5H3V0C 4/7/15* 1
10 010 SSS SUB A, SSS A <- A-SSS SZ5H3V1C 4/7/15* 1
10 011 SSS SBC A, SSS A <- A-SSS-CY SZ5H3V1C 4/7/15* 1
10 100 SSS AND A, SSS A <- A AND SSS SZ513P00 4/7/15* 1
10 101 SSS XOR A, SSS A <- A XOR SSS SZ503P00 4/7/15* 1
10 110 SSS OR A, SSS A <- A OR SSS SZ503P00 4/7/15* 1
10 111 SSS CP SSS A-SSS SZ*H*V1C 4/7/15* 1 F5 и F3 - копия SSS
Группа 11
11 CCC 000 RET CCC Если CCC то
    PCL <- [SP]
    PCH <- [SP+1]
    SP <- SP+2
-------- 11/5 1
11 RP0 001 POP RP RPH <- [SP]
RPL <- [SP+1]
SP <- SP+2
--------
********
10 1 Если RP=3, то подразумевается PSW, а не SP
11 001 001 C9 RET PCL <- [SP]
PCH <- [SP+1]
SP <- SP+2
-------- 10 1
11 011 001 D9 EXX BC,DE,HL <-> BC',DE',HL' -------- 4 1
11 101 001 E9 JP [HL] PC <- HL -------- 4 1 С префиксами становится JP [IX],
а не JP [IX+d]
11 111 001 F9 LD SP,HL SP <- HL -------- 6 1
11 CCC 010 nn JP CCC, [nn] Если CCC то PC <- nn -------- 10 3
11 000 011 C3 nn JP nn PC <- nn -------- 10 3
11 001 011 CB Префикс
11 010 011 D3 d OUT (d),A [Ad] <- A -------- 11 2 Номер порта в реальности 16-разрядный
11 011 011 DB d IN A, (d) A <- [Ad] -------- 11 2 Номер порта в реальности 16-разрядный
11 100 011 E3 EX (SP),HL [SP] <-> HL -------- 19 1
11 101 011 EB EX DE,HL DE <-> HL -------- 4 1 Префиксы игнорируются
11 110 011 F3 DI IFF1 <- 0 IFF2 <- 0 -------- 4 1 Запрет прерывания
11 111 011 FB EI IFF1 <- 1 IFF2 <- 1 -------- 4 1 Разрешение прерывания. До завершения следующей команды проверка на INT блокируется (как после NONI)
11 ССС 100 nn CALL ССС, [nn] Если ССС то
    SP <- SP-2
    [SP] <- (PC+3)L
    [SP+1] <- (PC+3)H
    PC <- nn
-------- 17/10 3
11 RP0 101 PUSH RP SP <- SP-2
[SP] <- RPL
[SP+1] <- RPH
-------- 11 1 Если RP=3, то подразумевается PSW, а не SP
11 001 101 CD nn CALL [nn] SP <- SP-2
[SP] <- PCL
[SP+1] <- PCH
PC <- nn
-------- 17 3
11 011 101 DD Префикс
11 101 101 ED Префикс
11 111 101 FD Префикс
11 000 110 C6 d ADD A, d A <- A+d+CY SZ5H3V0C 7 2
11 001 110 CE d ADC A, d A <- A+d+CY SZ5H3V0C 7 2
11 010 110 D6 d SUB A, d A <- A-d SZ5H3V1C 7 2
11 011 110 DE d SBC A, d A <- A-d-CY SZ5H3V1C 7 2
11 100 110 E6 d AND A, d A <- A AND d SZ513P00 7 2
11 101 110 EE d XOR A, d A <- A XOR d SZ503P00 7 2
11 110 110 F6 d OR A, d A <- A OR d SZ503P00 7 2
11 111 110 FE d CP A, d A-d SZ*H*V1C 7 2 F5 и F3 - копия d
11 NNN 111 RST NNN [SP-1] <- PCH
[SP-2] <- PCL
SP <- SP-2
PCH <- 0
PCL <- NNN*8
-------- 11 1


Префикс CB

Код Данные Команда Действие Флаги Такты Байты Примечание
2 16 SZ5H3VNC
11 001 011
00 rot SSS
CB
xx
rot SSS
*SLL SSS
Битовый сдвиг SZ503P0C 8/15* 2 rot=110 (SLL) - недок.
11 001 011
01 bit SSS
CB
xx
BIT bit, SSS SSS AND 2^bit *Z513*0- 8/12* 2 Установка флагов - см. /BIT
11 001 011
10 bit SSS
CB
xx
RES bit, SSS SSS <- SSS AND NOT(2^bit) -------- 8/15* 2
11 001 011
11 bit SSS
CB
xx
SET bit, SSS SSS <- SSS OR 2^bit -------- 8/15* 2


Префикс ED

Код Данные Команда Действие Флаги Такты Байты Примечание
Группа 00
11 101 101
00 XXX XXX
ED
xx
INVALID NOP/NONI -------- 8 2 R увеличивается на 2 (далее аналогично)
Группа 01
11 101 101
01 110 000
ED
70
*IN F, [C] IN[BC] SZ503P0- 12? 2 Меняются только флаги
Номер порта в реальности 16-разрядный
11 101 101
01 DDD 000
ED
xx
IN DDD, [C] DDD <- IN[BC] SZ503P0- 12 2 DDD кроме 110
11 101 101
01 110 001
ED
71
*OUT [C], 0 OUT[BC] <- 0 -------- 12 2
11 101 101
01 SSS 001
ED
xx
OUT [C], SSS OUT[BC] <- SSS -------- 12 2 SSS кроме 110
Номер порта в реальности 16-разрядный
11 101 101
01 RP0 010
ED
xx
SBC HL, RP HL <- HL-RP-C SZ***V1C 15 2 См. ADD HL, RP
11 101 101
01 RP1 010
ED
xx
ADC HL, RP HL <- HL+RP+C SZ***V0C 15 2 См. ADD HL, RP
11 101 101
01 RP0 011
ED
xx
nn LD [nn], RP [nn] <- RP -------- 20 4
11 101 101
01 RP1 011
ED
xx
nn LD RP, [nn] RP <- [nn] -------- 20 4
11 101 101
01 XXX 100
ED
44
NEG/*NEG A <- 0-A SZ5H3V1C 8 2 XXX<>0 недок
PV=1 если перед операцией A=80
С=1 если перед операцией A<>0
11 101 101
01 001 101
ED
4D
RETI IFF1 <- IFF2
SP <- SP+2
PC <- [SP-2]
-------- 14 2 Возврат из INT
11 101 101
01 XXX 101
ED
xx
RETN
*RETN
IFF1 <- IFF2
SP <- SP+2
PC <- [SP-2]
-------- 14 2 Возврат из NMI
XXX=1 => RETI
XXX>1 недок.
11 101 101
01 X00 110
ED
46
IM 0/*IM 0 IM <- 0 -------- 8 2 X=1 недок
11 101 101
01 X01 110
ED
4E
*IM 0/1 IM <- 0/1? -------- 8 2 Устанавливается один из режимов, какой - по одним источникам неизвестно, по другим IM 0
11 101 101
01 X10 110
ED
56
IM 1/*IM 1 IM <- 1 -------- 8 2 X=1 недок
11 101 101
01 X11 110
ED
5E
IM 2/*IM 2 IM <- 2 -------- 8 2 X=1 недок
11 101 101
01 000 111
ED
47
LD I, A I <- A -------- 9 2
11 101 101
01 001 111
ED
4F
LD R, A R <- A -------- 9 2
11 101 101
01 010 111
ED
57
LD A, I A <- I
PV <- IFF2
SZ503*0- 9 2 Известная ошибка: если в момент выполнения команды получено прерывание, то в PV вместо 1 ошибочно попадает 0. Есть программы, которые строят на этом защиту от эмуляции.
11 101 101
01 011 111
ED
5F
LD A, R A <- R
PV <- IFF2
SZ503*0- 9 2 См. LD A, I
Значение в A равно R выполнения инструкции
11 101 101
01 100 111
ED
67
RRD SZ503P0- 18 2 Флаги по результату в A
11 101 101
01 101 111
ED
6F
RLD SZ503P0- 18 2 См. RRD
11 101 101
01 11X 111
ED
xx
NOP -------- 8? 2
Группа 10
11 101 101
10 0XX XXX
ED
xx
*INVALID NOP/NONI -------- 8 2
11 101 101
10 100 000
ED
A0
LDI [DE] <- [HL]
DE <- DE+1
HL <- HL+1
BC <- BC-1
--*0**0- 16 2 PV=1 если после декремента BC<>0
F3=бит 3 операции переданный байт + A
F5=бит 1 операции переданный байт + A
R увеличивается на 2 (далее аналогично)
11 101 101
10 100 001
ED
A1
CPI A-[HL]
HL <- HL+1
BC <- BC-1
SZ*H**1- 16 2 PV=1 если после декремента BC<>0
S,Z,HC из A-[HL]
F3=бит 3 операции A-[HL]-HC, где HC взят из F после предыдущей операции
F5=бит 1 операции A-[HL]-HC
11 101 101
10 100 010
ED
A2
INI [HL] <- IN [BC]
HL <- HL+1
B <- B-1
SZ5*3*** 16 2 Адрес порта 16-битный из ВС
Флаги см. /INI
11 101 101
10 100 011
ED
A3
OUTI OUT [BC] <- [HL]
HL <- HL+1
B <- B-1
SZ5*3*** 16 2 См. INI
11 101 101
10 100 1XX
ED
xx
*INVALID NOP/NONI -------- 8 2
11 101 101
10 101 000
ED
A8
LDD [DE] <- [HL]
DE <- DE-1
HL <- HL-1
BC <- BC-1
--*0**0- 16 2 См. LDI
11 101 101
10 101 001
ED
A9
CPD A-[HL]
HL <- HL-1
BC <- BC-1
SZ*H**1- 16 2 См. CPI
11 101 101
10 101 010
ED
AA
IND [HL] <- IN [BC]
HL <- HL11
B <- B-1
SZ5*3*** 16 2 См. INI
11 101 101
10 101 011
ED
AB
OUTD OUT [C], [HL]
HL <- HL-1
B <- B-1
SZ5*3*** 16 2 См. INI
11 101 101
10 101 1XX
ED
xx
*INVALID NOP/NONI -------- 8 2
11 101 101
10 110 000
ED
B0
LDIR Повторять LDI до BC=0, т.е.:
    Выполнить LDI
    Если BC<>0 то PC <- PC-2
--*0**0- 21/16** 2 См. LDI
R увеличивается на 2 каждый цикл?
11 101 101
10 110 001
ED
B1
CPIR Повторять CPI до BC=0 SZ*H**1- 21/16** 2 См. CPI
11 101 101
10 110 010
ED
B2
INIR Повторять INI до B=0 SZ5*3*** 21/16** 2
11 101 101
10 110 011
ED
B3
OTIR Повторять OTI до B=0 SZ5*3*** 21/16** 2
11 101 101
10 110 1XX
ED
xx
*INVALID NOP/NONI -------- 8 2
11 101 101
10 111 000
ED
B8
LDDR Повторять LDD до BC=0 --*0**0- 21/16** 2 См. LDI
11 101 101
10 111 001
ED
B9
CPDR Повторять CPD до BC=0 SZ*H**1- 21/16** 2 См. CPI
11 101 101
10 111 010
ED
BA
INDR Повторять IND до B=0 SZ5*3*** 21/16** 2 См. INI
11 101 101
10 111 011
ED
BB
OTDR Повторять OTD до B=0 SZ5*3*** 21/16** 2 См. INI
11 101 101
10 111 1XX
ED
xx
*INVALID NOP/NONI -------- 8 2
Группа 11
11 101 101
11 XXX XXX
ED
xx
*INVALID NOP/NONI -------- 8 2

Обработка префиксов

Матрица команд, на которые влияют префиксы DD и FD[1]

+-------------------------------------------------+
|                   60 70                         |
|       21          61 71                   E1    |
|       22          62 72                         |
|       23          63 73                   E3    |
|       24 34 44 54 64 74 84 94 A4 B4             |
|       25 35 45 55 65 75 85 95 A5 B5       E5    |
|       26 36 46 56 66    86 96 A6 B6             |
|                   67 77                         |
|                   68                            |
| 09 19 29 39       69                      E9 F9 |
|       2A          6A                            |
|       2B          6B                CB          |
|       2C    4C 5C 6C 7C 8C 9C AC BC             |
|       2D    4D 5D 6D 7D 8D 9D AD BD             |
|       2E    4E 5E 6E 7E 8E 9E AE BE             |
|                   6F                            |
+-------------------------------------------------+

Команды сдвига

RLC
RRC
RL
RR
SLA
SRA
*SL1, SLL (недок.)
SRL
RLD
RRD

Расширенные материалы

  • /DAA - подробное описание работы команды DAA;
  • /BIT - особенности установки недокументированных флагов командой BIT;
  • /INI - вычисление флагов в командах блочного ввода-вывода.

Примечания

Ссылки