■CONFIG (set processor configuration bits) コンフィギュレーションビットを設定
書 式 __CONFIG  <expr>
説 明 各プロセッサチップに従ったコンフィギュレーションビットを指定する.
コンフィギュレーションビットの詳細は各プロセッサの説明書による.
この命令を使う前に,「LIST」命令か「PROCESSOR」命令でプロセッサ種別が指定されていなければならない.
使用例         LIST    P=PIC16F84A
        __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
 
■DB (declare data of one byte) 1byteのデータをプログラムメモリに確保
書 式 [<label>]  DB  <exp>[,<expr>,...,<expr>]
説 明 プログラムメモリ内に 1 byte の定数を確保する.
複数定数指定がある時は連続したメモリ内に順次確保する.
使用例         DB      't',0FH
 
■DE (declare EEPROM data byte) EEPROMに1byteのデータを確保
書 式 [<label>]  DE  <exp>[,<expr>,...,<expr>]
説 明 EEPROM 内に 1 byte の定数を確保する.
使用例         DE      "My program",0xAF
 
■DW (declare data of one word) 1wordのデータをプログラムメモリに確保
書 式 [<label>]  DW  <exp>[,<expr>,...,<expr>]
説 明 プログラムメモリ内に 1 word の定数を確保する.
複数定数指定がある時は連続したメモリ内に順次確保する.
使用例         DW      0FF00H
 
■#DEFINE (define a text substitution label) テキストの代用ラベルを定義
書 式 #DEFINE  <name>  [<string>]
説 明 <string>;の代用として<name>を使えるように指定する.
<string>;が省略された場合は,<name>を内部定義し,IFDEF 命令等で使える様になる.
使用例 #DEFINE length  20
 
■END (end program block) ソースリストの終了を宣言
書 式   END
説 明 プログラムソースリストの終了であることをアセンブラに伝える.
ソースリストの最後に必ず必要
使用例         END
 
■EQU (define an assenbler constant) 定数のラベルを定義
書 式 <label>  EQU  <expr>
説 明 <expr>の値の代用として<label>を使えるように指定する.
使用例 FOUR    EQU     4
 
■#INCLUDE (include additional source file) 他のソースファイルを取り込む
書 式   #INCLUDE  <<include_file>>
  #INCLUDE  "<include_file>"
説 明 指定されたファイルをソースコードの一部として読み込む.
ファイルのパスは,指定されていなければカレントディレクトリ,ソースファイルのディレクトリ,MPASM のディレクトリの順に探す.
使用例         #INCLUDE "P16F84.inc"
 
■LIST (list options) アセンブル結果のリスト出力を指定
書 式   LIST  [<list_options>,...,<list_options>]
説 明 下表のオペランドで指定する内容により,ソースリストに対して各種の設定をする.
<list_options>を指定しない場合はリスト出力を ON する機能だけとなる.

Option Default Description
b=nnn 8 タブスペースの数の指定
c=nnn 132 1 行のカラム数の指定
f=<format> INHX8M hex file の出力フォーマット指定
free FIXED 自由形式にする
fixed FIXED 固定形式にする
mm=ON|OFF On リストにメモリマップを印刷する|しない
n=nnn 60 1 ページあたりの行数指定
p=<type> None プロセッサ種別指定 例:p=PIC16F84
r=<radix> hex 数値の扱い指定 hex, dec, oct
st=ON|OFF On リストにシンボルテーブルを印刷する|しない
t=ON|OFF Off 1 行はみ出し分を折り返す|返さない
w=0|1|2 0 アセンブラのメッセージレベル指定
x=ON|OFF On マクロを展開する|しない
 注)nnn は 10 進数で指定
 
■ORG (set program origin) プログラム開始番地を指定
書 式 [<label>]  ORG  <expr>
説 明 プログラムの開始番地を指定する.
番地指定が無い場合は 0 番地からとなる.label には<expr>の値がセットされる.
リロケータブルファイルとする場合には使用しない.
使用例 init_1  ORG     0x20
 
■PAGE (insert listing page eject) リストの改ページを指定
書 式   PAGE
説 明 リスト出力で改ページを挿入する場合に使う.
 
