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.