Z80180(HD64180)資料


1.定義命令

 ザイログニーモニック。
 Z180(HD64180も同様)で追加定義された命令は、背景色を変えて記述。

略称フラグ名称
サインフラグ(sf)
ゼロフラグ(zf)
ハーフキャリーフラグ
パリティ・オーバーフローフラグ(pf)
Pはパリティフラグとして
Vはオーバーフローフラグとして動作した事を示す
減算フラグ
キャリーフラグ(cf)
表記説明
 11に変化
 00に変化
 #演算結果に沿った変化
 ?不定
 -変化しない

 IXレジスタを使用した命令のオペコードDDに色がついている場合、IYレジスタを使用した同一命令が存在する。オペコードはそのDDをFDに読み換える事。

8ビットロード命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
LD r,sr←s ------ 01   r     s  114 r,s Reg.
000 B 001 C
010 D 011 E
100 H 101 L
111 A
LD r,nr←n ------ 00   r   110
--- n ---
 226
LD r,(HL)r←(HL) ------ 01   r   110 126
LD r,(IX+d)r←(IX+d) ------ 11 011 101
01   r   110
--- d ---
DD3414
LD (HL),r(HL)←r ------ 01 110   r 127
LD (IX+d),r(IX+d)←r ------ 11 011 101
01 110   r
--- d ---
DD3414
LD (HL),n(HL)←n ------ 00 110 110
--- n ---
36
 
239
LD (IX+d),n(IX+d)←n ------ 11 011 101
00 110 110
--- d ---
--- n ---
DD
36
4515
LD A,(BC)A←(BC) ------ 00 001 0100A126
LD A,(DE)A←(DE) ------ 00 011 0101A126
LD A,(mn)A←(mn) ------ 00 111 010
--- n ---
--- m ---
3A3412
LD (BC),A(BC)←A ------ 00 000 01002127
LD (DE),A(DE)←A ------ 00 010 01012127
LD (mn),A(mn)←A ------ 00 110 010
--- n ---
--- m ---
323413
LD I,AI←A ------ 11 101 101
01 000 111
ED
47
226
LD R,AR←A ------ 11 101 101
01 001 111
ED
4F
226
LD A,IA←I ##0IFF0- 11 101 101
01 010 111
ED
57
226
LD A,RA←R ##0IFF0- 11 101 101
01 011 111
ED
5F
226

IFF 割り込み許可フリップフロップ(IFF)の内容がpfにコピーされる

16ビットロード命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
LD rp,mnrp←mn ------ 00 rp0 001
--- n ---
--- m ---
 339 rp Pair Reg.
00 BC
01 DE
10 HL
11 SP
LD IX,mnIX←mn ------ 11 011 101
00 100 001
--- n ---
--- m ---
DD
21
4412
LD HL,(mn)H←(mn+1)
L←(mn)
------ 00 101 010
--- n ---
--- m ---
2A3515
LD rp,(mn)rpH←(mn+1)
rpL←(mn)
------ 11 101 101
01 rp1 011
--- n ---
--- m ---
ED4618
LD IX,(mn)IXH←(mn+1)
IXL←(mn)
------ 11 011 101
00 101 010
--- n ---
--- m ---
DD
2A
4618
LD (mn),HL(mn+1)←H
(mn)←L
------ 00 100 010
--- n ---
--- m ---
223515
LD (mn),rp(mn+1)←rpH
(mn)←rpL
------ 11 101 101
01 rp0 011
--- n ---
--- m ---
ED4619
LD (mn),IX(mn+1)←IXH
(mn)←IXL
------ 11 011 101
00 100 010
--- n ---
--- m ---
DD
22
4619
LD SP,HLSP←HL ------ 11 111 001F9114
LD SP,IXSP←IX ------ 11 011 101
11 111 001
DD
F9
227
PUSH rq(SP-1)←rqH
(SP-2)←rqL
SP←SP-2
------ 11 rq0 101 1311 rq Pair Reg.
00 BC
01 DE
10 HL
11 AF
PUSH IX(SP-1)←IXH
(SP-2)←IXL
SP←SP-2
------ 11 101 101
11 100 101
DD
E5
2414
POP rqrqL←(SP)
rqH←(SP+1)
SP←SP+2
------ 11 rq0 001 139
POP IXIXL←(SP)
IXH←(SP+1)
SP←SP+2
------ 11 101 101
11 101 001
DD
E1
2412