■PROCESSOR (set processor type) PICの種別を指定
書 式   PROCESSOR  <processor_type>
説 明 プロセッサの種別を指定する.
使用例         PROCESSORR      PIC16F84A
 
■RADIX (specify default radix) 数値の進数を指定
書 式   RADIX  <default_radix>
説 明 デフォルトの数値の扱いを指定する.
<default_radix>の値は,hex:16 進数,dec:10 進数,oct:8 進数
使用例         RADIX   dec
 
■RES (reserve memory) メモリ領域の予約指定
書 式 [<label>]  RES  <mem_units>
説 明 <mem_units>で示す数だけメモリ領域を確保する.メモリ内容は変更しない.
使用例 TEMP1   RES     1
 
■SET (set an assenbler variable) 変数のラベルを設定
書 式 <label>  SET  <expr>
説 明 label に expr の値を代入する.
EQU 命令と同じだが,違いは SET は一時的指定であり,後から SET 命令で変更することができる.
使用例 area    SET     0
width   SET     0x12
length  SET     0x14
area    SET     length * width
 
■#UNDEFINE (undefine a text substitution label) テキストの代用ラベルの定義取り消し
書 式 #UNDEFINE  <name>  [<string>]
説 明 <string>の代用である<name>の定義を取り消す.
使用例 #UNDEFINE       length  20
 
■IF (begin conditional assenbled block)     IF条件判定文
  ELSE (begin alternative assembly block IF)
  ENDIF (end alternative assembly block IF)
書 式   IF  <expr>
    -----
  ELSE
    -----
  ENDIF
説 明 <expr>の条件式が true の場合に,IF 文以下の命令がアセンブルされる.
elseがある場合は,<expr>が false の場合に,else 文以下の命令がアセンブルされる.
いずれの場合にも,ENDIF 文までの間の命令が対象となる.
使用例 IF      version == 100        ;条件
        MOVLW   0x0A
ELSE
        MOVLW   0x14
ENDIF
 
■WHILE (perform loop while condition is true) 条件が成立するまで繰り返し
  ENDW (end a WHILE loop)
書 式   WHILE  <expr>
    -----
  ENDW
説 明 <expr>内が trueの 間,WHILE から ENDW までの命令を繰り返してアセンブル命令として挿入する.<expr>==0 の時は false と判定する.
WHILE から ENDW 間に書ける命令は最大 100 行.
繰り返し回数は最大 256 回
使用例         WHILE   i < 100         ;条件
                MOVLW   i
i += 1
        ENDW
 
■IFDEF (execute if symbol has been defined) ラベルが定義されているかを判定
書 式 IFDEF  <label>
説 明 label がすでに定義済みなら,IFNEF 以下の行を ELSE か ENDIF までアセンブルする.
使用例 #DEFINE         testing         ;set testing on
                -----
IFDEF           testing
                <execute test code>
ENDIF
 
■IFNDEF (decrement f) ラベルが未定義かを判定
書 式 IFNDEF  <label>
説 明 label がまだ未定義なら,IFNDEF 以下の行を ELSE か ENDIF までアセンブルする.
使用例 #DEFINE         testing     ;set testing on
                -----
#UNDEFINE       testing     ;set testing off
IFNDEF          testing
                <execute test code>
ENDIF
 
■MACRO (declare macro definition) マクロ定義部
  ENDM (end a macro definition)
書 式 <label>  MACRO  [<arg>,...<arg>]
          -----
         ENDM
説 明 繰り返し同じコードを使う場合に,複数の命令を 1 命令で代替え出来るようにする命令群であるマクロ命令を定義する.
使用例 Read    MACRO   device, buffer, count
        MOVLW   device
        MOVLW   count
        CALL    sys_21
        ENDM
 
■EXITM (exit from a macro) マクロから抜け出る
書 式   EXITM
説 明 マクロ命令群から強制的に抜け出して,マクロのアセンブルを終了させる.
使用例 test    MACRO   filereg
IF      filereg == 1
        EXITM
ELSE
        CALL    sys_21
