N88-BASICでZ80アセンブリ (1回目)

2023/5/3(水)
N88-BASICでZ80アセンブリ (1回目)
 
N88-BASIC(PC-8801)互換?XL-BASICの
MONで
お手軽に
Z80アセンブリを
動かして見ます
 
(実機のmonと機能が違うので注意して下さい)
 
XLBasic01.exeをダブルクリックして
XL-BASICを起動して下さい
 
mon
でモニターに入り
a9000
でアセンブリを打って行きます
LD A,1  … Aレジスタに1を入れる
LD B,2  … Bレジスタに2を入れる
ADD A,B … A = A + B
RET     … サブルーチンの終わり
 
xでレジスターの内容を表示出来ます
g9000
で9000から1命令実行
t
で続き(PCが示すアドレス)から1命令実行
t-
でRET実行まで進みます
(途中のCALL,RETのペアでは停止しません)
 
最終的に
Aレジスターに1+2の結果3が入ります
 
l9000,+6
で9000番地から6バイト逆アセンブルできます
 
XL-BASICでは
CALLされていない(RETでSPが0になる)
状態でRETが実行されると
それ以上実行されないようにしてあります
 
CLEAR ,&H8FFFなどでSPが書き変わった後は
安全処置が働かなくなるので注意して下さい
 
Ctrl+bまたはBreakキーでMONを終了し
BSAVE "ファイル名.bin",&H9000,6
(6はバイト数)
でセーブ
BLOAD "ファイル名.bin"
でロード
できます
 
注意
アセンブリの実行は固まって動かなくなることが
ありますので保存(セーブ)を忘れないようにして下さい
 
 
 
BASICのDATA文をつくる
 
l9000,+6
で9000h~6バイトの逆アセンブルを表示します
 
l9000,+6,d
でDATA文として逆アセンブルを
XLBasic01prn.txtに出力します
 
LOADすると行番号が付加されます
 
BASICプログラムからアセンブリを実行するのに
使用して下さい
 
XL-BASIC付属のアセンブリのサンプル
(XLBasic/AZ/z1.bas~z3.bas)は
この方法で作成しています
 
XLBasic/Doc/ReferenceXL.txtの
MONの所にコマンドの説明がありますので
参照して下さい
 
また、TRONの状態でBASICからマシン語を
呼び出す(CALL,USR)とMONに入るので
tコマンドでトレース出来ます
 
 
 
余談
普段あまり厳密に使い分けていないので
間違いがあるかもしれませんが
アセンブリとアセンブラの違いについて書いておきます
 
機械語(16進数の集まり、マシン語)と1:1で
対応している言語をアセンブリ言語と言う
 
アセンブリ言語を機械語に変換するプログラムを
アセンブラと言う
 
XL-BASICとblg~.zip(z80a001.bas)は
以下のリンクからダウンロードできます

https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい

 
 



 













このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)