N88-BASICでZ80アセンブリ (2回目)
2023/5/12(金)
N88-BASICでZ80アセンブリ (2回目)
N88-BASIC(PC-8801)互換?XL-BASICのMONで
アセンブリを動かして見ます
XLBasic01.exeをダブルクリックして
XL-BASICを起動して下さい
mon
でモニターに入り
a9000
でアセンブリを打って行きます
(小文字は大文字に変換されます)
LD A,80H … Aレジスタに文字コード&h80を入れる
LD HL,0F3C8H … HLレジスタにT-VRAM(&hF3C8)を入れる
LD B,80 … Bレジスタに文字数(80)を入れる
LD (HL),A … HL番地にAを入れる
INC HL … HL = HL + 1
INC A … A = A + 1
DJNZ 9007H … B = B - 1:IF B <> 0 THEN LD (HL),Aへ
RET … RETURN(終了)
相対ジャンプ命令も絶対アドレスで指定して下さい
自動で相対アドレスに変換されます
T-VRAMの先頭から
キャラクターコード&h80~
文字を80文字書込む
プログラムです
(XL-BASICはT-VRAMアドレスの変更には
対応していませんので常に&hF3C8~です)
g9000,-
で9000hからRETまで実行します
(途中のCALL,RETのペアでは止まりません)
tで1命令ずつトレース出来ます
t2で2命令ずつ,t-でRETまでトレースします
XLBasic/Doc/ReferenceXL.txtの
MONの所にコマンドの説明がありますので
参照して下さい
l9000,+d
で9000h~dhバイトの逆アセンブルを表示します
l9000,+d,d
でDATA文として逆アセンブルを
XLBasic01prn.txtに出力します
LOADすると行番号が付加されます
BASICプログラムからアセンブリを実行するのに
使用して下さい
XL-BASIC付属のアセンブリのサンプル
(XLBasic/AZ/z1.bas~z3.bas)は
この方法で作成しています
また、TRONの状態でBASICからマシン語を
呼び出す(CALL,USR)とMONに入るので
tコマンドでトレース出来ます
XL-BASICとblg~.zip(z80a002.bas)は
以下のリンクからダウンロードできます
N88-BASICでZ80アセンブリ (2回目)
N88-BASIC(PC-8801)互換?XL-BASICのMONで
アセンブリを動かして見ます
XL-BASICを起動して下さい
でモニターに入り
a9000
でアセンブリを打って行きます
(小文字は大文字に変換されます)
LD HL,0F3C8H … HLレジスタにT-VRAM(&hF3C8)を入れる
LD B,80 … Bレジスタに文字数(80)を入れる
LD (HL),A … HL番地にAを入れる
INC HL … HL = HL + 1
INC A … A = A + 1
DJNZ 9007H … B = B - 1:IF B <> 0 THEN LD (HL),Aへ
RET … RETURN(終了)
自動で相対アドレスに変換されます
キャラクターコード&h80~
文字を80文字書込む
プログラムです
対応していませんので常に&hF3C8~です)
で9000hからRETまで実行します
(途中のCALL,RETのペアでは止まりません)
t2で2命令ずつ,t-でRETまでトレースします
MONの所にコマンドの説明がありますので
参照して下さい
で9000h~dhバイトの逆アセンブルを表示します
l9000,+d,d
でDATA文として逆アセンブルを
XLBasic01prn.txtに出力します
LOADすると行番号が付加されます
BASICプログラムからアセンブリを実行するのに
使用して下さい
XL-BASIC付属のアセンブリのサンプル
(XLBasic/AZ/z1.bas~z3.bas)は
この方法で作成しています
また、TRONの状態でBASICからマシン語を
呼び出す(CALL,USR)とMONに入るので
tコマンドでトレース出来ます
XL-BASICとblg~.zip(z80a002.bas)は
以下のリンクからダウンロードできます