ENDIF
        ENDM
 
■LOCAL (define local macro variable) マクロ内部でのみ使用する変数を指定
書 式   LOCAL  <label>[,<label>]
説 明 マクロ命令構造の中だけで使われる変数を指定する.
マクロの外に同じ変数名があってもそれは別のものとして扱われる.
 
■CODE (begins executable code section) プログラム領域の開始を宣言
書 式 [<name>]  CODE  [<address>]
説 明 CODE セクションの開始宣言.これ以下にプログラムを記述する.
各 CODE セクションは,「name」という名前を必ず付ける必要がある.
「address」で絶対アドレスを指定することで,特定の番地からスタートするプログラムとすることができ,割り込み処理など特定番地指定が必要なときに利用する.
使用例 RESET   CODE    01FFH
        GOTO    START
        -----
MAIN    CODE
        CLRW
        -----
 
■UDATA (begins uninitialized data section)            データ定義セクションの開始を宣言
  UDATA_OVR (begins overlayed uninitialized data section)
  UDATA_SHR (begins shared uninitialized data Section)
  IDATA (begins initialized data section)
書 式 [<name>]  UDATA  [<address>]  (他も同じ形式)
説 明 データ定義セクションの開始を宣言し,これに続く命令でデータエリアを確保する.
実際のデータエリアの確保には,RES,DB,DW 命令を使う.

UDATA:最も一般的な変数エリアの開始宣言.初期値なし.
UDATA_OVR:複数モジュールで共用される変数エリアの開始宣言.
UDATA_SHR:複数バンクに渡る共通変数エリアの開始宣言.
IDTA:初期値付きの変数エリアの指定宣言.
使用例         IDATA                   ;実際の値が確保される
VECTOR  DB      0
WORDS   DW      '1234','5678'
STRING  DB      "High",0
 
■CBLOCK (define a block of constants)    定数領域を指定
  ENDC (end an automatic constant block)
書 式   CBLOCK  [<expr>]
    -----
  ENDC
説 明 定数領域を名前でまとめて確保する場合に使用する.
<expr>を指定することで,絶対アドレスを指定して確保できる.
使用例         CBLOCK  020H            ;絶対アドレス20H番地から確保
            INGAIN,OUTGAIN      ;連続して名前付きでエリア確保
            VECTOR
            TEMP1,TEMP2,TEMP3
        ENDC
 
■GLOBAL (export a defined label) 指定ラベルの外部公開を宣言
書 式   GLOBAL  <label>[,<label>]
説 明 各モジュール間でラベルを指定してアクセスするための外部ラベル宣言.
GLOBAL 宣言されたラベルは,他のモジュールからもにより指定できる.その場合,他のモジュールでは,EXTERN 疑似命令で外部ラベルであることを宣言しておくことが必要である.
使用例 FILTER  GLOBAL  FILTER          ;サブルーチンのラベルをGLOBAL宣言
        -----
        RETURN
 
■EXTERN (declares an extenal label) 外部ラベルの定義
書 式   EXTERN  <label>[,<label>]
説 明 各モジュール間でラベルを指定してアクセスするための外部ラベル宣言.
別モジュールでGLOBAL 宣言されたラベルを,EXTERN 宣言により取り込んで使用する.
使用例         EXTERN  FILTER          ;外部モジュールのラベルをEXTERN宣言
        -----
        CALL FILTER
 
■BANKSEL (generate RAM bank selecting code) RAMのBank選択命令を挿入
  PAGESEL (generate ROM page selecting code)
書 式   BANKSEL  <label>
  PAGESEL  <label>
説 明 リロケータブルでバンクが特定できない変数や,実際に配置されるページが特定できないプログラムモジュールに対して,アセンブル時に適当なバンク指定やページ指定をするための命令を挿入する.
使用例 VAL1    EQU     010H    ;BANK0に実在する
VAL2    EQU     030H    ;BANK2に実在する
        -----
        BANKSEL VAR1
        MOVWF   VAR1
        PAGESEL SUBPRO  ;SUBPROはどこのページか不明
        CALL    SUBPRO
        -----