5.3.4 拡張機能制御命令

コード生成には影響を与えない制御命令です。

表 5.35

拡張機能制御命令

制御命令

機能内容

.ASSERT

オペランドに記述した文字列を標準エラー出力またはファイルに出力します。

?

テンポラリラベルの定義と参照を指定します。

@

@の前後の文字列を連結し、1つの文字列として扱います。

..FILE

アセンブラが処理を行っているアセンブリ言語ファイル名を示します。

.STACK

指定したシンボルに対してスタック値を定義します。

.LINE

行番号を変更します。

.DEFINE

置き換えシンボルを定義します。

.ASSERT

オペランドに記述した文字列をアセンブル時に、標準エラー出力に出力します。

[指定形式]

.ASSERT△“<文字列>”
.ASSERT△“<文字列>”>△<ファイル名>
.ASSERT△“<文字列>”>>△<ファイル名>

[詳細説明]

オペランドに記述した文字列をアセンブル時に、標準エラー出力に出力します。

ファイル名を指定した場合は、オペランドに記述した文字列をファイルに出力します。

ファイル名に絶対パスを記述した場合は、記述したディレクトリにファイルを生成します。

ファイル名に絶対パスを記述していない場合

(1)outputオプションで指定したファイル名にディレクトリ指定がない場合は、本制御命令で指定されたファイルをカレントディレクトリに生成します。

(2)outputオプションで指定したファイル名にディレクトリ指定がある場合は、本制御命令で指定されたファイル名にoutputオプションで指定されたファイルのディレクトリを付加したファイルを生成します。

(3)outputオプションが指定されていない場合、アセンブラ起動時にコマンド行で指定したファイルと同じディレクトリにファイルを生成します。

ファイル名に制御命令”..FILE”を記述した場合は、アセンブラ起動時にコマンド行で指定したファイルと同じディレクトリにファイルを生成します。

 

sample.datファイルにメッセージを出力します。

.ASSERT "string" > sample.dat

 

sample.datファイルにメッセージを追加します。

.ASSERT "string" >> sample.dat

現在処理中のファイルと同じ名前で拡張子を除くファイル名のファイルにメッセージを出力します。

.ASSERT "string" > ..FILE

 

[備考]

オペランドと制御命令の間には、必ず空白文字またはタブを記述してください。

オペランドの文字列は必ずダブルクォーテーションで囲ってください。

文字列をファイルに出力するときは、">"または">>"に続けてファイル名を指定してください。

>は、新規にファイルを生成して、そのファイルにメッセージを出力します。以前に同一名のファイルがある場合は、そのファイルに上書きされます。

>>は、ファイルの内容に追加して、メッセージを出力します。指定したファイルが存在しない場合は、新しくファイルを生成します。

">"または">>"の前後には、空白文字またはタブを記述できます。

ファイル名に制御命令"..FILE"を記述できます。

?

テンポラリラベルを定義します。

[ 指定形式]

?:
△<ニーモニック>△?+
△<ニーモニック>△?-

[詳細説明]

テンポラリラベルを定義します。

直前または直後に定義されたテンポラリラベルを参照します。

同一ファイル内で定義および参照が可能です。

ファイル内に65535個までのテンポラリラベルが定義できます。このとき、ファイル内に”.INCLUDE”が記述されている場合は、インクルードファイル内のテンポラリラベルを含み65535個までの記述ができます。

アセンブルリストファイルには、テンポラリラベルとして変換された結果が出力されます。

 

[備考]

テンポラリラベルとして定義したい行に“?:”を記述してください。

直前に定義したテンポラリラベルを参照したい場合は、命令のオペランドに“?-”を記述してください。

直後に定義したテンポラリラベルを参照したい場合は、命令のオペランドに“?+”を記述してください。

参照できるラベルは、直前と直後のラベルだけです。

 

@

マクロ引数、マクロ変数、予約シンボル、制御命令"..FILE"の展開ファイル名および指定文字列を連結します。

 

[指定形式]

<文字列>@<文字列>[@<文字列> ...]

[詳細説明]

マクロ引数、マクロ変数、予約シンボル、制御命令"..FILE"の展開ファイル名および指定文字列を連結します。

 

