2023/4/26(水)

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

 

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コマンドでトレース出来ます

 

 

N88-BASIC互換?XL-BASICは

以下のリンクからダウンロードできます

https://ulprojectmail.blogspot.com

Readme.txtを読んで遊んで下さい