命令動作表

戻る 使い方 ステート数表 データ集


  1. 8ビット移動命令
  2. 16ビット移動命令
  3. PUSH/POP命令
  4. 交換命令
  5. 8ビット演算命令
  6. 16ビット演算命令
  7. 乗算命令
  8. ブロック転送命令
  9. 分岐命令
  10. コール命令
  11. ビット循環命令
  12. ビット操作命令
  13. 入出力命令
  14. CPU制御命令
  15. HD64180命令
  16. 凡例

8ビット移動命令

命令動作CZPSNH備考
LDr,r'r←r'------
LDr,nr←n------
LDu,u'u←u'------R800
LDu,nu←n------R800
LDr,(HL)r←(HL)------
LDr,(IX+d)r←(IX+d)------
LD(HL),r(HL)←r------
LD(IX+d),r(IX+d)←r------
LD(HL),n(HL)←n------
LD(IX+d),n(IX+d)←n------
LDA,(BC)A←(BC)------
LDA,(DE)A←(DE)------
LDA,(nn)A←(nn)------
LD(BC),A(BC)←A------
LD(DE),A(DE)←A------
LD(nn),A(nn)←A------
LDA,IA←I-!!!00割り込みフリップフロップ(IFF)の内容が入ります
LDA,RA←R-!!!00割り込みフリップフロップ(IFF)の内容が入ります
LDI,AI←A------
LDR,AR←A------

16ビット移動命令

命令動作CZPSNH備考
LDss,nnss←nn------
LDIX,nnIX←nn------
LDHL,(nn)H←(nn+1)
L←(nn)
------
LDss,(nn)ssH←(nn+1)
ssL←(nn)
------
LDIX,(nn)IXH←(nn+1)
IXL←(nn)
------
LD(nn),HL(nn+1)←H
(nn)←L
------
LD(nn),ss(nn+1)←ssH
(nn)←ssL
------
LD(nn),IX(nn+1)←IXH
(nn)←IXL
------
LDSP,HLSP←HL------
LDSP,IXSP←IX------

PUSH/POP命令

命令動作CZPSNH備考
PUSHqq(SP-1)←qqH
(SP-2)←qqL
SP←SP-2
------
PUSHIX(SP-1)←IXH
(SP-2)←IXL
SP←SP-2
------
POPqqqqL←(SP)
qqH←(SP+1)
SP←SP+2
------
POPIXIXL←(SP)
IXH←(SP+1)
SP←SP+2
------

交換命令

命令動作CZPSNH備考
EXDE,HLDE←→HL------
EXAF,AF'AF←→AF'------
EX(SP),HLL←→(SP)
H←→(SP+1)
------
EX(SP),IXIXL←→(SP)
IXH←→(SP+1)
------
EXX
BC←→BC'
DE←→DE'
HL←→HL'
------

8ビット演算命令

命令動作CZPSNH備考
ADDA,rA←A+r!!V!0!
ADDA,pA←A+p!!V!0!R800
ADDA,(HL)A←A+(HL)!!V!0!
ADDA,(IX+d)A←A+(IX+d)!!V!0!
ADDA,nA←A+n!!V!0!
ADCA,rA←A+r+Cy!!V!0!
ADCA,pA←A+p+Cy!!V!0!R800
ADCA,(HL)A←A+(HL)+Cy!!V!0!
ADCA,(IX+d)A←A+(IX+d)+Cy!!V!0!
ADCA,nA←A+n+Cy!!V!0!
SUBrA←A-r!!V!1!
SUBpA←A-p!!V!1!R800
SUB(HL)A←A-(HL)!!V!1!
SUB(IX+d)A←A-(IX+d)!!V!1!
SUBnA←A-n!!V!1!
SBCA,rA←A-r-Cy!!V!1!
SBCA,pA←A-p-Cy!!V!1!R800
SBCA,(HL)A←A-(HL)-Cy!!V!1!
SBCA,(IX+d)A←A-(IX+d)-Cy!!V!1!
SBCnA←A-n-Cy!!V!1!
ORrA←A∨r0!P!00
ORpA←A∨p0!P!00R800
OR(HL)A←A∨(HL)0!P!00
OR(IX+d)A←A∨(IX+d)0!P!00
ORnA←A∨n0!P!00
ANDrA←A∧r0!P!01
ANDpA←A∧p0!P!01R800
AND(HL)A←A∧(HL)0!P!01
AND(IX+d)A←A∧(IX+d)0!P!01
ANDnA←A∧n0!P!01
XORrA←Axor r0!P!00
XORpA←Axor p0!P!00R800
XOR(HL)A←Axor(HL)0!P!00
XOR(IX+d)A←Axor(IX+d)0!P!00
XORnA←Axorn0!P!00
CPrA-r!!V!1!
CPpA-p!!V!1!R800
CP(HL)A-(HL)!!V!1!
CP(IX+d)A-(IX+d)!!V!1!
CPnA-n!!V!1!
INCrr←r+1-!V!0!
INCpp←p+1-!V!0!R800
INC(HL)(HL)←(HL)+1-!V!0!
INC(IX+d)(IX+d)←(IX+d)+1-!V!0!
DECrr←r-1-!V!1!
DECpp←p-1-!V!1!
DEC(HL)(HL)←(HL)-1-!V!1!R800
DEC(IX+d)(IX+d)←(IX+d)-1-!V!1!
DAA
8ビットデータの演算後にBCDデータに変換する!!P!-!
CPL
A←~A----11
NEG
A←0-A!!V!1!

