SSZアセンブラ説明書

命令語を動作を表す直感的な記述で書くことにより、注釈なしでもソースファイルが見やすくなるようにしたZ80アセンブラです。秋月電子のAKI−80GOLDキットに転送してテストできます。
改良を重ねている段階で、まだバグがあると思いますが、とりあえず紹介いたします。
(動作環境:現在、Windows98のみ動作確認しております。)

SSZアセンブラのダウンロード

ボタンの説明

サンプル使用例

一般的使用法

ソース記述仕様

ニーモニック対応表

ボタンの説明

 メイクファイルを開く

 メイクファイルを上書き保存

 メイクファイルを名前を付けて保存

 ソースファイルの追加

 選択されたソースファイルの上にファイルを挿入

 選択されたソースファイルの削除

 AKI80へプログラムの転送

 アセンブル

サンプル使用例

(AKI-80 RS232Cロード用ROMのプログラム)
 を押し”RSLOAD.AS”を開くと、ソースファイルがリストに表示されます。
 を押すとソースファイルがアセンブルされOUTファイルが表示されます。

(エンドレス周回テストプログラム)
 を押し”atctest.as”を追加、再度 を押し”atctest_macro.as”を追加します。
 で”atctest”で保存します。次回からは で”atctest.amk”を呼び出せます。
 を押すとソースファイルがアセンブルされOUTファイルが表示されます。
 でAKI-80に転送します。転送が終わるとプログラムがスタートします。

*エラーがある場合は、エラーリストが表示され、リストをダブルクリックするとOUTファイルのエラー箇所に表示が移動します。

一般的使用法

1.一般のテキストエディターでソースファイルを記述します。(拡張子は”AS”)
2.アセンブラので記述したソースファイルを読み込みます。複数のソースファイルがある場合は繰り返します。
3.読み込んだファイルの前に挿入したい場合はファイルを選択して、削除したい場合は選択してを押します。
4.上記で読み込んだファイルを、メイクファイルとして保存する場合はで名前を付けて保存します。(拡張子は”AMK”になります。)次回からはで保存したメイクファイルを呼び出します。
5.でアセンブルします。
6.でAKI-80に転送します。転送が終わるとプログラムがスタートします。
  RS232CポートCOM1に出力されますので他の機器がつながっていないかご注意ください。
7.デバッグが終わりROM化する場合はBINファイルをROMライターで焼きます。
(注) ソースリストの上からアセンブルしますので順番に注意してください。
    メイクファイルは、単純にソースファイル名を絶対パス付きで記述したテキストファイルですのでテキストエディターで編集可能です。   

作成されるファイルについて
【アセンブラで作成されるファイル】
1.メイクファイルがある場合
  メイクファイルがあるフォルダに
   "メイクファイル名.OUT"−>OUTファイル
   "メイクファイル名.BIN"−>マシン語バイナリファイル
   "メイクファイル名.OBJ"−>アセンブラ中間ファイル
2.メイクファイルを使用しない場合
  ソースファイルリストの先頭のソースファイルがあるフォルダに
   "先頭のソースファイル名.OUT"
   "先頭のソースファイル名.BIN"
   "先頭のソースファイル名.OBJ"
【ファイルの説明】
1.OUTファイル
  ソースファイルがアセンブルされた状況を示すテキストファイル。
2.BINファイル
  作成されたマシン語バイナリファイル。ROMライターで読むときはバイナリファイルを指定。
3.OBJファイル
  アセンブルで使用する中間ファイル(他のアセンブラとの互換は全くありません。)
4.INIファイル
  アセンブラ本体があるフォルダーに設定保存用"ASM.INI"が作られます。

リモートを行うための説明
AKI−80はGOLDキットでないとRAM上でプログラムを動かせないので、GOLDを使用してください。
添付の”RSLOAD.BIN”を64k又は256kのROMに焼いて、AKI−80に取り付けてください。
X’talは19.6608MHzを使用してください。
RS232CポートCOM1に出力されます。最低でもRS232Cのインターフェイス部分は必要ですので制作してください。

ソース記述仕様
ORGアドレス
アセンブル開始番地を指定します。
例 ORG$1000  1000h番地からアセンブルします。BINファイルは0hから1000hまでFFhで埋められます。

OFSアドレス
アセンブル開始番地を指定します。ソースファイルの頭で1回だけ指定します。ファイル転送してAKI80のRAM上で走らせる場合に使用します。
例 OFS$1000  1000h番地からアセンブルします。BINファイルの先頭から1000hのコードが始まります。

