SSPICアセンブラ説明書
命令語を動作を表す直感的な記述で書くことにより、注釈なしでもソースファイルが見やすくなるようにしたPICアセンブラです。
改良を重ねている段階で、まだバグがあると思いますが、とりあえず紹介いたします。
(動作環境:現在、Windows98,Me,2000で動作確認しております。)
メイクファイルを開く
メイクファイルを上書き保存
メイクファイルを名前を付けて保存
ソースファイルの追加
選択されたソースファイルの上にファイルを挿入
選択されたソースファイルの削除
アセンブル
(PIC16F84、PICF873テストプログラム)
1. を押し”F84TEST.AMK”を開くと、ソースファイルがリストに表示されます。
2. を押すとソースファイルがアセンブルされOUTファイルが表示されます。
3.作成されたバイナリファイル(F84TEST.BIN)をPICライターで焼きます。私は石島氏製作のPICWWを使用しています。
4.”F873TEST.AMK”も同様です。
*エラーがある場合は、エラーリストが表示され、リストをダブルクリックするとOUTファイルのエラー箇所に表示が移動します。
一般的使用法
1.一般のテキストエディターでソースファイルを記述します。(拡張子は”AS”)
2.アセンブラので記述したソースファイルを読み込みます。複数のソースファイルがある場合は繰り返します。
3.読み込んだファイルの前に挿入したい場合はファイルを選択して、削除したい場合は選択してを押します。
4.上記で読み込んだファイルを、メイクファイルとして保存する場合はで名前を付けて保存します。(拡張子は”AMK”になります。)次回からはで保存したメイクファイルを呼び出します。
5.でアセンブルします。
6.作成されたバイナリファイル(*.bin)をPICライターで焼きます。
(注) ソースリストの上からアセンブルしますので順番に注意してください。
メイクファイルは、単純にソースファイル名を記述したテキストファイルですのでテキストエディターで編集可能です。
作成されるファイルについて
【アセンブラで作成されるファイル】
1.メイクファイルがある場合
メイクファイルがあるフォルダに
"メイクファイル名.OUT"−>OUTファイル
"メイクファイル名.BIN"−>マシン語バイナリファイル
"メイクファイル名.OBJ"−>アセンブラ中間ファイル
2.メイクファイルを使用しない場合
ソースファイルリストの先頭のソースファイルがあるフォルダに
"先頭のソースファイル名.OUT"
"先頭のソースファイル名.BIN"
"先頭のソースファイル名.OBJ"
【ファイルの説明】
1.OUTファイル
ソースファイルがアセンブルされた状況を示すテキストファイル。
2.BINファイル
作成されたマシン語バイナリファイル。PICライターで読むときはバイナリファイルを指定。
3.OBJファイル
アセンブルで使用する中間ファイル
4.INIファイル
アセンブラ本体があるフォルダーに設定保存用"ASM.INI"が作られます。
インクルードファイルについて
各PIC固有のデータメモリーのアドレスや、設定値を指定するインクルードファイルはマイクロチップ社のアセンブラに付属するものを編集して使用できます。サンプルの”p16f84.inc”等を参考にしてください。
ソース記述仕様
ORGアドレス
アセンブル開始番地を指定します。
例 ORG$10 10h番地からアセンブルします。BINファイルは0hから0Fhまで00hで埋められます。
サブルーチン
サブルーチンを使用するときはサブルーチン登録します。
SUB サブルーチン名
.
.
END SUB (又はRET)
サブルーチンをコールするときは
サブルーチン名
ラベル
1.ローカルラベル
LOOP1: 同じサブルーチン内のみ可視 サブルーチン外ではメインルーチンでのみ可視
2.グローバルラベル
ABC:: すべてから可視
例
AAA:
BBB::
SUB TEST
LOOP: (COUNT)-1>M(Z)->
===->LOOP
END SUB (又は RET)
CCC: (END SUBを使用した場合はメインルーチンのローカルラベルになります。)
ラベル、サブルーチン登録合わせて1000件まで登録できます。
汎用レジスタへのメモリーアドレス自動割り当て
RAM=アドレス 割り当てる先頭アドレスを指定
ラベル:: [N] Nバイトのメモリーをラベル名で割り当て
●割り当てるアドレスはPICの種類に従い指定してください。
●汎用レジスタエリアを越えてもエラーがでませんので注意してください。
数値表現
123 10進表現
$7B 16進表現
7Bh 〃
オペランドのラベル演算
オペランドにグローバルラベルの演算値(加算、減算のみ)を入れることができます。
例
AAA:: =$12
BBB:: =$34
BBB-AAA+56>W (MOVLW BBB-AAA+56)
オーバーフローしている上位ビットは無視されます。
マクロ
マクロ登録すると頻繁に使用する命令群を登録名で呼び出せます。
MACRO マクロ名
.
.
END MACRO
マクロ登録中はラベルの使用できません。
マクロ登録中にマクロを呼び出せますが、ネストになる場合は5回までです。
1000件まで登録できます。
リマーク
ソース行の”;”から右はリマークになります。
データ
定数データをコードとして扱います。
DE 定数
例 DE $89
アドレス、数値の指定
ラベル EQU アドレス(数値)の様にラベルに直接アドレスを指定できます。
ニーモニック対応表
● ’d’には’W’か’F’を指定。 ’F’は’M’でも可。
ニーモニック | SSPICASM記述 |
ADDLW k ADDWF f,d ANDLW k ANDWF f,d BCF f,b BSF f,b BTFSC f,b BTFSS f,b CALL k CLRF f CLRW CLRWDT COMF f,d DECF f,d DECFSZ f,d GOTO k INCF f,d INCFSZ f,d IORLW k IORWF f,d MOVLW k MOVF f,d MOVWF f NOP RETFIE RETLW k RETURN RLF f,d RRF f,d SLEEP SUBLW k SUBWF f,d SWAPF f,d XORLW k XORWF f,d |
W+k>W W+(f)>d W^k>W W^(f)>d (f)_bitb<0 (f)_bitb<1 (f)_bitb=0-> (f)_bitb=1-> SUB NAME 00>(f) 00>W CLRWDT /(f)>d (f)-1>d (dがfの時 (f)-1 も可) (f)-1>d(Z)-> (dがfの時 (f)-1(Z)-> も可) ===->k (f)+1>d (dがfの時 (f)+1 も可) (f)+1>d(Z)-> (dがfの時 (f)+1(Z)-> も可) WVk>W WV(f)>d k>W (f)>(d) W>(f) NOP RETI RET k>W RET <<(f)<<->d (dがfの時 <<(f)<< も可) >>(f)>>->d (dがfの時 >>(f)>> も可) SLEEP k-W>W (f)-W>d SWAP(f)>d W\k>W W\(f)>d |
免責事項
本アセンブラを使用した結果についてはいかなる責任も負いません。個人の責任において使用してください。
制作・著作 下野茂樹
*不明な点、バグ等メールいただければ幸いです。