8ビット算術論理演算命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
ADD A,rA←A+r ###V0# 10 000   r  114 r Reg.
000 B 001 C
010 D 011 E
100 H 101 L
111 A
ADD A,nA←A+n ###V0# 11 000 110
--- n ---
 226
ADD A,(HL)A←A+(HL) ###V0# 10 000 110 126
ADD A,(IX+d)A←A+(IX+d) ###V0# 11 011 101
10 000 110
--- d ---
DD
 
 
3414
ADC A,sA←A+s+cf ###V0# ** 001 ***     ADD命令と同様の
繰り返し
s=r,n,(HL),(IX+d),(IY+d)
SUB A,sA←A-s ###V1# ** 010 ***
SBC A,sA←A-s-cf ###V1# ** 011 ***
AND A,sA←A and s ##1P00 ** 100 ***
XOR A,sA←A xor s ##0P00 ** 101 ***
OR A,sA←A or s ##0P00 ** 110 ***
CP A,sA-s ###V1# ** 111 ***
INC rr←r+1 ###V0- 00   r   100 114 
INC (HL)(HL)←(HL)+1 ###V0- 00 110 100 1310
INC (IX+d)(IX+d)←
 (IX+d)+1
###V0- 11 011 011
00 110 100
--- d ---
DD3518
DEC ss←s-1 ###V1- ** *** 101    INC命令と同様の
繰り返し
s=r,(HL),(IX+d),(IY+d)
TST A,rA and r ##1P00 11 101 101
00   r   100
ED
 
237 r Reg.
000 B 001 C
010 D 011 E
100 H 101 L
111 A
TST A,(HL)A and (HL) ##1P00 11 101 101
00 110 100
ED
34
2310
TST A,nA and n ##1P00 11 101 101
01 100 100
--- n ---
ED
64
 
339

論理演算の場合 偶数パリティ pf=1、奇数パリティ pf=0
算術演算の場合 オーバーフロー有り pf=1、オーバーフロー無し pf=0

16ビット算術演算命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
ADD HL,rpHL←HL+rp --?-0# 00 rp1 001 117 rp Pair Reg.
00 BC
01 DE
10 HL
11 SP
 
rx Pair Reg.
00 BC
01 DE
10 IX
11 SP
ADC HL,rpHL←
 HL+rp+cf
##?V0# 11 101 101
01 rp1 010
ED
 
2210
SBC HL,rpHL←
 HL-rp-cf
##?V1# 11 101 101
01 rp0 010
ED
 
2210
ADD IX,rxIX←IX+rx --?-0# 11 011 101
00 rx1 001
DD
 
2210
MLT rprp←rpH×rpL ------ 11 101 101
01 rp1 100
ED
 
2217
INC rprp←rp+1 ------ 00 rp0 011 114
INC IXIX←IX+1 ------ 11 011 101
00 100 011
DD
23
227
DEC rprp←rp-1 ------ 00 rp1 011 114
DEC IXIX←IX-1 ------ 11 011 101
00 101 011
DD
2B
227

ジャンプ命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
JP mnPC←mn ------ 11 000 011
--- n ---
--- m ---
C3
 
 
339 cc 条件
000 NZ non zero
001 Z zero
010 NC non carry
011 C carry
100 PO parity odd
101 PE parity even
110 P sign positive
111 M sign negative
JP cc,mn条件がccなら
PC←mn
そうでなければ
何もしない
------ 11 cc  010
--- n ---
--- m ---
 33
True
9
2
False
6
JR ePC←PC+e ------ 00 011 000
-- e-2 --
18
 
228 cr 条件
00 NZ non zero
01 Z zero
10 NC non carry
11 C carry
JR cr,e条件がcrなら
PC←PC+e
そうでなければ
何もしない
------ 00 1cr 000
-- e-2 --
 22
True
8
2
False
6
JP (HL)PC←HL ------ 11 101 001E9113 
JP (IX)PC←IX ------ 11 011 101
11 101 001
DD
E9
226
DJNZ eB←B-1
B≠0なら
PC←PC+e
そうでなければ
何もしない
------ 00 010 000
-- e-2 --
10
 
