=
<>
>
<
>=
<=または=< |
等しい
等しくない
大きい
小さい
大きいか等しい 小さいか等しい |
例)$1234(AND)$00FFは$34になる。
<< 左シフト
>> 右シフト
例) $80>>2は$20になる。
シンボルにはラベルとマクロ名がある。シンボルは以下の条件を満たす文字列でなければならない。また,ピリオド2個に数字が続くシンボルはマクロ定義のロー力ルラベルとして使用されるので,注意すること。
- 行の先頭から普いてあること。
- 先頭文字が,$,%,0〜9,ダブルクォーテーション,シングるクォーテーションでないこと(ただし,%スイッチがONの場合は先頭文字に%を使用できる)。
- スペース,コロン,セミコロン,カンマ,+,-,*,/,=,<,>,(,)を含まないこと。
ラベルは,アドレスや数値データを参照するための名札。=またはASET以外で定義されたラベルは,再定義するとエラーになる。ただし,最終的に最初に定義した値と同じにすれば再定義してもよい。
ステートメントには,以下の5種類がある。ステートメントは先頭から1文字以上空けて書き始めなければならないが,$コマンドだけは先頭から書き始めてもよい。
- 疑似命令
- ニーモニック
- 構造化制御文
- マクロ名
- $コマンド
アセンブルするマシン語プログラムの先頭アドレスを指定する。オブジェクトを生成する前に必ず指定しなければならない。REDA方式の分割アセンブル時や,オブジェクトの分割ファイル出力時,オブジェクトファイルはORG命令ごとにも分割される。
アセンブルしたオブジェクトを,ORG命令で指定したアドレスとは別のアドレスに格納するときに使用し,格納アドレスと先頭アドレスの差を指定する。ただし$PHASEと$DEPHASEの間では使用できない。
上の例では,3000H〜で動作するマシン鱈プログラムを3000H+8000H=B000Hから格納することになる。
REDA方式の分割アセンブル時,オブジェクトファイルはOFFSET命令ごとにも分割される。また,オブジェクトを分割ファイル出力する場合は,OFFSET命令は意味を持たない。
●DEFB データ または DB データ または DEFM データ または DMデータ
データがnの場合は,1バイトの数値をそのままオブジェクトとする。数値が1パイトを越える場合は,下位1バイトが有効となる。データが,"文字列"または'文字列'の場合は,文字列のASCIIコード列をそのままオブジェクトとする。"文字列"中にダブルクォーテーションを響くときや,'文字列'中にシングルクォーテーションを書くときは,2度続けて書く。データはカンマで区切っていくつでも記述できる。ただし,スイッチの変更によりコロンも区切りとして使用可。
例) DM "メッセージ", $0D, 0
DM “PRINT ""A"" ", 0 ;PRINT “A"
2バイトの数値を下位,上位の順にオブジェクトにする。nnはカンマで区切っていくつでも記述できる。ただし,スイッチの変更によリコロンも区切りとして使用可。
●DEFS nn[,n] または DS nn[,n] []内は省略可
nnバイト分のメモリを確保する。第2パラメータのnを指定した場合はnで,省略した場合は0で埋められる。nに未定義のラベルを含むことはできない。
ラベルの値を定義する。再定義はできない。nnがラベルを含む場合,そのラベルはすでに定義されていなければならない。ただし,スイッチによリ未定義ラベルかどうかのチエックをしないようにすることも可。その場合はPhase
errorのチェックもしない。
例) LABEL = $1234
LABEL = $5678
アセンブルを終了する。END以降のテキストは無視される。テキストの最後に置く場合は省略してもよい。
LDを省略した場合はカンマの代わりにイコールを書く。使用できる第1オペランドと第2オペランドの組み合わせは別表のとおり。第2オペランドがBC,DE,HL,IX,IYの場合にかぎり第3オペランドが書ける。その場合,まず第2オベランドに第3オペランドを代入してから,第2オペランドを第1オヘランドに代入する。また,
LD A,0
や,
A=0
とすると,
0AFH (XOR A)
を生成するが,0を00Hや$00などとすれば,
3EH,00H(LD A,00H)
を生成する。
例) (LABEL)=HL=$1234
や,
LD (LABEL), HL, $1234
は,
LD HL,$1234
LD (LABEL),HL
と同じ。
CALLの直後が数値の場合CALLを省略できるが,数値の先頭が$の場合は省略できない。さらに,数値の直後がRETで同一行内にある場合,JP命令に置き換えられる。
例) LABEL
は,
CALL LABEL
と同じ。
IF Z LABEL RET
IF Z CALL LABEL RET
IF Z JP LABEL
JP Z, LABEL
はすべて同じだが,
CALL Z, LABEL RET
はJP命令に置き換えられない。
●AND,XOR,OR,ADD,ADC,SUB,SBC,CP,EX命令
使用できる第1オペランドと第2オペランドの組み合わせは別表のとおり。ただし,第1オペランドがAレジスタの場合は,第1オベランドを省略してもよい。CP命令で,
CP A, 0
または,
CP 0
とすると,
B7H (OR A)
を生成するが,0を00Hや$00などとすれば,
FEH, 00H (CP 00H)
を生成する。また,
CP r, 0
の場合,
INC r DEC r
を生成するが,0を00Hや$00などとすれば,
LD A, r CP 00H
を生成する。
例) AND B
と,
AND A, B
は同じ。
力ンマまたは/で区切ってオペランドを複数個記述できる。オベランドにはIXH,IXL,IYH,IYL,(BC),(DE),(nn)も使用できるが,(BC),(DE),(nn)の場合はAレジスタの値を破壊する。ただし(nn)は1バイトのデータ。
カンマまたは/で区切ってオペランドを複数個記述できる。
●RLC,RRC,RL,SLA,SRA,SLL,SRL,BIT,RES,SET命令
オペランドに(BC),(DE),(nn)も使用できるが,Aレジスタの値を破壊する。ただし(nn)は1バイトのデータ。
オペランドにA,B,C,D,E,H,L,(HL),(BC),(DE),(IX+d),(IY+d),n,(nn),I,R,IXH,IXL,IYH,IYLが使用できるが,ザイログニーモニックにない命令はAレジスタの値を破壊する。ただし,nはOUT命令でのみ使用可。(nn)は1バイトのデータ。(C)は(BC)としてもよい。
アルゴリズムに即した記述を可能とするためのマクロ命令。$コマンドの$JMPが宣言されていればループ以外は相対分岐,$JRならすべて相対分岐,$JPならすべて絶対分岐に展開される。ただし,$JRでも条件がPE,PO,M,Pの場合は絶対分岐に展開される。デフォルトは$JMP。{は[で,}は]で代用可。真は0以外,偽は0。
●IF 条件式 JR nn
IF 条件式 JP nn
IF 条件式 CALL nn
IF 条件式 RET
IF 条件式 EXIT
条件式による比較後,条件分岐を行う。ただし,条件式にANDとORの演算子は使用できない。
文1と文2にはIF THEN文は記述できない。ELSE以降は省略できる。
例) IF Z THEN SCF ELSE RCF
IF C THEN INC A CALL ##
●IF 条件式 THEN
文1
EF 条件式 THEN
文2
ELSE
文3
FI
文1をTHENとは別の行に記述するか,最初のTHENをコロンとするとブロックIF文となる。EFはELSEIF,FIはENDIFでもよい。ネスティング可。
例) IF A=O THEN
B=1 CALL SUB1
ELSE
B=2 CALL SUB2
FI
IF A=O:B=1
EF A=1:B=3
EF A=2:B=5
ELSE :B=7
FI
無限ループ。脱出するにはEXIT文などを使用する。
例) {
CALL #GETKY IF A<>0 EXIT
CALL SUB
}
条件式が真の間ループする。条件判定はループの最初で行う。
例) WHILE (HL)<>0 {
A=(HL) CALL #PRINT
INC HL
}
条件式が偽の間ループする。条件判定はループの最初で行う。
例) UNTIL (HL)=0 {
A=(HL) CALL #PRINT
INC HL
}
条件式が真の間ループする。条件判定はループの最後で行う。
条件式が偽の間ループする。条件判定はループの最後で行う。
ループの最後でregから1を引き,0でなければまたループする。つまりregの値だけループする。regには,A,B,C,D,E,H,L,(HL),(BC),(DE),(nn),(IX+d),(IY+d),IXH,IXY,IYH,IYL,BC,DE,HL,IX,IYが使用できる。初期値はLDできる値やレジスタならなんでもよく省略してもよい。ただし,(BC),(DE),(nn),BC,DE,HL,IX,IYの場合はAレジスタの値を破壊する,(nn)は1バイトのデータ。
例) DO B,(DATA) {
CALL #PRNTS
}
DO HL {
PUSH HL
CALL SUB ;HL破壊
POP HL
}
例) {
A=(HL)
(DE)=A IF A=0 EXIT
INC HL
INC DE
}
n:1バイトの数値
nn:2バイトの数値
r:A,B,C,D,E,H,L,(HL),(IX+d),(IY+d),IXH,IXL,IYH,IYL
rr:BC,DE,HL,IX,IY
?:nまたはr
??:nnまたはrr
**:=,<>,>,<,>=,<=,=<,=>
●Z ゼロフラグがセットされている。
●NZ ゼロフラグがセットされていない。
●C キャリフラグがセットされている。
●NC キャリフラグがセットされていない。
●PO P/Vフラグが0。
●PV P/Vフラグが1。
●P サインフラグが0。
●M サインフラグが1。
rと?を比較。rには(BC),(DE),(n),I,Rも可。?にAは使用できない。**が<=か>で?がnの場合,nは0FFHという値をとることはできない。rがA以外の場合はすべてAレジスタを破壊する。ただしr=0とr<>0の場合だけは例外約にAレジスタを破壊しないが,0を00Hや$00などと普くとやはりAレジスタを破壊する。
rから1を引いた結果と?を比較。?にAは使用できない。**が<=か>で?がnの場合,nは0FFHという値をとることはできない。rがA以外の場合はすべてAレジスタを破壊する。ただしDEC(r)=0とDEC(r)<>0の場合だけは例外的にAレジスタを破壊しないが,0を00Hや$00などと轡くとやはりAレジスタを破壊する。
rに1を加えた結果と?を比較。?にAは使用できない。**が<=か>で?がnの場合,nは0FFHという値をとることはできない。rがA以外の場合はすべてAレジスタを破壊する。ただしINC(r)=0とINC(r)<>0の場合だけは例外的にAレジスタを破壊しないが,0を00Hや$00などと書くとやはりAレジスタを破壊する。
rrと??を比較。**が<=か>で?がnnの場合,nnは0FFFFHという値をとることはできない。Aレジスタを破壊する。
rrから1を引いた結果と??を比較。**が<=か>で??がnnの場合,nnは0FFFFHという値をとることはできない。Aレジスタを破壊する。
rrに1を加えた結果と??を比較。**が<=か>で??がnnの場合,nnは0FFFFHという値をとることはできない。Aレジスタを破壊する。
●BIT(n,r)=0
BIT(n,r)=1
BIT(n,r)<>0
BIT(n,r)<>1
rの第nビットが0か1かを調べる。ただしIXH,IXL,IYH,IYLを使用することはできない。また,rにrに(BC),(DE),(nn)を使用することもできるが,Aレジスタを破壊する。
例) IF BIT(7,D)=1 THEN A=D NEG D=A
条件式がどちらとも成立した場合,真となる。ORよリ優先順位が高い。
例) IF A>=“a" AND Aく=“z" THEN SUB $20
どちらかの条件式が成立した場合,真となる。ANDより優先順位が低い。
例) IF A=3 OR A=5 THEN INC DE
MACROからENDMまでをマクロ名の内容として定義する。マクロ名に,ニーモニックやラベル名と同じ名を付けることはできない。マクロ名が呼び出されたとき,定義した内容が展開され,定義に仮引数が使用してあれば,実引数に置き換えられる。マクロ定義のネスティング,マクロ名の再定義も可能。ただし必ずマクロ呼び出しより前に定義しなければならない。MACROとENDMはどちらもマルチステートメントにできないし,ENDMの前にシンボルがあってもいけない。また,ENDMは行の最初から書いてもよい。
例) LDIR. MACRO;LDIR. $A000,$D000,32
HL=%1
DE=%2
BC=%3
LDIR
ENDM
1番目の仮引数は%1,2番目は%2,10番目は%0となり,最高10個までの仮引数が使用できる。マクロ定義内で仮引数以外に%の文字が必要な場合は%%と記述する。置き換えは,文法を無視して機械的に行われる。
マクロ定義内でのみ有効なラベルを10個まで使用できる。それぞれ?1,?2,…… ?0と記述する。マクロ展開によるラベルの二重定義を防ぐためのもので,..1や..34などピリオド2個に数字が続くラベルに展開される。マクロ定義内でローカルラベル以外に?の文字が必要な場合は??と記述する。
例) RCALL MACRO ;RCALL addr
CALL GETPC
?1:DE=%I-?1;DE=%I-$
ADD HL,DE
CALL [HL]
ENDM
REPTからENDMまでの内容をnn回繰り返し生成する。nnは2バイトの数値。ネスティング可。REPTはマルチステートメントにできない。
例) REPT 4
ADD HL,HL
ENDM
は,
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
と同じ。
ステートメントとしてマクロ名が現れると,マクロ定義された内容が展開される。マクロ定義中の仮引数は,実引数に置き換えられる。マクロ呼び出しのネスティング可。ただし,必ず呼び出す前に定義されていなければならない。実引数の数が仮引数の数よリも少ない場合にはヌルストリングが仮引数に波されるが,逆に実引数の数が仮引数の数より多い場合はエラーになる。
実引数が複数個ある場合はカンマで区切る。<と>でくくられた文字列は,<と>を含まない1個の実引数とみなされ,文字列中に>を記述するには>>と2度書く。ダフルクォーテーション,またはシングルクォーテションでくくられた文字列はクォーテーション自身を含む1個の実引数とみなされ,文字列中にクォーテーション自身を記述するには""や''と2度書く。
$コマンドの一種。いずれの命令もマルチステートメントにできない。ネステイング可。
条件式には,数値のほかに,数値に論理演算子のNOT,AND,ORを使用したものが使える。ただし,NOT,AND,ORの前後は空白で区切ること。優先順位は以下のとおり。真は0以外,偽は0。
●$IF条件式
$ELSE
$ENDIFまたは$FI
条件式が真ならば,$IFから$ELSEまでを,偽ならば$ELSEから$ENDIFまでをアセンブルする。$ELSEが省略された場合は,条件式が真のとき$IFから$ENDIFまでをアセンブルする。$ENDIFは$FIでもよい。
例) $IF $>$0000 OR $く$8000
$BELL
$PRT HEX($),“アドレスが異常です。"
$STOP
$ENDIF
文字列が等しければアセンブルする。文字列中に>を記述することはできない。比較する文字列が復数個ある場合は,カンマで区切って並べて記述する。主にマクロ定義の中で使用する。
例) @JP MACRO
$IF <%1>,<HL,IX,IY>
JP (%1)
EXITM
$ENDIF
$IF <%1>,<BC,DE>
PUSH %1
RET
EXITM
$ENDIF
$IF<%1>,<>
$BELL
$PRT $NO,“
$ELSE
JP %1
$ENDIF
ENDM
アセンブラに対する命令。行の先頭から書き蛤めてもよい。
別のテキストをその場所に取り込む。ファイルネーム以後は行の終わりまで無視される。ディスク上のテキストをアセンブルする場合のみ使用できる。ネステイング可。
続きのテキストを読み込む。ファイルネーム以降は行の終わりまで無視される。メモリ上のテキストをアセンブルする場合や$INCLUDE中は使用できない。テープ上のテキストをアセンブルする場合はキー入力待ちになリ,何かキーを押すと読み込みを始め,BREAKキーを押すとアセンブルを中止する。REDA方式の分割アセンブル時オブジェクトファイルは$CHAIN命令ごとにも分割される。
バラメータを画面に表示する。パラメータには以下のものがあり,複数個ある場合はカンマで区切る。
“メッセージ" メッセージを表示する。
'メッセージ' メッセージを表示する。
数値 数値を10進数で表示する。
HEX(数値) 数値を16進数4桁で表示する。
キー入力待ちになる。何かキーを押すとアセンブルを再開する。BREAKキーを押すとアセンブルを終了する。
構造化制御文を相対分岐で展開する。ただし条件がPE,PO,M,Pの場合と,ループで届かない場合は,絶対分岐で展開する。何も指定しないと$JMPが指定されたことになる。
構造化制御文を相対分岐で展開する。ただし条件がPE,PO,M,Pの場合は絶対分岐で展開する。
スイッチを切り管える。コマンドモードの/コマンドと同じ。ただし,アセンブルが終了するとスイッチは元に戻る。
リストを出力する。何も指定しないと$LISTが指定されたことになる。
条件アセンブルの偽ブロックのリストを出力する。何も指定しないと$LFCONDが指定されたことになる。
マクロ展開部分のリストを出力する。何も指定しないと$LALLが指定されたことになる。
マクロ展開部分のうちオブジェクトコードを生成する部分のみリストを出力する。
MACRO80の.PHASE命令とほぼ同じ。ただし必ずORGが指定ずみでなければならない。
例) ORG $D000
;
#MAX EQU $1FE5
;
LD HL,LBL1
LD DE,$E000
LD BC,LBL2-LBL1
LDIR
CALL $E000
RET
LBL1:
$PHASE $E000
;
LD DE,MSGTBL
CALL #MSX
RET
MSGTBL:DM “TEST",$0D,0
;
$DEPHASE
LBL2:
END
$コマンドの$BEGINと$ENDで囲まれた部分はモジュールとなる。モジュール内のラベルは局所的なうべルとなり,PUBLIC宣言したラベルのほかは,モジュールの外からアクセスすることができない。またモジュールの外のラベルは,EXTRN宣言しないとモジュール内からアクセスすることができない。ただしラベルの前に$$を付ければ。モジュールの外のラベルをアクセスできる。モジュールは入れ子にはできない。モジュール内でマクロ定義をしても全域的に有効となるので,注意すること。
例) $BEGIN
;
PRTHL EXTRN ;EXTRN宣言
PRTHX EXTRN ;EXTRN宣言
;
LINDUMP:: ;PUBLlC宣言
CALL PRTHL
CALL $$PRNTS ;モジュールの外
LDB,8
LOOP: ;局所的なラベル
LDA,(HL) INCHL
CALL PRTHX
CALL $$PRNTS ;モジュールの外のラベル
DJNZ LOOP
;
RET
;
$END
モジュール内でラベルを定義するとき,ラベルの後ろにコロンを2個以上続けると,そのラベルはモジュールの外からアクセスすることができる。PUBLlC宣言したラベルをモジュール内で再定義する場合も,ラベルの後ろにコロンを2個以上続ける。コロンが2個以上ない場合は,再定義された値はそのモジュール内でのみ有効となる。
例) $BEGIN
LABEL::=$1234
$PRT HEX(LABEL)
LABEL::=$5678
$PRT HEX(LABEL)
LABEL::=$9ABC
$PRT HEX(LABEL)
;
$END
;
$PRTHEX(LABEL)
モジュールの外のラベルを宣言し,モジュール内からアクセスできるようにする。ただし,そのラベルは,モジュールの外ですでに定義ずみか,もしくはほかのモジュールですでにPUBLlC宣言ずみでなければならない。EXTRN宣言されたラベルはモジュール内で再定義することはできない。
●シンボルTBL overflow!
シンボル表があふれた。ラベルが多すぎる。
●ハッシュTBL overflow!
ハッシュ表があふれた。ラベルが多すぎる。
●マクロTBL overflow!
マク口定義の内容を登録しておくワークがあふれた。マクロが多すぎる。
●マクロワーク overflow!
マクロワークがあふれた。マクロ呼び出しのネスティングが深すぎる。
●Can't EXIT
EXITできない。
●Can't $CHAIN!
メモリ上のテキストをアセンブルする場合や$INCLUDE中は$CHAINできない。
●Can't$INCLUDE!
メモリ上やテープ上のテキストをアセンブルする場合は$INCLUDEできない。また,ネスティングは4レベルまで。
●Dup def label
ラベルの二重定義。
●Illegal address!
アドレスが正しくない。システムと重なっている。
●Illegal expression
式が間違っている。
●Illegal OR/AND
ORやANDは使用できない。
●Illegal register
使用できないレジスタ。
●Illegal string
文字列が途中で切れている。
●Illegal symbol
シンボルが間違っている。
●Line IF nesting
ラインIFはネステインクできない。
●Missing[(]
(がない。
●Missing[)]
)がない。
●Missing[,]
力ンマがない。
●Missing ENDM
ENDMがない。
●Missing left brace
{または[がない。
●Missing ORG!
ORGがない。
●Missing THEN
THENがない。
●Missing $BEGIN
$BEGINがないのに$ENDが現れた。
●Missing $END
$ENDがない。
●Missing $ENDIF
$ENDIFがない。
●Missing $IF
$IFがないのに$ELSEや$ENDIFが現れた。
●Multi S. error
マルチステートメントになっている。
●Out of memory!
メモリが足りない。
●Out of renge
数値が範囲外の値。
●Phase error
パス1とパス2でラベルの値が一致しない。
●Relative eror
相対ジャンプが届かない。
●Struct error
構造化制御文の構造が間違っている。
●Struct stack overflow!
構造スタックがあふれた。構造化制御文のネスティングは16レベルまで。
●StructTBL overflow!
構造表があふれた。構造化制御文が多すぎる。XSコマンドで対処。
●Syntax error
文法エラー。
●Too long line!
1行が長すぎる。l行は128文字まで。
●Too many modules!
モジュールが多すぎる。モジュールは254個まで。
●Undef EXTRN label
外部ラベルが定義されていない。
●Undef label
未定義ラベル。
●$IF nesting overflow!
$IFのネスティングが深すぎる。ネスティングは8レベルまで。 |
前\後 |
A |
B |
C |
D |
E |
H |
L |
(HL) |
(BC) |
(DE) |
(IX
+d) |
(IY
+d) |
n |
(nn) |
I |
R |
IXH |
IXL |
IYH |
IYL |
A |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
● |
● |
● |
● |
B |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
■ |
■ |
■ |
A |
A |
A |
● |
● |
● |
● |
C |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
■ |
■ |
■ |
A |
A |
A |
● |
● |
● |
● |
D |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
■ |
■ |
■ |
A |
A |
A |
● |
● |
● |
● |
E |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
■ |
■ |
■ |
A |
A |
A |
● |
● |
● |
● |
H |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
■ |
■ |
■ |
A |
A |
A |
A |
A |
A |
A |
L |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
■ |
■ |
■ |
A |
A |
A |
A |
A |
A |
A |
(HL) |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
A |
A |
A |
■ |
A |
A |
A |
A |
A |
A |
A |
(BC) |
■ |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
(DE) |
■ |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
(IX+d) |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
A |
A |
A |
■ |
A |
A |
A |
A |
A |
A |
A |
(IY+d) |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
A |
A |
A |
A |
A |
■ |
A |
A |
A |
A |
A |
A |
A |
(nn) |
■ |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
I |
■ |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
R |
■ |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
A |
IXH |
● |
● |
● |
● |
● |
A |
A |
A |
A |
A |
A |
A |
● |
A |
A |
A |
● |
● |
A |
A |
IXL |
● |
● |
● |
● |
● |
A |
A |
A |
A |
A |
A |
A |
● |
A |
A |
A |
● |
● |
A |
A |
IYH |
● |
● |
● |
● |
● |
A |
A |
A |
A |
A |
A |
A |
● |
A |
A |
A |
A |
A |
● |
● |
IYL |
● |
● |
● |
● |
● |
A |
A |
A |
A |
A |
A |
A |
● |
A |
A |
A |
A |
A |
● |
● |
前\後 |
BC |
DE |
HL |
SP |
IX |
IY |
AF |
nn |
(nn) |
BC |
● |
● |
● |
|
SP |
SP |
|
■ |
■ |
DE |
● |
● |
● |
|
SP |
SP |
|
■ |
■ |
HL |
● |
● |
● |
○ |
SP |
SP |
|
■ |
■ |
SP |
|
|
■ |
|
■ |
■ |
|
■ |
■ |
IX |
SP |
SP |
SP |
○ |
SP |
SP |
|
■ |
■ |
IY |
SP |
SP |
SP |
○ |
SP |
SP |
|
■ |
■ |
AF |
|
|
|
|
|
|
|
|
|
(nn) |
■ |
■ |
■ |
■ |
■ |
■ |
|
|
|
■:Z-80の命令。
●:他のレジスタに影響を与えない命令。
○:フラグのみ変化する命令。
A:Aレジスタのみ変化する命令。
SP:スタックを使用する命令。他のレジスタには影響を与えない。
[ADD/ADC/SUB/SBC/AND/XOR/OR/CP命令]
前\後 |
A |
B |
C |
D |
E |
H |
L |
(HL) |
(BC) |
(DE) |
(IX
+d) |
(IY
+d) |
n |
(nn) |
I |
R |
IXH |
IXL |
IYH |
IYL |
A |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
■ |
|
|
■ |
■ |
■ |
|
|
|
● |
● |
● |
● |
B |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
C |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
D |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
E |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
H |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
L |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
(HL) |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
(BC) |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
(DE) |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
(IX+d) |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
(IY+d) |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
(nn) |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
I |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
R |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
IXH |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
IXL |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
IYH |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
IYL |
△ |
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
A |
|
|
|
A |
A |
A |
A |
注) △印は,A印と同じ。ただしSUB/SBC/CP命令では使用不可。
[AND/XOR/OR/CP命令]
[ADC命令]
前\後 |
BC |
DE |
HL |
SP |
IX |
IY |
AF |
nn |
(nn) |
BC |
A |
A |
A |
|
A |
A |
|
A |
|
DE |
A |
A |
A |
|
A |
A |
|
A |
|
HL |
A |
A |
A |
|
A |
A |
|
A |
|
SP |
|
|
|
|
|
|
|
|
|
IX |
A |
A |
A |
|
A |
A |
|
A |
|
IY |
A |
A |
A |
|
A |
A |
|
A |
|
AF |
|
|
|
|
|
|
|
|
|
(nn) |
|
|
|
|
|
|
|
|
|
前\後 |
BC |
DE |
HL |
SP |
IX |
IY |
AF |
nn |
(nn) |
BC |
● |
A |
A |
|
A |
A |
|
A |
|
DE |
● |
● |
● |
|
A |
A |
|
A |
|
HL |
■ |
■ |
■ |
■ |
A |
A |
|
A |
|
SP |
|
|
|
|
|
|
|
|
|
IX |
A |
A |
A |
|
A |
A |
|
A |
|
IY |
A |
A |
A |
|
A |
A |
|
A |
|
AF |
|
|
|
|
|
|
|
|
|
(nn) |
|
|
|
|
|
|
|
|
|
前\後 |
BC |
DE |
HL |
SP |
IX |
IY |
AF |
nn |
(nn) |
BC |
● |
A |
A |
|
A |
A |
|
A |
|
DE |
● |
● |
● |
|
A |
A |
|
A |
|
HL |
■ |
■ |
■ |
■ |
A |
A |
|
A |
|
SP |
|
|
|
|
|
|
|
|
|
IX |
■ |
■ |
A |
■ |
■ |
A |
|
A |
|
IY |
■ |
■ |
A |
■ |
A |
■ |
|
A |
|
AF |
|
|
|
|
|
|
|
|
|
(nn) |
|
|
|
|
|
|
|
|
|
前\後 |
BC |
DE |
HL |
SP |
IX |
IY |
AF |
nn |
(nn) |
BC |
A |
A |
A |
|
A |
A |
|
A |
|
DE |
● |
● |
● |
|
A |
A |
|
A |
|
HL |
■ |
■ |
■ |
■ |
A |
A |
|
A |
|
SP |
|
|
|
|
|
|
|
|
|
IX |
A |
A |
A |
|
A |
A |
|
A |
|
IY |
A |
A |
A |
|
A |
A |
|
A |
|
AF |
|
|
|
|
|
|
|
|
|
(nn) |
|
|
|
|
|
|
|
|
|
前\後 |
BC |
DE |
HL |
SP |
IX |
IY |
AF |
nn |
(nn) |
BC |
A |
A |
A |
|
A |
A |
|
A |
|
DE |
A |
A |
A |
|
A |
A |
|
A |
|
HL |
● |
● |
● |
● |
A |
A |
|
A |
|
SP |
|
|
|
|
|
|
|
|
|
IX |
A |
A |
A |
|
A |
A |
|
A |
|
IY |
A |
A |
A |
|
A |
A |
|
A |
|
AF |
|
|
|
|
|
|
|
|
|
(nn) |
|
|
|
|
|
|
|
|
|
前\後 |
A |
B |
C |
D |
E |
H |
L |
(HL) |
(BC) |
(DE) |
(IX
+d) |
(IY
+d) |
n |
(nn) |
I |
R |
IXH |
IXL |
IYH |
IYL |
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
B |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
|
|
|
|
A |
A |
A |
A |
C |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
|
|
|
|
A |
A |
A |
A |
D |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
|
|
|
|
A |
A |
A |
A |
E |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
|
|
|
|
A |
A |
A |
A |
H |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
|
|
|
|
|
|
|
|
L |
|
A |
A |
A |
A |
A |
A |
A |
|
|
A |
A |
|
|
|
|
|
|
|
|
(HL) |
|
A |
A |
A |
A |
A |
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
(BC) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(DE) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(IX+d) |
|
A |
A |
A |
A |
A |
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
(IY+d) |
|
A |
A |
A |
A |
A |
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
(nn) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
I |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IXH |
|
A |
A |
A |
A |
|
|
|
|
|
|
|
|
|
|
|
A |
A |
|
|
IXL |
|
A |
A |
A |
A |
|
|
|
|
|
|
|
|
|
|
|
A |
A |
|
|
IYH |
|
A |
A |
A |
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
A |
IYL |
|
A |
A |
A |
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
A |
前\後 |
BC |
DE |
HL |
SP |
IX |
IY |
AF |
nn |
(nn) |
(SP) |
BC |
SP |
SP |
SP |
|
SP |
SP |
|
|
|
|
DE |
SP |
SP |
■ |
|
SP |
SP |
|
|
|
|
HL |
SP |
● |
SP |
|
SP |
SP |
|
|
|
■ |
SP |
|
|
|
|
|
|
|
|
|
|
IX |
SP |
SP |
SP |
|
SP |
SP |
|
|
|
■ |
IY |
SP |
SP |
SP |
|
SP |
SP |
|
|
|
■ |
AF |
|
|
|
|
|
|
■ |
|
|
|
(nn) |
|
|
|
|
|
|
|
|
|
|
(SP) |
|
|
■ |
|
■ |
■ |
|
|
|
|
(C)1990 Nobuaki Onuki(original)
(C)1997 Junji Okazaki(edited)
(C)2024 Oh!Ishi,Nibbles Lab.(formatted)