AASM

開発元サイトの紹介文です。

「AASMは汎用マクロアセンブラで、マクロ定義によって様々なCPUに対応可能です。  Version3.50からC言語ライクなマクロも定義できるようになりました。」

Z80/HD64180,H8,AVR,PIC のマクロが同梱されています。 Z80のアセンブラとして使う場合は XASM などで書いたプログラムでもほぼ書き換えをしなくても済みます。 出力はインテルへクスファイルです、同梱された別のプログラムでモトーラS形式やバイナリファイルへの相互変換もできます。 またオフセットを付けることもできます。

http://www9.plala.or.jp/sagae_/frame.html の下のところから入手できます。

FIG1.jpg(14024 byte)

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,LAL,BL,CL,DL,EL,FL,GL と重なります。

FIG2.jpg(10180 byte)

Z80のマクロ定義ファイルの AASM .MAC に下のマクロを書き足します。

FIG3.jpg(22059 byte)

FIG4.jpg(4888 byte)

16ビットのレジスタ AX を使ったプログラムを書いてアセンブルします。



FIG6.jpg(32576 byte)

アセンブル結果です。

FIG5.jpg(13227 byte)

実行結果です。 レジスタ AX の値がメモリの 5678H 番地に書き込まれています。

FIG7.jpg(22268 byte)
 
   SH.MAC

SHマイコンのマクロ定義です。


     汎用レジスタ
FIG8.jpg(6159 byte)
     ADD Rm,Rn
FIG9.jpg(4145 byte)
     ADD #imm8,Rn
FIG10.jpg(3576 byte)
     ADDC Rm,Rn
FIG11.jpg(4312 byte)
     ADDV Rm,Rn
FIG12.jpg(4116 byte)
     AND Rm,Rn
FIG13.jpg(4129 byte)
     AND #imm,R0
FIG14.jpg(3836 byte)
     AND #imm,@(R0,GBR)
FIG15.jpg(4329 byte)
     BF label
FIG16.jpg(17778 byte)
     BF/S label
FIG17A.jpg(12669 byte)
FIG17B.jpg(4635 byte)
     BRA label
FIG18.jpg(20339 byte)
     BRAF Rm
FIG19.jpg(3106 byte)
     BSR label
FIG20.jpg(19701 byte)
     BSRF Rm
FIG21.jpg(3019 byte)
     BT label
FIG22.jpg(17602 byte)
     BT/S label
FIG23.jpg(17762 byte)
     CLRMAC
FIG24.jpg(3217 byte)
     CLRT
FIG25.jpg(3122 byte)
     CMP/EQ Rm,Rn
FIG26.jpg(4091 byte)
     CMP/GE Rm,Rn
FIG27.jpg(4348 byte)
     CMP/GT Rm,Rn
FIG28.jpg(4258 byte)
     CMP/HI Rm,Rn
FIG29.jpg(4153 byte)
     CMP/HS Rm,Rn
FIG30.jpg(4273 byte)
     CMP/PL Rn
FIG31.jpg(3572 byte)
     CMP/PZ Rn
FIG32.jpg(3677 byte)
     CMP/STR Rm,Rn
FIG33.jpg(5766 byte)