22
B≠0
9 
2
B=0
7

e 相対アドレッシングモードにおける変位値(符号付き2の補数-128〜+127)
e-2 eの実効変位値(オペランド即値)

コール命令/リターン命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
CALL mn(SP-1)←PCH
(SP-2)←PCL
SP←SP-2
PC←mn
------ 11 001 101
--- n ---
--- m ---
CD
 
 
3516 cc 条件
000 NZ non zero
001 Z zero
010 NC non carry
011 C carry
100 PO parity odd
101 PE parity even
110 P sign positive
111 M sign negative
CALL cc,mn条件がccなら
CALL mnに同じ
そうでなければ
何もしない
------ 11 cc  100
--- n ---
--- m ---
 35
True
16
2
False
6
RETPCL←(SP)
PCH←(SP+1)
SP←SP+2
------ 11 001 001C9139
RET cc条件がccなら
RETに同じ
そうでなければ
何もしない
------ 11 cc  000 13
True
10
1
False
5
RETI割り込み処理
からのRET
------ 11 101 101
01 001 101
ED
4D
26-422-13 
RETNマスク不可
割り込み処理
からのRET
------ 11 101 101
01 000 101
ED
45
2412
RST p(SP-1)←PCH
(SP-2)←PCL
SP←SP-2
PCH←0
PCL←p
------ 11   t   111 1311t=p÷8

入出力命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
IN A,(n)A←(n) ------ 11 011 011
--- n ---
DB239-10 nがAB0〜AB7
AccがAB8〜AB15
r Reg.
000 B
001 C
010 D
011 E
100 H
101 L
111 A
IN r,(C)r←(BC)p ###P0- 11 101 101
01   r   000
ED
 
239-10 CがAB0〜AB7
BがAB8〜AB15
IN F,(C)(BC)p入力値を
フラグにのみ反映
###P0- 11 101 101
01 110 000
ED
70
239-10
TSTIO (C),n(C)p and n ##1P00 11 101 101
01 110 100
--- n ---
ED
74
 
3312-13 CがAB0〜AB7
0がAB8〜AB15
IN0 r,(n)r←(n) ##0P0- 11 101 101
00   r   000
--- n ---
ED
 
 
3412-13 nがAB0〜AB7
0がAB8〜AB15
IN0 F,(n)(n)p入力値を
フラグにのみ反映
##0P0- 11 101 101
00 110 000
--- n ---
ED
30
 
3412-13
INI(HL)m←(BC)p
HL←HL+1
B←B-1
?*2??1- 11 101 101
10 100 010
ED
A2
2412-13 CがAB0〜AB7
BがAB8〜AB15
INIRINI命令を
B=0まで繰り返し
?1??1- 11 101 101
10 110 010
ED
B2
24
B≠0
14-15
4
B=0
12-13
IND(HL)m←(BC)p
HL←HL-1
B←B-1
?*2??1- 11 101 101
10 101 010
ED
AA
2412-13
INDRIND命令を
B=0まで繰り返し
?1??1- 11 101 101
10 111 010
ED
BA
24
B≠0
14-15
4
B=0
12-13
OUT (n),A(n)←A ------ 11 010 011
--- n ---
D3
 
2310-11 nがAB0〜AB7
AccがAB8〜AB15
OUT (C),r(BC)p←r ------ 11 101 101
01   r   001
ED
 
2410-11 CがAB0〜AB7
BがAB8〜AB15
OUT0 (n),r(n)←r ------ 11 101 101
00   r   001
--- n ---
ED
 
 
3413-14 nがAB0〜AB7
0がAB8〜AB15
OTIM(C)p←(HL)m
HL←HL+1
C←C+1
B←B-1
*1*2*3P*5*4 11 101 101
10 000 011
ED
83
2414-15 CがAB0〜AB7
0がAB8〜AB15
OTIMROTIM命令を
B=0まで繰り返し
0101*50 11 101 101
10 010 011
ED
93
24
B≠0
16-17
4
B=0
14-15
OTDM(C)p←(HL)m
HL←HL-1
C←C-1
B←B-1
*1*2*3P*5*4 11 101 101
10 001 011
ED
8B
2414-15
OTDMROTDM命令を
B=0まで繰り返し
0101*50 11 101 101
10 011 011
ED
9B
24
B≠0
16-17
4
B=0
14-15
OUTI(BC)p←(HL)m
HL←HL+1
B←B-1
?*2??1- 11 101 101
10 100 011
ED
A3
2412-13 CがAB0〜AB7
BがAB8〜AB15
OTIROUTI命令を
B=0まで繰り返し
?1??1- 11 101 101
10 110 011
ED
B3
24
B≠0
14-15
4
B=0
12-13
OUTD(BC)p←(HL)m
HL←HL-1
B←B-1
?*2??1- 11 101 101
10 101 011
ED
AB
2412-13
OTDROUTD命令を
B=0まで繰り返し
?1??1- 11 101 101
10 111 011
ED
BB
24
B≠0
14-15
4
B=0
12-13

