① | 機械語領域を確保する。これを行わないと,ファイルにあるソースファイルのアセンブル時に,
OM errorとなる。機械語領域確保には,CALモードまたはBASICモードで CLEAR ,確保するメモリーサイズ(byte) と入力する。この際,DEFSEG=0で,メモリーの開始番地は2000H。 |
② | メニューで,5:ASMBLで,アセンブラに入り,ソースファイルをアセンブルする。 結果のセーブ方法としては,BASICでのBSAVE, 自作プログラムによるファイル(F0-F9)への出力, モニターのSコマンドによるファイルへの出力がある。 |
③ | CALモードまたはBASICモードで,"MON"と入力してモニターに入る。 |
④ | 適当な操作後,"q"でモニターを終了できる。使えるコマンドは"?"で表示。 |
コマンド | 意味 | 書式 | 説明 |
---|---|---|---|
Base | B [セグメントベースアドレス] | セグメントベースアドレスの設定。 | |
Compare | C 開始アドレス,終了アドレス,比較先アドレス | メモリ内容のブロック比較。 | |
Dump | D [開始アドレス [ , 終了アドレス]] | メモリ内容を32バイト単位で表示。 | |
Edit | E 開始アドレス | メモリ内容を1バイトずつ修正。 | |
Fill | B 開始アドレス,終了アドレス,データ | メモリーブロックにデータを書き込む。 | |
Go | G [実行開始アドレス][ , ブレークポイント1 [ , ブレークポイント2][ , T]] | ブレークポイントを指定して,マシン語プログラムを実行。 | |
History | H [ステップ数] | ブレークポイントまでの64ステップのCS:IPを表示。 | |
Load | L 格納開始アドレス [ , ファイル番号] | ファイルからマシン語プログラムをロード。 | |
Move | M 開始アドレス,終了アドレス,転送先アドレス | メモリーブロックを転送。 | |
Quit | Q | モニターを終了。 | |
Save | S 開始アドレス,終了アドレス [ , ファイル番号] | マシン語プログラムをファイルにセーブ。 | |
Trace | T [ステップ数] | マシン語プログラムを1ステップずつ実行。 | |
View | V [デバイス名(CまたはP)] | 表示出力デバイスを指定。C,D,G,H,T,X,?に影響。 | |
eXamine | X [レジスタ名] | レジスタを省略した場合,全レジスタの内容表示。レジスタを指定した場合,そのレジスタの値を変更。 | |
help | ? | モニタコマンドの書式をヘルプ表示。。 | |
B(Base) | [segment base] |
C(Compare) | start,end,destination |
D(Dump) | [start[,end]] |
E(Edit) | start |
F(Fill) | start,end,data |
G(Go) | [start][,B1[,B2][,T]] |
H(History) | [steps] |
L(Load) | store[,file #] |
M(Move) | start,end,destination |
Q(Quit) | |
S(Save) | start,end[file #] |
T(Trace) | [steps] |
V(View) | [device] |
X(eXamine) | [register] |
?(help) | |
FX-890Pのアセンブラ・ソースのサンプルをリスト1に示す。
;*********************************************** | |||
;* SAMPLE SOURCE PROGRAM for FX-890P | |||
;*********************************************** | |||
ORG | 2000H | ||
START: | MOV | BIN,FFH | ;FFH=ASCガ'0'-'9','A'-'F'イガイノトキアタイ |
MOV | DL,ASC | ||
CMP | DL,30H | ||
JB | RETURN | ;ASC<'0' | |
CMP | DL,3AH | ||
JNB | HEXBIN | ;ASC>'9' | |
CMP | DL,30H | ;ASCガ'0'-'9'ナノデ, 16シンニスル | |
JMP | BINSET | ||
HEXBIN: | CMP | DL,41HH | |
JB | RETURN | ;ASC<'A' | |
CMP | DL,47H | ||
JNB | RETURN | ;ASC>'F' | |
SUB | DL,37H | ;ASCガ'A'-'F'ナノデ,16シンニスル | |
BINSET: | MOV | BIN,DL | |
RETURN: | IRET | ||
ASC | DB | '8' | ;input data |
BIN | DB | 1 DUP (?) | ;ouput data |
END | ;END OF PROGRAM | ||
ORG | : ORiGin | ・・・・・ | ローケーションカウンタの設定 |
END | : END | ・・・・・ | ソースプログラムの終了 |
EQU | : EQUivalent | ・・・・・ | シンボルの定義 |
DB | : Define Byte | ・・・・・ | 1バイト定数の定義 |
DW | : Define Word | ・・・・・ | 1ワード定数の定義 |
コマンド | 機能 | 記述形式 | 記述例 |
---|---|---|---|
オペランドで指定される16ビット数値によって,プログラムの開始アドレスを指定する。 ORG疑似命令がないと,マシン語エリアの先頭アドレスである2000Hがプログラム開始アドレスとなる。 | ORG 16ビット数値 |
| |
ソース・プログラムの終了を指定する。 | END |
| |
オペランドで指定した数値に名前を付ける。 | 名前 EQU 8ビット数値または16ビット数値 |
| |
1バイトデータを定義する。オペランドの指定方法によって,単にデータ領域の確保だけもできる。 変数名は省略可能。 | |||
・8ビット数値の場合 オペランドで指定した8ビット数値をそのままメモリー上に確保し,変数名で参照できるようにする。 8ビット数値は,カンマで区切って最大12個まで指定可能。数値は,10進数または16進数で記述。 |
変数名 DB 8ビット数値 [ , 8ビット数値 [ , [・・・]]] |
| |
・文字列の場合 オペランドで指定した文字列をそのままメモリー上に確保し,変数名で参照できるようにする。 文字列は,最大12文字まで指定できる。 |
変数名 DB 文字列 |
| |
・データ領域確保の場合 オペランドで指定した8ビット数値分,バイト単位でデータ領域を確保する。ただし,データの初期化はしない。 |
変数名 DB 8ビット数値 DUP (?) |
| |
1ワード(2バイト)データを定義する。オペランドの指定方法によって,単にデータ領域の確保だけもできる。 変数名は省略可能。 | |||
・16ビット数値の場合 オペランドで指定した16ビット数値をそのままメモリー上に確保し,変数名で参照できるようにする。 16ビット数値は,カンマで区切って最大6個まで指定可能。数値は,10進数または16進数で記述。メモリへの配置方法は,CPUがx86系なので,リトル・エンディアン。 |
変数名 DW 16ビット数値 [ , 8ビット数値 [ , [・・・]]] |
| |
・ラベル指定の場合 オペランドで指定したラベルの存在するメモリー上のオフセットアドレスをメモリーに格納する。 |
変数名 DW ラベル名 |
| |
・データ領域確保の場合 オペランドで指定した16ビット数値分,ワード(2バイト)単位でデータ領域を確保する。ただし,データの初期化はしない。 |
変数名 DW 16ビット数値 DUP (?) |
| |
アセンブラのソースコードで,メモリの間接アドレッシングを行うとき,データの型が不明瞭なとき,PTRで型指定を行う。
使用方法は,PTRの前にBYTE, WORD, DWORDを付ける。例えば,
ADD WORD PTR[SI], 4
のように記述する。なお,ニモニックやレジスタ名でデータの型が明らかな場合は,型指定は省略可能。
"OFFSET ラベル名"は,内臓RAMのトップアドレス(0000H)からのオフセット値を返す。
"SEG ラベル名"は,FX-890P/Z-1の内蔵アセンブラでは必ず0000Hを返す仕様になっている。
エラーメッセージ | エラー内容 | 対処方法 |
---|---|---|
Label Syntax | ラベルのエラー。 |
|
Mnemonic Syntax | ニモニックの文法エラー。 |
|
Operand Syntax | オペランドの文法エラー。 条件分岐命令の分岐先が範囲外である。 |
|
Undefined Label | オペランドに未定義のラベルを使用した。 |
|
OM error | マシン語エリアがない。CALモードに戻る。 |
|
Buffer Overflow | 1行の文字数が256以上になった。 |
|
Label Redefined | 同じラベル名を再度定義しようとした。 |
|
Label Overflow | 新しいラベルを登録できない。 |
|
Object Overflow | オブジェクトを格納できない。 |
|