【オペランドの表現方法】
MPASMで使える表現方法ということで、下記の書き方を説明
します。
・テキストデータの書き方
・数値データの書き方
・演算記号の種類と書き方
・特殊オペランド High/Low
【テキストデータの書き方】
テキストデータは下記条件で記述します。
(1)「ASCIIコード」を使う
これは 00から7F(16進数)の範囲にある文字コードです。
(2)テキストストリング(連続データ)は「 " 」で囲む。もし行末
までに「”」が見つからなければ行末に「”」があるものとして
扱う。
(3)1行に書ける長さは255文字まで、もしこれ以上の時は無視
されます。
(4)DW擬似命令でstringを記述したとき、奇数個のデータの時は
最後に「0」が追加される。
例 記述例とオブジェクトコード
DW "testing output string one\n"
7465 7374 696E 6720 6F75 7470 7574
2073 7472 696E 6720 6F6E 650A
MOVLW "a"
B061
DATA "testing first output string"
7465 7374 696E 6720 6669 7273 7420
6F75 7470 7574 2073 7472 696E 6700
(5)ANSI'C'で使われているエスケープシーケンスで特殊文字を
扱うことが出来ます。
記号
意 味
記号
意 味
\a
ベル鳴動 \\
バックスラッシュ \b
バックスペース \?
? \f
フォームフィード \'
' \n
改行 \"
" \r
復帰 \0OO
8進数(ゼロ,数値,数値) \t
水平タブ(TAB) \xHH
16進数 \v
垂直タブ(TAB)
【数値データの書き方】
MPASMは下記の5種類の数値の書き方が出来ます。
デフォルトは16進数になっています。
数値には+か−の記号を付けることが出来ます。記号が無い時は+。
種 類
書 式
使用例
10進数
D'<digits>' D"100' 16進数
H'<hex_digits>' H'9F' H'9f' 8進数
O'<octal_digits>' O'777' 2進数
B'<binary_digits>' B'00111001' ASCII
'<chracter>'
A'<characters>''C'
A'C'
【演算記号の書き方】
MPASMで扱える演算記号は非常に沢山あります。しかし大部分は
指示命令の中で使うのみですので、ここでは直接命令で使う便利
なもののみ説明します。
詳細はMPLABのマニュアルにあります。
記号
意 味
使用例
$
現在のプログラムカウンタの値 GOTO $+3 high
アドレスの上位バイトを返す MOVLW high TABLE low
アドレスの下位バイトを返す MOVLW low TABLE
【特殊オペランド】
(1)High/Low
特殊な機能を持つオペランドで、High/Lowがあります。
これらは、ラベルのアドレス16ビットの上位/下位バイトを
取り出すためのオペランド用特殊演算記号です。
書式 high <operand> または low <operand>
使用例
MOVLW LOW SIZE ;下位バイト取り出し
MOVWF SIZE_LOW ;保存
MOVLW HIGH SIZE ;上位バイト取り出し
MOVWF SIZE_HIGH ;保存