16ビット演算命令

命令動作CZPSNH備考
ADDHL,ssHL←HL+ss!---0?
ADDIX,ppIX←IX+pp!---0?
ADCHL,ssHL←HL+ss+Cy!!V!0?
SBCHL,ssHL←HL-ss-Cy!!V!1?
INCssss←ss+1------
INCIXIX←IX+1------
DECssss←ss-1------
DECIXIX←IX-1------

乗算命令

命令動作CZPSNH備考
MULUBA,rHL←A×r!!00--R800
rがB、C、D、Eの時のみ結果が保証される
Cフラグ:演算結果が8ビットで収まらない時セットされる
MULUWHL,ssDE:HL←HL×ss!!00--R800
ssがBC、SPの時のみ結果が保証される
Cフラグ:演算結果が16ビットで収まらない時セットされる

ブロック転送命令

命令動作CZPSNH備考
LDI
(DE)←(HL)
DE←DE+1
HL←HL+1
BC←BC-1
--!-00※1
LDIR
(DE)←(HL)
DE←DE+1
HL←HL+1
BC←BC-1
BC=0まで繰り返す
--0-00
LDD
(DE)←(HL)
DE←DE-1
HL←HL-1
BC←BC-1
--!-00※1
LDDR
(DE)←(HL)
DE←DE-1
HL←HL-1
BC←BC-1
BC=0まで繰り返す
--0-00
CPI
A-(HL)
HL←HL+1
BC←BC-1
-!!!1!※1※2
CPIR
A-(HL)
HL←HL+1
BC←BC-1
BC=0又はA=(HL)まで繰り返す
-!!!1!※1※2
CPD
A-(HL)
HL←HL-1
BC←BC-1
-!!!1!※1※2
CPDR
A-(HL)
HL←HL-1
BC←BC-1
BC=0又はA=(HL)まで繰り返す
-!!!1!※1※2

※1 P/V : BC=0となったとき0、それ以外で1

※2 Z : A=(HL)となったとき1、それ以外で0

分岐命令

命令動作CZPSNH備考
JPnnPC←nn------
JPNZ,nnZ=0ならPC←nn------
JPZ,nnZ=1ならPC←nn------
JPNC,nnCy=0ならPC←nn------
JPC,nnCy=1ならPC←nn------
JPPO,nnP/V=0ならPC←nn------
JPPE,nnP/V=1ならPC←nn------
JPP,nnS=0ならPC←nn------
JPM,nnS=1ならPC←nn------
JP(HL)PC←HL------
JP(IX)PC←IX------
JRePC←PC+e------
JRNZ,eZ=0ならPC←PC+e------
JRZ,eZ=1ならPC←PC+e------
JRNC,eCy=0ならPC←PC+e------
JRC,eCy=1ならPC←PC+e------
DJNZeB←B-1
B≠0ならPC←PC+e
------

コール命令