(**)mはメモリアドレス、(**)pはI/Oアドレスを表わす。
*1 Bレジスタの最上位ビット
*2 Bレジスタ=0なら1
*3 Bレジスタの下位4ビット=1111bなら1
*4 Bレジスタ=255なら1
*5 HLレジスタの最上位ビット

CPU制御命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
NOPNo OPeration ------ 00 000 00000113  
HALTCPU halted ------ 01 110 11076113  
SLPSleep ------ 11 101 101
01 110 110
ED
76
228
DIIFF←0 ------ 11 110 011F3113  
EIIFF←1 ------ 11 111 011FB113
IM 0割り込みモード
設定
------ 11 101 101
01 000 110
ED
46
226 IMFa←0
IMFb←0
IM 1 ------ 11 101 101
01 010 110
ED
56
226 IMFa←1
IMFb←0
IM 2 ------ 11 101 101
01 011 110
ED
5E
226 IMFa←1
IMFb←1

アキュムレータ操作命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
DAAパックト10進加減算の
結果補正
###P-# 00 100 11127114 Decimal Adjust Accumulator
CPLA←not A
Aの1の補数をとる
--1-1- 00 101 1112F113 ComPLement accumulator
NEGA←0-A
Aの2の補数をとる
###V1# 11 101 101
01 000 100
ED
44
226 NEGate accumulator
CCFcf←not cf --#-0# 00 111 1113F113 Complement Carry Flag
SCFcf←1 --0-01 00 110 11137113 Set Carry Flag

エクスチェンジ命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
EX DE,HLDE←→HL ------ 11 101 011EB113  
EX AF,AF'AF←→AF' ###### 00 001 00008114 裏レジスタ
EXXBC←→BC'
DE←→DE'
HL←→HL'
------ 11 011 001D9113
EX (SP),HLH←→(SP-1)
L←→(SP)
------ 11 100 011E31516  
EX (SP),IXIXH←→(SP-1)
IXL←→(SP)
------ 11 011 101
11 100 011
DD
E3
2619  

ブロック転送命令/ブロックサーチ命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
LDI(DE)←(HL)
HL←HL+1
DE←DE+1
BC←BC-1
--0*10- 11 101 101
10 100 000
ED
A0
2412 
LDIRLDI命令を
BC=0まで繰り返し
--000- 11 101 101
10 110 000
ED
B0
2414BC≠0
412BC=0
LDD(DE)←(HL)
HL←HL-1
DE←DE-1
BC←BC-1
--0*10- 11 101 101
10 101 000
ED
A8
2412 
LDDRLDD命令を
BC=0まで繰り返し
--000- 11 101 101
10 111 000
ED
B8
2414BC≠0
412BC=0
CPIA-(HL)
HL←HL+1
BC←BC-1
#*2#*11- 11 101 101
10 100 001
ED
A1
2312 
CPIRCPI命令をA=(HL)または
BC=0まで繰り返し
#*2#*11- 11 101 101
10 110 001
ED
B1
2314BC≠0かつ
A≠(HL)
312BC=0または
A=(HL)
CPDA-(HL)
HL←HL-1
BC←BC-1
#*2#*11- 11 101 101
10 101 001
ED
A9
2312 
CPDRCPD命令をA=(HL)または
BC=0まで繰り返し
#*2#*11- 11 101 101
10 111 001
ED
B9
2314BC≠0かつ
A≠(HL)
312BC=0または
A=(HL)