サブルーチン
サブルーチンを使用するときはサブルーチン登録します。
SUB サブルーチン名
   .
   .
END SUB (又はRET)
サブルーチンをコールするときは
  サブルーチン名
条件付きコールは
  (条件サブルーチン名

ラベル

1.ローカルラベル
  LOOP1:  同じサブルーチン内のみ可視 サブルーチン外ではメインルーチンでのみ可視
2.グローバルラベル
  ABC::   すべてから可視

AAA:
BBB::
SUB TEST
TOP:   A<B
       Z=0->TOP
END SUB (又は RET)
CCC: (END SUBを使用した場合はメインルーチンのローカルラベルになります。)
ラベル、サブルーチン登録合わせて1000件まで登録できます。

数値表現
123   10進表現
$7B   16進表現
7Bh      〃

オペランドのラベル演算

オペランドにグローバルラベルの演算値(加算、減算のみ)を入れることができます。


AAA:: =$12
BBB:: =$34
A<BBB-AAA+56 (LD A,BBB-AAA+56)
オーバーフローしている上位ビットは無視されます。

マクロ
マクロ登録すると頻繁に使用する命令群を登録名で呼び出せます。
MACRO マクロ名
   .
   .
END MACRO
マクロ登録中はラベルの使用できません。
マクロ登録中にマクロを呼び出せますが、ネストになる場合は5回までです。
1000件まで登録できます。

リマーク

ソース行の”;”から右はリマークになります。

データ
”¥”のあと16進表記で4バイトまでデータを指定できます。
例 \010203AB  必ず1バイトを2文字で表記してください。

アドレス指定
ラベル:=アドレス の様にラベルに直接アドレスを指定できます。

ベクトル指定
VECTOR=ラベル の様にするとラベルのアドレスがコードになります。
  INTベクトル等を指定するとき使用します。

ニーモニック対応表

LD d,s d<s
ADD A,s A+s>A
ADC A,s A+s+Cy>A
SUB A,s A-s>A
SBC A,s A-s-Cy>A
CP s A-s
INC s s+1
DEC s s-1
DAA DAA
NEG 0-A>A
AND A,s A^s>A
OR A,s AVs>A
XOR A,s A\s>A
CPL /A>A
SET n,s s-bitn<1
SET n,s s-bitn<0
SET n,s s-bitn?
RLC s Cy<s<
RL s <s<
RRC s >s>Cy
RR s >s>
RLD RLD
RRD RRD
SLA s <s<0
SRA s b7>s>
SRL s 0>s>
JP (HL) ===-->(HL)
JP (IX) ===-->(IX)
JP (IY) ===-->(IY)
JP label ===-->label
JP NZ,label Z=0-->label
JP Z,label Z=1-->label
JP NC,label C=0-->label
JP C,label C=1-->label
JP PO,label P=O-->label
JP PE,label P=E-->label
JP P,label S=P-->label
JP M,label S=M-->label
JR label ===->label
JR NZ,label Z=0->label
JR Z,label Z=1->label
JR NC,label C=0->label
JR C,label C=1->label
DJNZ label B-1=0->label
CALL label サブルーチン名
CALL 条件,label (条件)サブルーチン名
RET RET
RET 条件 (条件)RET
RST 00H〜38H RST 00H〜38H
IN d,(C) IN_d<(C)
IN A,(label) IN_A<(label)
OUT d,(C) OUT(C)<d
OUT A,(label) OUT(label)<A
LDI (DE)<(HL)(+)
LDIR (DE)<(HL)(+連続)
LDD (DE)<(HL)(-)
LDDR (DE)<(HL)(-連続)
CPI A-(HL)(+)
CPIR A-(HL)(+連続)
CPD A-(HL)(-)
CPDR A-(HL)(-連続)
INI IN(+)
INIR IN(+連続)
IND IN(-)
INDR IN(-連続)
OUTI OUT(+)
OTIR OUT(+連続)
OUTD OUT(-)
OTDR OUT(-連続)
POP d POP(d)
PUSH d PUSH(d)
EX d,s d<>s
EXX REG<>REG'
CCF /Cy>Cy
SCF Cy<1
HALT HALT
NOP NOP
EI INT可
DI INT不可
IM 0 IntMode(0)
IM 1 IntMode(1)
IM 2 IntMode(2)
RETI RETI
RETN RETN

免責事項
本アセンブラを使用した結果についてはいかなる責任も負いません。個人の責任において使用してください。

制作・著作 下野茂樹

*不明な点、バグ等メールいただければ幸いです。