命令動作CZPSNH備考
CALLnn(SP-1)←PCH
(SP-2)←PCL
SP←SP-2
PC←nn
------
CALLNZ,nnZ=0なら
CALL nnと同じ
------
CALLZ,nnZ=1なら
CALL nnと同じ
------
CALLNC,nnCy=0なら
CALL nnと同じ
------
CALLC,nnCy=1なら
CALL nnと同じ
------
CALLPO,nnP/V=0なら
CALL nnと同じ
------
CALLPE,nnP/V=1なら
CALL nnと同じ
------
CALLP,nnS=0なら
CALL nnと同じ
------
CALLM,nnS=1なら
CALL nnと同じ
------
RET
PCL←(SP)
PCH←(SP+1)
SP←SP+2
------
RETNZZ=0ならRETと同じ------
RETZZ=1ならRETと同じ------
RETNCCy=0ならRETと同じ------
RETCCy=1ならRETと同じ------
RETPOP/V=0ならRETと同じ------
RETPEP/V=1ならRETと同じ------
RETPS=0ならRETと同じ------
RETMS=1ならRETと同じ------
RETI
割り込みルーチンからのRET命令------
RETN
ノンマスカブル割り込みからのRET命令------
RSTk(SP-1)←PCH
(SP-2)←PCL
SP←SP-2
PCL←k
PCH←0
kは00H,08H,10H,18H
20H,28H,30H,38Hのいずれか
------

ビット循環命令

命令動作CZPSNH備考
RLCA
A←A(6-0):A(7)
Cy←A(7)
!---00
RLA
A←A(6-0):Cy
Cy←A(7)
!---00
RRCA
A←A(0):A(7-1)
Cy←A(0)
!---00
RRA
A←Cy:A(7-1)
Cy←A(0)
!---00
RLD
A(3-0)←(HL)(7-4)
(HL)(7-4)←(HL)(3-0)
(HL)(3-0)←A(3-0)
-!P!00
RRD
A(3-0)←(HL)(3-0)
(HL)(3-0)←(HL)(7-4)
(HL)(7-4)←A(3-0)
-!P!00
RLCrA←A(6-0):A(7)
Cy←A(7)
!!P!00
RLC(HL)(HL)←(HL)(6-0):(HL)(7)
Cy←(HL)(7)
!!P!00
RLC(IX+d)(IX+d)←(IX+d)(6-0):(IX+d)(7)
Cy←(IX+d)(7)
!!P!00
RLrr←r(6-0):Cy
Cy←r(7)
!!P!00
RL(HL)(HL)←(HL)(6-0):Cy
Cy←(HL)(7)
!!P!00
RL(IX+d)(IX+d)←(IX+d)(6-0):Cy
Cy←(IX+d)(7)
!!P!00
RRCrr←r(0):r(7-1)
Cy←r(0)
!!P!00
RRC(HL)(HL)←(HL)(0):(HL)(7-1)
Cy←(HL)(0)
!!P!00
RRC(IX+d)(IX+d)←(IX+d)(0):(IX+d)(7-1)
Cy←(IX+d)(0)
!!P!00
RRrr←Cy:r(7-1)
Cy←r(0)
!!P!00
RR(HL)(HL)←Cy:(HL)(7-1)
Cy←(HL)(0)
!!P!00
RR(IX+d)(IX+d)←Cy:(IX+d)(7-1)
Cy←(IX+d)(0)
!!P!00
SLArr←r(6-0):0
Cy←r(7)
!!P!00
SLA(HL)(HL)←(HL)(6-0):0
Cy←(HL)(7)
!!P!00
SLA(IX+d)(IX+d)←(IX+d)(6-0):0
Cy←(IX+d)(7)
!!P!00
SRArr←r(7):r(7-1)
Cy←r(0)
!!P!00
SRA(HL)(HL)←(HL)(7):(HL)(7-1)
Cy←(HL)(0)
!!P!00
SRA(IX+d)(IX+d)←(IX+d)(7):(IX+d)(7-1)
Cy←(IX+d)(0)
!!P!00
SRLrr←0:r(7-1)
Cy←r(0)
!!P!00
SRL(HL)(HL)←0:(HL)(7-1)
Cy←(HL)(0)
!!P!00
SRL(IX+d)(IX+d)←0:(IX+d)(7-1)
Cy←(IX+d)(0)
!!P!00

ビット操作命令