ファイル名の連結例:

現在処理中のファイル名がsample1.srcの場合、sample.datファイルにメッセージを出力します。

.ASSERT "sample" > [email protected]

 

文字列の連結例:

mov_nibble .MACRO p1,src,dest ; マクロ定義

MOV.@p1 src,dest

.ENDM

 

mov_nibble W,R1,R2 ; マクロ呼び出し

 

MOV.W R1,R2 ; マクロ展開後コード

 

[備考]

本制御命令の前後に記述した空白文字およびタブは、文字列として連結します。

本制御命令の前後には、文字列が記述できます。

@を文字データ(40H)として記述する場合は、ダブルクォーテーション(")で囲んでください。@を含む文字列をシングルクォーテーション(')で囲った場合は、@の前後の文字列を連結します。

一行に複数回記述できます。

連結した文字列を名前とする場合は、本制御命令の前後に空白文字およびタブを記述しないでください。

 

..FILE

アセンブラが処理中のファイル名に展開されます(アセンブリ言語ファイル名または インクルードファイル)。

 

[指定形式]

..FILE

[詳細説明]

アセンブラが処理中のファイル名に展開されます(アセンブリ言語ファイル名またはインクルードファイル)。

 

アセンブリ言語ファイル名が"sample.src"の場合、"sample"ファイルにメッセージを出力します。

.ASSERT "sample" > ..FILE

 

アセンブリ言語ファイル名が"sample.src"の場合、"sample.inc"ファイルをインクルードします。

.INCLUDE [email protected]

 

上記の行が、"sample.src"ファイルでインクルードしている"incl.inc"内に記述されている場合、通常、"incl.mes"に文字列を出力します。

.ASSERT "sample" >[email protected]

 

[備考]

制御命令".ASSERT"および制御命令".INCLUDE"のオペランドに記述できます。

本制御命令で読み込まれるファイル名は、ファイルの拡張子およびパスを除いた部分です。

 

.STACK

シンボルに対して、Call Walkerで表示するスタック使用量を定義します。

 

[ 指定形式]

.STACK△<名前>=<数値>

[詳細説明]

シンボルに対して、Call Walkerで表示するスタック使用量を定義します。

 

.STACK SYMBOL=100H

 

[備考]

1つのシンボルに対して定義できるスタック値は1度のみ有効とします。

2度以上指定した場合は、その定義を無効とします。また、指定できるスタック値は、

0H〜0FFFFFFFCHの範囲の4の倍数のみとし、それ以外を指定した場合はその定義を無効とします。

<数値>は定数値とし、かつ前方参照シンボル、外部参照シンボル、相対アドレスシンボルを使わずに指定してください。

.LINE

アセンブラのエラーメッセージあるいはデバッグ時に参照する行番号とファイル名を変更 します。

 

[指定形式]

.LINE△<ファイル名>,<行番号>
.LINE△<行番号>

[詳細説明]

アセンブラのエラーメッセージあるいはデバッグ時に参照する行番号とファイル名を変更します。

プログラム内の最初の.LINE以降は次の.LINEまで行番号、ファイル名を更新しません。

コンパイラは、デバッグオプションを指定してアセンブリ言語ファイルを出力する時にC言語ソースファイル行に対応する.LINEを生成します。

ファイル名を省略するとファイル名は変更されず、行番号だけが変更されます。

.LINE "C:\asm\test.c",5

 

.DEFINE

シンボルに文字列を定義します。

 

[指定形式]

<シンボル名>△.DEFINE△<文字列>
<シンボル名>△.DEFINE△'<文字列>'
<シンボル名>△.DEFINE△"<文字列>"

[詳細説明]

シンボルに文字列を定義します。

シンボルは再定義が可能です。

 

X_HI .DEFINE R1

MOV.L #0,X_HI

 

[備考]

空白文字またはタブを含む文字列を定義する場合は、必ずシングルクォーテーション(')または、ダブルクォーテーション(")で囲って記述してください。

本制御命令で定義されたシンボルは、外部参照指定ができません。

本制御命令と.EQU制御命令で同名のシンボルを宣言した場合、先に記述した方が優先されます。