TA/MACH-I用簡易アセンブラ"TASM"のページ
1.概要
16bitCPU"TA/MACH-I"用簡易アセンブラです。
作者が必要に迫られて作ったやっつけ仕事なので、バグはあるかもしれないし中途半端な仕様でしかも
ソースが読みにくいですがとりあえず公開します。
「命令一覧」に記載されているニーモニックで記述したプログラムを
Xilinx社製ISE Design SuiteのCORE Generatorが扱える.coe形式のメモリ初期値データに変換することが出来ます。
また、A~Zまでの26個の簡易ラベルを使用することが出来ます。
2.使用方法
コマンドラインで、
>tasm.exe [入力ファイル名] [出力ファイル名]
で実行すると出力ファイルにメモリデータが出力されます。
基本的には以上です。
3.プログラムの基本的な書き方
プログラムは1行に1命令、行頭から、
オペコード (オペランド1),(オペランド2)
と書きます。オペランドは0~2つです。命令によって取るオペランド数は異なります。
即値にはC言語風の0xから始まる16進表記と10進表記を使用できます。
行頭に#や;を書くとその行はコメント行になります。
行頭に改行があるとそのまま.coeファイルにも改行が反映されます。
(.coeファイルの読みやすさの向上に利用できます)
オペコードは大文字小文字を問いません。
.[16進数値4桁]
を書くとその16進数値4桁をそのままメモリの初期値に取ります。
(注:こちらには"0x"は付きません)
これを利用して機械語16進表記でプログラムを書くことも可能です。
行頭に
@[A-Z]
と書くと簡易ラベルになります。
しかし、あくまで簡易ラベルであり、ラベルの使用は
jmp命令のジャンプ先指定のみで可能です。
ジャンプ先指定に
@[A-Z]
で付けたラベルのアドレスを呼び出すには
jmp &[A-Z]
という書き方をします。
なお、TA/MACH-Iのオペランドにジャンプ先番地を取るjmp命令の
ジャンプ先番地指定フィールドは12bitであるため、全ての番地にジャンプすることは
現在のTASMではサポートされていません。
(4096命令以上のところにジャンプするためには工夫が要るでしょう。)
コメントなどの書き方の例:
SPC
#ラベルAに飛ぶ
jmp &A
;NOP(0000h)を格納
.0000
#以下メインルーチンが続く
#ここから先サブルーチン
@A
#簡単なディレイルーチン
#65536回ループを実行
PUSH r0
PUSH r1
LLI r0,0x01
LHI r0,0
LLI r1,0x00
LHI r1,0x00
ADD r1,r0
BZ +2
rjmp -2
POP r1
POP r0
RET
4.ダウンロード
ダウンロード(zip形式 11KB)
Copyright(C) 2010-2012 R.Suzuki All rights reserved.