命令動作CZPSNH備考
BITb,rZ←~rのbit b-!??01
BITb,(HL)Z←~(HL)のbit b-!??01
BITb,(IX+d)Z←~(IX+d)のbit b-!??01
SETb,rrのbit b←1------
SETb,(HL)(HL)のbit b←1------
SETb,(IX+d)(IX+d)のbit b←1------
RESb,rrのbit b←0------
RESb,(HL)(HL)のbit b←0------
RESb,(IX+d)(IX+d)のbit b←0------

入出力命令

命令動作CZPSNH備考
INA,(n)A←(n)I/O------(A)
INr,(C)r←(C)I/O-!P!00(B)
INF,(C)(C)I/O-!P!00(B)R800
INI
(HL)←(C)I/O
HL←HL+1
B←B-1
-!??1?(B)※1
INIR
(HL)←(C)I/O
HL←HL+1
B←B-1
B=0まで繰り返す
-1??1?(B)
IND
(HL)←(C)I/O
HL←HL-1
B←B-1
-!??1?(B)※1
INDR
(HL)←(C)I/O
HL←HL-1
B←B-1
B=0まで繰り返す
-1??1?(B)
OUT(n),A(n)I/O←A------(A)
OUT(C),r(C)I/O←r------(B)
OUTI
(C)I/O←(HL)
HL←HL+1
B←B-1
-!??1?(B)※1
OTIR
(C)I/O←(HL)
HL←HL+1
B←B-1
B=0まで繰り返す
-1??1?(B)
OUTD
(C)I/O←(HL)
HL←HL-1
B←B-1
-!??1?(B)※1
OTDR
(C)I/O←(HL)
HL←HL-1
B←B-1
B=0まで繰り返す
-1??1?(B)

※1 Z : B=0の時1、それ以外の時は0

備考の括弧内は16ビットI/Oアドレスを使う時の上位8ビット

CPU制御命令

命令動作CZPSNH備考
CCF
Cy←~Cy!---0?
SCF
Cy←11---00
NOP
ノーオペレーション------
HALT
停止------
DI
割り込み禁止(IFF←0)------
EI
割り込み許可(IFF←1)------
IM0割り込みモードを0に設定------
IM1割り込みモードを1に設定------
IM2割り込みモードを2に設定------

HD64180命令

命令動作CZPSNH備考
MLTssss←ssH×ssL------
TSTrA∧r0!P!01
TST(HL)A∧(HL)0!P!01
TSTnA∧n0!P!01
TSTIOn(C)I/O∧n0!P!01(0)
IN0r,(n)r←(n)I/O-!P!00(0)
IN0F,(n)(n)I/O-!P!00(0)
OUT0(n),r(n)I/O←r------(0)
OTIM
(C)I/O←(HL)
HL←HL+1
C←C+1
B←B-1
!!P!!!(0)※1※2
OTIMR
(C)I/O←(HL)
HL←HL+1
C←C+1
B←B-1
B=0まで繰り返す
割り込みで中断することができる
中断した時のフラグ変化はOTIMと同じ
0100!0(0)※2
OTDM
(C)I/O←(HL)
HL←HL-1
C←C-1
B←B-1
!!P!!!(0)※1※2
OTDMR
(C)I/O←(HL)
HL←HL-1
C←C-1
B←B-1
B=0まで繰り返す
割り込みで中断することができる
中断した時のフラグ変化はOTDMと同じ
0110!0(0)※2
SLP
SLEEPモードへ移行------

※1 C Z P/V S H : B-1の結果により変化する

※2 N : (HL)の最上位ビットが入る


レジスタ等の記号

オペランドr,r'B,C,D,E,H,L,A
u,u'B,C,D,E,IXH,IXL,A
pIXH,IXL
ssBC,DE,HL,SP
ppBC,DE,IX,SP
qqBC,DE,HL,AF
cc条件
kRST命令のコールアドレス
s許されるすべてのオペランド
動作の表記~x (xのビット反転)
xHxの上位8ビット
xLxの下位8ビット
x:yxとyのビットの結合
x(a)xのビットa
x(a:b)xのビットa~b
(x)I/OI/O空間のアドレスx
フラグ-変化しない
!変化する
00になる
11になる
?不定
Pパリティ
Vオーバーフロー

(IYに関する命令はIXをIYに読み替えて適用して下さい)


戻る