開発元サイトの紹介文です。
「AASMは汎用マクロアセンブラで、マクロ定義によって様々なCPUに対応可能です。
Version3.50からC言語ライクなマクロも定義できるようになりました。」
Z80/HD64180,H8,AVR,PIC
のマクロが同梱されています。
Z80のアセンブラとして使う場合は
XASM
などで書いたプログラムでもほぼ書き換えをしなくても済みます。
出力はインテルへクスファイルです、同梱された別のプログラムでモトーラS形式やバイナリファイルへの相互変換もできます。
またオフセットを付けることもできます。
http://www9.plala.or.jp/sagae_/frame.html
の下のところから入手できます。
AASM
は独自のプロセッサを作るときのプログラミング環境の問題の解決と言う点で論理設計者の
大きな助けになります。
またプロセッサを設計する前に命令セットの運用試験のようなこともできます。
たとえば新規プロセッサのアセンブリ言語に対してその命令が実行された結果と同じ結果に
なるような
Z80
の命令群をマクロで定義すれば新規プロセッサのための命令セットを
Z80
で実行することができるので新規プロセッサの設計前に命令セットの使い勝手を試すことが
できるのです。
他の使い方として
H8
のアセンブリ言語を
Z80
で実行させるとかもできますし、その逆もできます。
AASM
の存在はアセンブリ言語と言うものに面白い視点を投げかけているように思います。
マクロを指定しないでアセンブルするときは
AASM .MAC
が暗黙的に指定されたことになります。
これは
Z80、HD64180用マクロ定義
です。
マクロを自分で書きたい人にはこのファイルが良い見本になると思います。
Z80
は裏レジスタを持っていますのでレジスタ
A
から
B,C,D,E,H,L
は表と裏で2組持っています。
これらを表裏あわせて16ビットとすると16ビットのレジスタを
AX,BX,CX,DX,EX,FX,GX
と7本持っていることになります。
既存のレジスタ
A,B,C,D,E,H,L
は
AL,BL,CL,DL,EL,FL,GL
と重なります。
Z80のマクロ定義ファイルの
AASM .MAC
に下のマクロを書き足します。
16ビットのレジスタ
AX
を使ったプログラムを書いてアセンブルします。
アセンブル結果です。
実行結果です。
レジスタ
AX
の値がメモリの
5678H
番地に書き込まれています。
SHマイコンのマクロ定義です。