*1 BCレジスタ=0なら0
*2 A=(HL)なら1

ビット操作命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
BIT b,rzf←not rb -#1-0- 11 001 011
01   b     r
CB
 
226 r Reg.
000 B 001 C
010 D 011 E
100 H 101 L
111 A
 
b Bit tested
000 0
  |    |
111 7
BIT b,(HL)zf←not (HL)b -#1-0- 11 001 011
01   b  110
CB
 
239
BIT b,(IX+d)zf←not (IX+d)b -#1-0- 11 011 101
11 001 011
--- d ---
01   b  110
DD
CB
4515
SET b,rrb←1 ------ 11 001 011
11   b     r
CB
 
227
SET b,(HL)(HL)b←1 ------ 11 001 011
11   b  110
CB
 
2412
SET b,(IX+d)(IX+d)b←1 ------ 11 011 101
11 001 011
--- d ---
11   b  110
DD
CB
4619
RES b,ssb←0 ------ 10 *** ***     RES命令はSET命令と
同様の繰り返し
s=r,(HL),(IX+d),(IY+d)

ローテイト・シフト命令

ニーモニックオペレーションフラグOPコードバイトマシン
サイクル
ステートコメント
76 543 210Hex
RLCA
A
A7A6 A5…2 A1A0
cf
cf
A6A5 A4…1 A0A7
A7
--0-0# 00 000 11107113 Rotate Left Circular
Accumulator
RRCA
A
A7A6 A5…2 A1A0
cf
cf
A0A7 A6…3 A2A1
A0
--0-0# 00 001 1110F113 Rotate Right Circular
Accumulator
RLA
A
A7A6 A5…2 A1A0
cf
cf
A6A5 A4…1 A0cf
A7
--0-0# 00 010 11117113 Rotate Left
Accumulator
RRA
A
A7A6 A5…2 A1A0
cf
cf
cfA7 A6…3 A2A1
A0
--0-0# 00 011 1111F113 Rotate Right
Accumulator
RLC r
r,(HL),(IX+d)
s7s6 s5…2 s1s0
cf
cf
s6s5 s4…1 s0s7
s7
##0P0# 11 001 011
00 000   r
CB
 
227 r Reg.
000 B 001 C
010 D 011 E
100 H 101 L
111 A
RLC (HL) ##0P0# 11 001 011
00 000 110
CB
 
2413
RLC (IX+d) ##0P0# 11 011 101
11 001 011
--- d ---
00 000 110
DD
CB
 
 
4619
RRC s
r,(HL),(IX+d)
s7s6 s5…2 s1s0
cf
cf
s0s7 s6…3 s2s1
s0
##0P0# ** 001 ***     RLC s命令と同様の
繰り返し
s=r,(HL),(IX+d),(IY+d)
RL s
r,(HL),(IX+d)
s7s6 s5…2 s1s0
cf
cf
s6s5 s4…1 s0cf
s7
##0P0# ** 010 ***
RR s
r,(HL),(IX+d)
s7s6 s5…2 s1s0
cf
cf
cfs7 s6…3 s2s1
s0
##0P0# ** 011 ***
SLA s
r,(HL),(IX+d)
s7s6 s5…2 s1s0
cf
cf
s6s5 s4…1 s0 0
s7
##0P0# ** 100 ***
SRA s
r,(HL),(IX+d)
s7s6 s5…2 s1s0
cf
cf
s7s7 s6…3 s2s1
s0
##0P0# ** 101 ***
SRL s
r,(HL),(IX+d)
s7s6 s5…2 s1s0
cf
cf
0s7 s6…3 s2s1
s0
0#0P0# ** 111 ***
RRD
A
A7…4A3…0
(HL)
(HL)7…4(HL)3…0
A7…4(HL)3…0
A3…0(HL)7…4
##0P0- 11 101 101
01 100 111
ED
67
2516 4ビット(ニブル)シフト
フラグは(HL)対象
RLD
A
A7…4A3…0
(HL)
(HL)7…4(HL)3…0
A7…4(HL)7…4
(HL)3…0A3…0
##0P0- 11 101 101
01 101 111
ED
6F
2516


μPD780余多話に戻る


2.未定義命令

 未定義命令を実行した場合、Z180ではTRAP割り込みが発生する。


μPD780余多話に戻る