CM81-00208-5

本ドキュメントはCypress (サイプレス) 製品に関する情報が記載されております。
F2MC®-8L/8FX ファミリ
8 ビット・マイクロコントローラ
SOFTUNE® アセンブラマニュアル V3 対応
Support Soft Manual
Publication Number CM81-00208
MB90880ÉVÉäÅ[ÉY Cover Sheet
Revision 5.0
Issue Date September 1, 2014
F2MC®-8L/8FX ファミリ
8 ビット・マイクロコントローラ
SOFTUNE® アセンブラマニュアル V3 対応
Support Soft Manual
MB90880ÉVÉäÅ[ÉY Cover Sheet
Support
Soft
Ma nual
はじめに
■ 本書の目的と対象読者
本書は , Spansion SOFTUNE アセンブラの機能および使用方法を説明したものです。
本書は , F2MC-8L/8FX ファミリ マイクロコントローラを使用した応用プログラムを開
発する技術者を対象にしています。本書をご一読ください。
■ 商標
F2MC は , Spansion LLC の登録商標です。
SOFTUNE は , Spansion LLC の登録商標です。
Microsoft,Windows,Windows Media は , 米国 Microsoft Corporation の米国およびその他の
国における登録商標または商標です。
その他の社名および製品名などの固有名詞は , 各社の商標または登録商標です。
■ 本書の全体構成
本書は , 以下に示す 2 部構成となっています。
第 I 部 使用手引き編
この部では , SOFTUNE アセンブラの使用方法について説明します。
第 II 部 文法編
この部では , アセンブラのソースプログラムを記述する際の文法や記述形式につい
て説明します。
付録
付録では , エラーメッセージの一覧 , 制限事項を掲載します。
September 1, 2014, CM81-00208-5
i
Su pp or t
ii
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
目次
第I部
使用手引き編............................................................................................. 1
第1章
概要 ............................................................................................................ 3
1.1
1.2
第2章
SOFTUNE アセンブラ............................................................................................................ 4
アセンブラ文法 ...................................................................................................................... 6
環境変数 , 開発環境のディレクトリ構造 ................................................... 9
2.1
2.2
2.3
2.4
2.5
FETOOL ............................................................................................................................... 10
FELANG ............................................................................................................................... 11
TMP ...................................................................................................................................... 12
INC896 ................................................................................................................................. 13
OPT896 ................................................................................................................................ 14
2.6
開発環境のディレクトリ構造 ............................................................................................... 15
第3章
起動方法................................................................................................... 17
3.1 fasm896s コマンド............................................................................................................... 18
3.2 ファイル指定 ........................................................................................................................ 19
3.3 ファイル名の扱い ................................................................................................................. 20
3.3.1
ファイル名の指定形式 ............................................................................................... 21
3.3.2
ファイル名の省略指定 ............................................................................................... 22
3.4 オプションファイル ............................................................................................................. 23
3.5 オプションファイルに記述できるコメント ......................................................................... 24
3.6 デフォルトオプションファイル ........................................................................................... 25
3.7 終了コード............................................................................................................................ 26
第4章
起動時オプション .................................................................................... 27
4.1 起動時オプションの規則 ...................................................................................................... 28
4.2 起動時オプション一覧.......................................................................................................... 29
4.3 起動時オプションの詳細 ...................................................................................................... 31
4.4 オブジェクトおよびデバッグに関するオプション............................................................... 32
4.4.1
-o, -Xo......................................................................................................................... 33
4.4.2
-g, -Xg......................................................................................................................... 34
4.5 リスティングに関するオプション........................................................................................ 35
4.5.1
-l, -lf, -Xl ...................................................................................................................... 36
4.5.2
-pl, -pw........................................................................................................................ 37
4.5.3
-linf, -lsrc, -lsec, -lcros................................................................................................. 38
4.5.4
-linc, -lexp ................................................................................................................... 40
4.5.5
-tab ............................................................................................................................. 41
4.6 プリプロセッサに関するオプション .................................................................................... 42
4.6.1
-p ................................................................................................................................ 43
4.6.2
-P, -Pf ......................................................................................................................... 44
4.6.3
-D, -U .......................................................................................................................... 45
4.6.4
-I ................................................................................................................................. 46
4.6.5
-H................................................................................................................................ 47
September 1, 2014, CM81-00208-5
iii
Su pp or t
4.6.6
So ft
Manu al
-C................................................................................................................................ 48
4.7 ターゲット依存オプション................................................................................................... 49
4.7.1
-sa, -Xsa ..................................................................................................................... 50
4.7.2
-div_check, -Xdiv_check............................................................................................. 51
4.8 その他のオプション ............................................................................................................. 53
4.8.1
-Xdof ........................................................................................................................... 54
4.8.2
-f ................................................................................................................................. 55
4.8.3
-w................................................................................................................................ 56
4.8.4
-name ......................................................................................................................... 57
4.8.5
-V, -XV ........................................................................................................................ 58
4.8.6
-cmsg, -Xcmsg............................................................................................................ 59
4.8.7
-cwno, -Xcwno ............................................................................................................ 60
4.8.8
-help ........................................................................................................................... 61
4.8.9
-cpu ............................................................................................................................ 62
4.8.10
-kanji ........................................................................................................................... 63
4.8.11
-LBA, -XLBA ............................................................................................................... 64
4.8.12
-OVFW, -XOVFW ....................................................................................................... 66
4.8.13
-cif............................................................................................................................... 68
第5章
5.1
第6章
最適コードチェック機能について ........................................................... 69
fasm896s の最適コードチェック機能 .................................................................................. 70
アセンブルリスト .................................................................................... 73
6.1 全体形式 ............................................................................................................................... 74
6.2 ページの形式 ........................................................................................................................ 76
6.3 インフォメーションリスト................................................................................................... 78
6.4 ソースリスト ........................................................................................................................ 80
6.4.1
プリプロセッサ処理 ................................................................................................... 81
6.4.2
エラー表示 ................................................................................................................. 82
6.4.3
インクルードファイル ............................................................................................... 83
6.4.4
.END, .PROGRAM, .SECTION .................................................................................. 84
6.4.5
.ALIGN, .ORG, .SKIP ................................................................................................. 86
6.4.6
.EXPORT, .GLOBAL, .IMPORT ................................................................................. 87
6.4.7
.EQU........................................................................................................................... 88
6.4.8
.DATA, .BIT, .BYTE, .HALF, .LONG, .WORD, .DATAB ............................................. 89
6.4.9
.FDATA, .FLOAT, .DOUBLE, .FDATAB ..................................................................... 91
6.4.10
.RES, .FRES .............................................................................................................. 92
6.4.11
.SDATA, .ASCII, .SDATAB......................................................................................... 93
6.4.12
.DEBUG...................................................................................................................... 94
6.4.13
.LIBRARY ................................................................................................................... 95
6.4.14
.FORM, .TITLE, .HEADING, .LIST, .PAGE, .SPACE ................................................. 96
6.5
6.6
第 II 部
第7章
7.1
7.2
iv
セクションリスト ................................................................................................................. 99
クロスリファレンスリスト................................................................................................. 100
文法編 ................................................................................................... 101
言語の基本規則 ...................................................................................... 103
文の形式 ............................................................................................................................. 104
文字セット.......................................................................................................................... 106
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
7.3 名前 .................................................................................................................................... 107
7.4 前方参照シンボルと後方参照シンボル............................................................................... 109
7.5 整数定数 ............................................................................................................................. 110
7.6 ロケーションカウンタシンボル ......................................................................................... 111
7.7 文字定数 ............................................................................................................................. 112
7.8 文字列 ................................................................................................................................. 114
7.9 浮動小数点定数 .................................................................................................................. 115
7.10 浮動小数点定数のデータ形式 ............................................................................................. 117
7.11 式 ........................................................................................................................................ 119
7.11.1
項 .............................................................................................................................. 121
7.11.2
オペランド値の範囲 ................................................................................................. 125
7.11.3
演算子....................................................................................................................... 126
7.11.4
名前から算出される値 ............................................................................................. 128
7.11.5
演算子の優先順位..................................................................................................... 131
7.12 コメント ............................................................................................................................. 132
第8章
8.1
8.2
8.3
8.4
8.5
8.6
8.7
セクション ............................................................................................. 133
セクションの記述形式........................................................................................................ 134
セクションのタイプについて ............................................................................................. 136
セクションタイプと属性 .................................................................................................... 139
セクションの配置形式について ......................................................................................... 140
セクションの結合方法........................................................................................................ 142
セクションの分割記述........................................................................................................ 144
ROM 化セクションの書き方 .............................................................................................. 145
第9章
9.1
9.2
機械命令................................................................................................. 147
機械命令の記述形式 ........................................................................................................... 148
オペランドフィールドの記述形式...................................................................................... 149
第 10 章
アセンブラ擬似命令............................................................................... 151
10.1 擬似命令で扱う整数定数の範囲 ......................................................................................... 152
10.2 プログラム構造定義命令 .................................................................................................... 153
10.2.1
.PROGRAM 命令...................................................................................................... 154
10.2.2
.END 命令................................................................................................................. 155
10.2.3
.SECTION 命令 ........................................................................................................ 156
10.3 アドレス制御命令 ............................................................................................................... 158
10.3.1
.ALIGN 命令.............................................................................................................. 159
10.3.2
.ORG 命令 ................................................................................................................ 160
10.3.3
.SKIP 命令 ................................................................................................................ 161
10.4 プログラム結合命令 ........................................................................................................... 162
10.4.1
.EXPORT 命令.......................................................................................................... 163
10.4.2
.GLOBAL 命令 .......................................................................................................... 164
10.4.3
.IMPORT 命令 .......................................................................................................... 165
10.5 シンボル定義命令 ............................................................................................................... 166
10.5.1
.EQU 命令................................................................................................................. 167
10.6 領域定義命令 ...................................................................................................................... 168
10.6.1
.DATA 命令 , .BIT 命令 , .BYTE 命令 , .HALF 命令 , .LONG 命令 , .WORD 命令 ..... 169
10.6.2
.DATAB 命令 ............................................................................................................ 171
10.6.3
.FDATA 命令 , .FLOAT 命令 , .DOUBLE 命令 .......................................................... 172
September 1, 2014, CM81-00208-5
v
Su pp or t
So ft
Manu al
10.6.4
.FDATAB 命令 .......................................................................................................... 174
10.6.5
.RES 命令 ................................................................................................................. 175
10.6.6
.FRES 命令............................................................................................................... 176
10.6.7
.SDATA 命令 , .ASCII 命令 ....................................................................................... 177
10.6.8
.SDATAB 命令 .......................................................................................................... 178
10.6.9
.STRUCT 命令 , .ENDS 命令.................................................................................... 179
10.7 デバッグ情報出力制御命令................................................................................................. 181
10.8 ライブラリファイル指定命令 ............................................................................................. 183
10.9 リスト出力制御命令 ........................................................................................................... 184
10.9.1
.FORM 命令.............................................................................................................. 185
10.9.2
.TITLE 命令............................................................................................................... 186
10.9.3
.HEADING 命令 ........................................................................................................ 187
10.9.4
.LIST 命令................................................................................................................. 188
10.9.5
.PAGE 命令 .............................................................................................................. 190
10.9.6
.SPACE 命令 ............................................................................................................ 191
第 11 章
プリプロセッサ処理............................................................................... 193
11.1 プリプロセッサ .................................................................................................................. 194
11.2 プリプロセッサの基本規則................................................................................................. 197
11.2.1
プリプロセッサ命令の記述形式 ............................................................................... 199
11.2.2
コメント ................................................................................................................... 200
11.2.3
行の継続 ................................................................................................................... 201
11.2.4
整数定数 ................................................................................................................... 202
11.2.5
文字定数 ................................................................................................................... 203
11.2.6
マクロ名 ................................................................................................................... 205
11.2.7
仮引数....................................................................................................................... 206
11.2.8
ローカルシンボル..................................................................................................... 207
11.3 プリプロセッサの式 ........................................................................................................... 208
11.4 マクロ定義.......................................................................................................................... 211
11.4.1
#macro 命令 ............................................................................................................. 212
11.4.2
#local 命令 ................................................................................................................ 213
11.4.3
#exitm 命令............................................................................................................... 215
11.4.4
#endm 命令 .............................................................................................................. 216
11.5 マクロコール命令 ............................................................................................................... 217
11.6 リピート展開 ...................................................................................................................... 218
11.7 条件付きアセンブル命令 .................................................................................................... 220
11.7.1
#if 命令...................................................................................................................... 221
11.7.2
#ifdef 命令................................................................................................................. 222
11.7.3
#ifndef 命令............................................................................................................... 223
11.7.4
#else 命令................................................................................................................. 224
11.7.5
#elif 命令................................................................................................................... 225
11.7.6
#endif 命令................................................................................................................ 227
11.8 マクロ名の置換処理 ........................................................................................................... 228
11.8.1
#define 命令.............................................................................................................. 230
11.8.2
マクロ仮引数の文字列化 (# 演算子 ) ........................................................................ 232
11.8.3
マクロ置換の文字の連結 (## 演算子 ) ...................................................................... 233
11.8.4
#set 命令................................................................................................................... 234
11.8.5
#undef 命令 .............................................................................................................. 235
11.8.6
#purge 命令 .............................................................................................................. 236
vi
CM81-00208-5, September 1, 2014
Support
11.9
11.10
11.11
11.12
11.13
11.14
11.15
Soft
Ma nual
#include 命令 ...................................................................................................................... 237
#line 命令 ............................................................................................................................ 239
#error 命令 .......................................................................................................................... 240
#pragma 命令 ..................................................................................................................... 241
空命令 ................................................................................................................................. 242
既定義マクロ名 .................................................................................................................. 243
C 言語プリプロセッサとの違い ......................................................................................... 245
第 12 章
アセンブラ擬似機械命令........................................................................ 247
12.1 F2MC-8L/8FX ファミリ用アセンブラ擬似機械命令 ........................................................... 248
12.1.1
分岐系擬似機械命令 ................................................................................................. 249
12.1.2
演算系擬似機械命令 ................................................................................................. 250
12.1.3
その他の擬似機械命令 ............................................................................................. 251
12.1.4
最適配置分岐擬似機械命令 ...................................................................................... 253
第 13 章
構造化命令 ............................................................................................. 257
13.1 構造化命令の概要 ............................................................................................................... 258
13.2 構造化プログラム命令........................................................................................................ 259
13.2.1
構造化プログラム命令の条件式 ............................................................................... 260
13.2.2
構造化プログラム命令での生成規則 ........................................................................ 263
13.2.3
構造化プログラム命令の記述形式............................................................................ 264
13.2.4
2 処理選択構文 ......................................................................................................... 265
13.2.5
多処理選択構文 ........................................................................................................ 266
13.2.6
計算型繰返し構文..................................................................................................... 268
13.2.7
終了条件型繰返し構文 ............................................................................................. 270
13.2.8
実行条件型繰返し構文 ............................................................................................. 271
13.2.9
制御移行命令 ............................................................................................................ 272
13.3 式 ( 代入式 , 代入演算式 , インクリメント / デクリメント式 ) ........................................... 274
13.3.1
式の記述形式 ............................................................................................................ 275
13.3.2
代入式....................................................................................................................... 276
13.3.3
代入演算式 ............................................................................................................... 278
13.3.4
インクリメント / デクリメント式 ............................................................................ 282
付録
付録 A
付録 B
付録 C
付録 D
D.1
D.2
D.3
D.4
D.5
D.6
D.7
D.8
D.9
D.10
付録 E
............................................................................................................... 285
エラーメッセージ一覧................................................................................................... 286
制限事項 ........................................................................................................................ 322
拡張ダイレクトアクセス領域バンク番号の取得方法.................................................... 323
SOFTUNE アセンブラと旧版アセンブラの仕様の差異 ................................................ 324
アセンブラ言語の基本規則 ......................................................................................... 325
式処理 ......................................................................................................................... 329
擬似命令...................................................................................................................... 332
マクロ処理 .................................................................................................................. 335
構造化制御命令 ........................................................................................................... 336
機械命令...................................................................................................................... 337
コマンド行の差異 ....................................................................................................... 338
環境変数...................................................................................................................... 339
オプション .................................................................................................................. 340
制限事項の緩和 ........................................................................................................... 342
主な変更内容 ................................................................................................................. 343
September 1, 2014, CM81-00208-5
vii
Su pp or t
索引
viii
So ft
Manu al
............................................................................................................... 345
CM81-00208-5, September 1, 2014
Support
第I部
Soft
Ma nual
使用手引き編
この部では , SOFTUNE アセンブラの使用方法について説明します。
第 1 章 概要
第 2 章 環境変数 , 開発環境の ディレクトリ構造
第 3 章 起動方法
第 4 章 起動時オプション
第 5 章 最適コードチェック機能 について
第 6 章 アセンブルリスト
September 1, 2014, CM81-00208-5
1
Su pp or t
2
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第1章
概要
この章では , SOFTUNE アセンブラの概要について
説明します。
1.1 SOFTUNE アセンブラ
1.2 アセンブラ文法
September 1, 2014, CM81-00208-5
3
Su pp or t
1.1
So ft
Manu al
SOFTUNE アセンブラ
本アセンブラは , F2MC-8L/8FX ファミリアセンブリ言語で記述されたソースプログ
ラムをアセンブルします。
本アセンブラの処理は大きく分けて , プリプロセッサフェーズとアセンブルフェー
ズの 2 つのフェーズがあります。
■ 概要
本アセンブラは , F2MC-8L/8FX ファミリアセンブリ言語で記述されたソースプログラ
ムをアセンブルします。そして , リロケータブルなオブジェクトとアセンブルリストを
出力します。
本アセンブラの処理は , 大きく分けて , プリプロセッサフェーズとアセンブルフェーズ
の 2 つのフェーズがあります。
本アセンブラの構成を , 図 1.1-1 に示します。
■ プリプロセッサフェーズ
前処理を行います。
前処理とは, マクロ定義, マクロ展開など, テキストを加工する処理のことをいいます。
機能仕様に , C 言語のプリプロセッサ仕様をサポートしました。これにより , プリプロ
セッサ処理に関しては C 言語とのヘッダファイルの共有化が可能です。
C 言語と共有可能な命令は , C 言語のプリプロセッサ命令と , 範囲指定型のコメント記
述 (/* ~ */) のみです。
また , このほかにも , マクロ定義・マクロ展開などのアセンブラ特有の機能もサポート
しています。
前処理を行った結果をファイルに残すことも可能です。
■ アセンブルフェーズ
機械命令 , 擬似命令を翻訳してオブジェクトコードを生成します。
アセンブルフェーズは , 次に示す機能を備えています。
• C 言語に対応したコメント記述
• デバッグ情報出力
• 機械命令の最適化チェック機能
4
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
図 1.1-1 アセンブラの構成
ソースプログラムファイル
fasm896s
プリプロセッサフェーズ
アセンブルフェーズ
前処理結果ファイル
オブジェクトファイル
アセンブルリストファイル
September 1, 2014, CM81-00208-5
5
Su pp or t
So ft
Manu al
アセンブラ文法
1.2
本アセンブラは , IEEE-649 仕様に準拠した言語仕様に加え , ユーザがプログラミン
グしやすいように , さらに機能を拡張してあります。
■ 概要
本アセンブラは , IEEE-649 仕様に準拠した言語仕様に加え , 次の機能を備えています。
• C 言語に対応したコメント記述
• アセンブラ擬似命令
• プリプロセッサ処理
• デバッグ情報出力
● C 言語に対応したコメント記述
アセンブラにおいても , C 言語と同じコメントが記述できます。
【例】
/* ------------------------------Main processing
---------------------------------- */
.SECTION CODE,CODE,ALIGN=2
CALL
_init
/* Initialization processing */
● アセンブラ擬似命令
IEEE-649仕様のアセンブラ擬似命令に加え, リスト制御命令, 領域定義命令などの命令
を追加し , 機能を充実しました。
● プリプロセッサ処理
C 言語のプリプロセッサ仕様をサポートしました。
これにより , プリプロセッサ処理に関しては C 言語とのヘッダファイルの共有化が可
能です。
C 言語と共有化可能な命令は C 言語のプリプロセッサ命令と , 範囲指定型のコメント
記述 (/* ~ */) のみです。
また , このほかにマクロ定義・マクロ展開などのアセンブラ特有の機能もサポートして
います。
【例】
#ifdef
SPC_MODE
#include
"spc.h"
:
#endif
#define
6
SIZE_MAX
256
/* サイズの最大値 */
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
● デバッグ情報出力
オブジェクトにデバッグ情報を含めることができます。
プログラムのデバッグには必要不可欠な機能です。
September 1, 2014, CM81-00208-5
7
Su pp or t
8
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第2章
環境変数 , 開発環境の
ディレクトリ構造
アセンブラで使用する環境変数と開発環境ディレ
クトリ構造について説明します。
2.1 FETOOL
2.2 FELANG
2.3 TMP
2.4 INC896
2.5 OPT896
2.6 開発環境のディレクトリ構造
September 1, 2014, CM81-00208-5
9
Su pp or t
2.1
So ft
Manu al
FETOOL
開発環境をインストールするディレクトリを指定します。
この環境変数が設定されていない場合は , 起動したアセンブラがあるディレクトリ
の親のディレクトリをインストールディレクトリとみなします。
■ FETOOL
【記述形式】
SET FETOOL= ディレクトリ
【説明】
開発環境をインストールするディレクトリを指定します。
インストールするディレクトリからメッセージファイル , インクルードファイル ,
ライブラリファイルなどの開発環境に必要なファイルがアクセスされます。
開発環境のディレクトリ構造の詳細は , 「2.6 開発環境のディレクトリ構造」を参
照してください。
FETOOL が設定されていない場合は , 起動したアセンブラのあるディレクトリの親
ディレクトリ ( アセンブラがあるディレクトリの位置 \..) をインストールディレク
トリとみなします。
【例】
SET FETOOL=D:\SOFTUNE
10
CM81-00208-5, September 1, 2014
Support
2.2
Soft
Ma nual
FELANG
メッセージの出力形式を指定します。
この環境変数は省略できます。
■ FELANG
【記述形式】
SET FELANG={ASCII|EUC|SJIS}
【説明】
メッセージの出力形式を指定します。
● ASCII を指定した場合
メッセージを ASCII コードで出力します。
メッセージの言語は英語となります。
日本語環境のないシステムの場合は , この形式にしてください。
● EUC を指定した場合
メッセージを EUC コードで出力します。
メッセージの言語は日本語となります。
端末が EUC コードの場合は , この形式にしてください。
● SJIS を指定した場合
メッセージを SJIS コードで出力します。
メッセージの言語は日本語となります。
端末が SJIS コードの場合は , この形式にしてください。
Windows 環境では , 普通この指定で日本語が表示されます。
参考:
この指定で影響を受けるメッセージは , ヘルプメッセージとエラーメッセージです。
この環境変数は省略できます。
省略したときの出力形式は , ASCII になります。
【例】
SET FELANG=ASCII
September 1, 2014, CM81-00208-5
11
Su pp or t
2.3
So ft
Manu al
TMP
アセンブラが使用する作業用のディレクトリを指定します。
この環境変数は省略できます。
■ TMP
【記述形式】
SET TMP= ディレクトリ
【説明】
アセンブラが使用する作業用のディレクトリを指定します。
アクセスできないディレクトリを指定した場合 , 本アセンブラは異常終了します。
この環境変数は省略できます。
省略した場合の作業ディレクトリは , カレントディレクトリです。
【例】
SET TMP=D:\TMP
12
CM81-00208-5, September 1, 2014
Support
2.4
Soft
Ma nual
INC896
インクルードパスを指定します。
#include 命令で指定されたインクルードファイルを検索するパスを指定します。
この環境変数は省略できます。
■ INC896
【記述形式】
SET INC896= パス
【説明】
インクルードパスを指定します。
#include 命令で指定されたインクルードファイルを検索するパスを指定します。
起動時オプションのインクルードパス指定 (-I) で指定されたパスの方を先に検索し
ます。それで見つからなければ , INC896 に設定されているパスを検索します。
この環境変数は省略できます。
【例】
SET INC896=E:\INCLUDE
September 1, 2014, CM81-00208-5
13
Su pp or t
2.5
So ft
Manu al
OPT896
デフォルトオプションファイルのディレクトリを指定します。
この環境変数は省略できます。
■ OPT896
【記述形式】
SET OPT896= ディレクトリ
【説明】
デフォルトオプションファイルのディレクトリを指定します。
デフォルトオプションファイルについての詳細は ,「3.6 デフォルトオプションファ
イル」を参照してください。
この環境変数は省略できます。
省略した場合は , 開発環境ディレクトリ内のデフォルトオプションファイルを参照
します。
開発環境ディレクトリ内のデフォルトオプションファイルは , 次のとおりです。
%FETOOL%\LIB\896\FASM896.OPT
【例】
SET OPT896=D:\USR
14
CM81-00208-5, September 1, 2014
Support
2.6
Soft
Ma nual
開発環境のディレクトリ構造
開発環境のディレクトリ構造について説明します。
■ 開発環境のディレクトリ構造
開発環境は , 次に示すような構造になっています。また , 各ディレクトリには , 次のよ
うなファイルが入っています。
● %FETOOL%\BIN
ロードモジュールのディレクトリです。
C コンパイラ , アセンブラ , リンカ , および Workbench などが入っています。
● %FETOOL%\LIB
ライブラリのディレクトリです。
ライブラリなど付属されるファイルが入っています。
● %FETOOL%\LIB\896
F2MC-8L/8FX 用ライブラリのディレクトリです。
メッセージファイル , ライブラリファイル , およびインクルードファイルなどが入って
います。
● %FETOOL%\LIB\896\INCLUDE
F2MC-8L/8FX 用インクルードファイルのディレクトリです。
C コンパイラの標準インクルードファイルが入っています。
このディレクトリは , #include 命令の検索において最後に検索されます。
開発環境のディレクトリ構造を次に示します。
図 2.6-1 開発環境のディレクトリ構造
%FETOOL%\ ←環境変数"FETOOL"に設定されているディレクトリ
BIN\ ←ロードモジュールを置くディレクトリ
FASM896S.EXE
LIB\ ←ライブラリを置くディレクトリ
896\ ←F2MC-8L/8FXファミリ用のライブラリを置くディレクトリ
ASM896_A.MSG (エラーメッセージファイル: ASCIIコード)
ASM896_E.MSG (エラーメッセージファイル: EUCコード)
ASM896_S.MSG (エラーメッセージファイル: SJISコード)
FASM896.OPT (デフォルトオプションファイル)
INCLUDE\ ←インクルードファイルディレクトリ
インクルードファイル
September 1, 2014, CM81-00208-5
15
Su pp or t
16
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第3章
起動方法
この章では , アセンブラの起動方法について説明し
ます。
本アセンブラの起動コマンドは , 次のとおりです。
• "fasm896s":F2MC-8L/8FX ファミリ用アセンブ
ラ
3.1 fasm896s コマンド
3.2 ファイル指定
3.3 ファイル名の扱い
3.4 オプションファイル
3.5 オプションファイルに記述できるコメント
3.6 デフォルトオプションファイル
3.7 終了コード
September 1, 2014, CM81-00208-5
17
Su pp or t
3.1
So ft
Manu al
fasm896s コマンド
fasm896s のコマンド形式は , 次のとおりです。
• fasm896s [ 起動時オプション ]… [ ファイル名 ]
■ fasm896s コマンド行
【記述形式】
fasm896s [ 起動時オプション ]… [ ファイル名 ]
【説明】
fasm896s コマンド行には , 起動時オプションとファイル名を指定できます。
起動時オプションとファイル名は , コマンド行のどの位置からでも指定できます。
起動時オプションは複数指定できます。
起動時オプションとファイル名は , それぞれ空白で区切られます。
fasm896s コマンドは , 次の順序で起動時オプションとファイル名を区別します。
1. オプション識別記号で始まるものを起動時オプションと識別します。オプション
識別記号は , ハイフン (-) です。
2. 起動時オプションに引数がある場合は , 次に続く文字を引数とみなします。
3. 起動時オプション以外をファイル名とみなします。
起動時オプションについては , 「第 4 章 起動時オプション」を参照してください。
起動時オプションに "-f オプションファイル名 " と指定すると , -f で指定したファイ
ルを読み込み , そのファイルに記述されている fasm896s オプションを実行します。
この機能により , fasm896s オプションをファイルにしておくことができます。
詳細は , 「3.4 オプションファイル」を参照してください。
起動時オプションとファイル名を省略し , fasm896s コマンド以降に何も指定しな
かった場合は , 起動時オプションの一覧 ( ヘルプメッセージ ) が出力されます。
fasm896s コマンドには , デフォルトオプションファイルという機能があります。
デフォルトオプションファイルに記述してある fasm896s オプションは , 最初に実行
されます。
詳細は , 「3.6 デフォルトオプションファイル」を参照してください。
【例】
fasm896s -f def.opt -l -pw 80 prog.asm
18
CM81-00208-5, September 1, 2014
Support
3.2
Soft
Ma nual
ファイル指定
アセンブルソースファイルを指定します。
アセンブルソースファイルは 1 つのみ指定できます。
拡張子を省略した場合 , ".asm" をファイル名に付加します。
■ ファイル指定
【例】
ファイル指定
fasm896s
fasm896s
fasm896s
fasm896s
test
test.
D:\WORK\test
..\FMC8L\abc.src
アセンブルされるファイル
test.asm
test.
D:\WORK\test.asm
..\FMC8L\abc.src
<注意事項>
ファイルの記述方法については , それぞれの OS のマニュアルをご覧ください。
September 1, 2014, CM81-00208-5
19
Su pp or t
3.3
So ft
Manu al
ファイル名の扱い
本アセンブラにおける , ファイル名の扱いについて説明します。
次の 2 つの項目について説明します。
• ファイル名の指定形式
• ファイル名の省略指定
■ ファイル名の指定形式
本アセンブラは , ファイル名を < パス名 >, < 主ファイル名 > と < 拡張子 > の 3 つで構
成されているものとして扱います。
< 拡張子 > は , ピリオド (.) 以降の文字を示します。
< パス名 >, < 拡張子 > は省略できます。
■ ファイル名の省略指定
ファイル名の各要素が省略された場合のファイル名の扱いについて説明します。
20
CM81-00208-5, September 1, 2014
Support
3.3.1
Soft
Ma nual
ファイル名の指定形式
ファイル名の指定形式について説明します。
本アセンブラでは , ファイル名を < パス名 >, < 主ファイル名 > と < 拡張子 > の 3 つ
で構成されているものとして扱います。
< 拡張子 > は , ピリオド (.) 以降の文字を示します。
< パス名 >, < 拡張子 > は省略できます。
■ ファイル名の指定形式
【記述形式】
[ < パス名 >] < 主ファイル名 > [ < 拡張子 >]
【説明】
ファイル名の詳細は , 各 OS のマニュアルを参照してください。
本アセンブラでは , ファイル名を < パス >, < 主ファイル名 > と < 拡張子 > の 3 つで
構成されているものとして扱います。
< 拡張子 > は , ピリオド (.) 以降の文字を示します。
< パス名 >, < 拡張子 > は省略できます。
省略した場合の扱いについては , 「3.3.2 ファイル名の省略指定」を参照してくださ
い。
Windows 版の場合 , < ドライブ名 > は < パス名 > に含まれます。
【例】
D:\WORK\SRC\TEST.ASM
拡張子
パス名 主ファイル名
September 1, 2014, CM81-00208-5
21
Su pp or t
3.3.2
So ft
Manu al
ファイル名の省略指定
ファイル名の各要素が省略された場合のファイル名の扱いについて説明します。
■ ファイル名の省略指定
ファイル名の各要素が省略された場合のファイル名の扱いについて説明します。
オブジェクトファイルまたはリストファイルの指定にパス名のみを指定した場合は ,
ソースファイル名の主ファイル名を使用します。
● パス名のみを指定した場合
< 指定したパス名 > < ソースファイルの主ファイル名 > < 省略時の拡張子 >
ファイル名省略時の扱いを , 表 3.3-1 に示します。
表 3.3-1 ファイル名省略時の扱い
ファイル名の省略部
パス名
拡張子
扱い
カレント
ソースファイルの拡張子
.asm
オブジェクトファイルの拡張子
.obj
リストファイルの拡張子
.lst
オプションファイルの拡張子
.opt
前処理結果ファイルの拡張子
.as
【例】
fasm896s TEST -o D:\WORK\SRC -lf abc
22
ソースファイル名
: TEST.asm
オブジェクトファイル名
: D:\WORK\SRC\TEST.obj
リストファイル名
: abc.lst
CM81-00208-5, September 1, 2014
Support
3.4
Soft
Ma nual
オプションファイル
オプションファイル機能は , fasm896s オプションをファイルに記述しておき , 一括
指定できます。この機能により , たくさん指定する起動時オプションなどをファイ
ルにすることができます。
オプションファイルの指定は , 起動時オプションの "-f" です。
■ オプションファイル
【記述形式】
-f オプションファイル名
【説明】
オプションファイル機能は , fasm896s オプションをファイルに記述しておき , 一括
指定できます。この機能により , たくさん指定する起動時オプションをファイル化
できます。
オプションファイルの指定は , 起動時オプションの "-f" です。
オプションファイル名に拡張子を省略した場合は , ".opt" を補います。
オプションファイルには , fasm896s オプションが記述できます。
オプションファイルには , コメントが記述できます。
詳細は「3.5 オプションファイルに記述できるコメント」を参照してください。
オプションファイルのネストは , 最大 8 レベルまで可能です。
【例】
オプションフィル:def.opt
-I D:\usr\include
-D SMAP
-l
fasm896s -V -f def.opt test
上の例は,次のように解釈されます。
fasm896s -V -I D:\usr\include -D SMAP -1 test
September 1, 2014, CM81-00208-5
23
Su pp or t
3.5
So ft
Manu al
オプションファイルに記述できるコメント
コメントは , 任意のカラムから始めることができます。
コメントは , シャープ (#) で始まります。行終端までコメントになります。
■ オプションファイルに記述できるコメント
【記述形式】
# コメント
そのほかに次のコメントも使用できます。
/* コメント */
// コメント
; コメント
【説明】
コメントは , 任意のカラムから始めることができます。
コメントは , シャープ (#) で始まります。行終端までコメントになります。
【例】
#
# F2MC8L カスタマイズオプション
#
# インクルードパス
#
-I D:\usr\test\include
# テストインクルード
#
# デファイン
#
-D SMAP
-D VER=2
24
CM81-00208-5, September 1, 2014
Support
3.6
Soft
Ma nual
デフォルトオプションファイル
オプションファイル機能の 1 つですが , 起動時オプション "-f" を指定しなくてもあ
らかじめ指定されているオプションファイルを読み込み実行します。
この機能をデフォルトオプションファイルといいます。
■ デフォルトオプションファイル
デフォルトオプションファイルは , 常にアセンブラ起動時に読み込まれますので , 使用
者の環境にあった起動時オプションをあらかじめ指定しておくことができます。
デフォルトオプションファイル機能を抑止するには , コマンドライン上で起動時オプ
ション "-Xdof" を指定します。
このオプションが指定されると, デフォルトオプションファイルは読み込まれません。
デフォルトオプションファイル名は , 次のように決まっています。
コマンド名
デフォルトオプションファイル名
fasm896s
FASM896.OPT
デフォルトオプションファイルの参照手順を次に示します。
● 環境変数 "OPT896" が設定されている場合
環境変数 "OPT896" で設定されているディレクトリを参照します。
%OPT896%\FASM896.OPT
● 環境変数 "OPT896" が設定されていない場合
開発環境ディレクトリ内のデフォルトオプションファイルを参照します。
%FETOOL%\LIB\896\FASM896.OPT
デフォルトオプションファイルは , なくてもかまいません。
September 1, 2014, CM81-00208-5
25
Su pp or t
3.7
So ft
Manu al
終了コード
本アセンブラが処理を終了して OS へ制御を戻すときの終了コードです。
■ 終了コード
アセンブラが処理を終了して OS へ制御を戻すときの終了コードです。
このコード値により , アセンブラのおおよその処理状態を知ることができます。
表 3.7-1 に終了コードを示します。
表 3.7-1 終了コード
処理状態
正常終了
ウォーニング発生
終了コード
0
0 または 1
エラー発生
2
異常終了
3
<注意事項>
• ウォーニング発生時の終了コードは , -cwno/-Xcwno オプションの指定によります。詳
しくは「4.8.7 -cwno, -Xcwno」を参照してください。
• ウォーニングとエラーが同じに発生した場合は , エラーの終了コードを返します。
• エラーが発生した場合は , オブジェクトファイルは作成されません。
26
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第4章
起動時オプション
この章では , アセンブラの起動時オプションについ
て説明します。
起動時オプションは , アセンブル処理を制御できま
す。
起動時オプションは , オプション識別記号で識別さ
れます。
オプション識別記号は , ハイフン (-) です。
4.1 起動時オプションの規則
4.2 起動時オプション一覧
4.3 起動時オプションの詳細
4.4 オブジェクトおよびデバッグに関するオプション
4.5 リスティングに関するオプション
4.6 プリプロセッサに関するオプション
4.7 ターゲット依存オプション
4.8 その他のオプション
September 1, 2014, CM81-00208-5
27
Su pp or t
4.1
So ft
Manu al
起動時オプションの規則
起動時オプションの規則について説明します。
■ 起動時オプションの規則
起動時オプション全体に関する仕様について説明します。
説明では , 起動時オプションを単にオプションといいます。
● 同一オプションの複数指定
同じオプションが複数指定されたときは , 最後に指定されたオプションが有効になり
ます。
【例】
fasm896s -o abc test.asm -o def
-o def が有効となり , def.obj というオブジェクトファイルを作ります。
● 複数指定可能オプション
• -D name[=def]
: マクロ名の指定
• -U name
: マクロ名の取り消し
• -I path
: インクルードパスの指定
• -f filename
: オプションファイルの指定
これらのオプションは複数指定可能であり , 指定されたオプションすべてが有効にな
ります。
● オプション指定の位置
オプション指定の位置は , 特別な意味はありません。すなわち , コマンド行のどの位置
で指定しても同じ意味です。
【例】
1.fasm896s -C -name prog test.asm -l
2.fasm896s test.asm -l -name prog -C
1., 2. とも同じ処理が行われます。
● 排他関係と依存関係
オプションの中には , オプション間で排他関係を持つもの , または依存関係を持つもの
があります。これらのオプションが同時に指定されたときは , 最後に指定されたオプ
ションが有効になります。
【例】
fasm896s -lf t1 test.asm -Xl
-Xl が有効になりリストファイルは作成されません。
28
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
起動時オプション一覧
4.2
起動時オプションの一覧を , 表 4.2-1 に示します。
■ 起動時オプション一覧
表 4.2-1 起動時オプション一覧 (1 / 2)
指定形式
機能概要
初期値
オブジェクトおよびデバッグに関するオプション
-o [filename]
オブジェクトファイル名の指定
-Xo
オブジェクトファイルを作らない
-g
デバッグ情報出力
-Xg
デバッグ情報出力の取り消し
出力する
出力しない
リスティングに関するオプション
-l
リストファイル出力
出力しない
-lf filename
リストファイル出力 ( ファイル名指定 )
-Xl
リストファイル出力の取り消し
-pl {0|20-255}
リストの 1 頁の行数
60
-pw {80-1023}
リストの 1 行の桁数
100
-linf {ON|OFF}
インフォメーションリスト出力
ON
-lsrc {ON|OFF}
ソースリスト出力
ON
-lsec {ON|OFF}
セクションリスト出力
ON
-lcros {ON|OFF}
クロスリファレンスリスト出力
OFF
-linc {ON|OFF}
インクルードファイルリスト出力
ON
-lexp {ON|OFF|OBJ}
マクロ展開部リスト出力
OBJ
-tab {0-32}
タブの展開文字数指定
8
プリプロセッサに関するオプション
-p
プリプロセッサを起動させない
-P
プリプロセッサのみの起動
-Pf filename
プリプロセッサのみの起動 ( ファイル名指定 )
-D name[=def]
マクロ名の指定
-U name
マクロ名の取り消し
-I path
インクルードパスの指定
-H
インクルードパスを出力
出力しない
-C
プリプロセッサ出力にコメントを残す
残さない
September 1, 2014, CM81-00208-5
起動する
29
Su pp or t
So ft
Manu al
表 4.2-1 起動時オプション一覧 (2 / 2)
指定形式
機能概要
初期値
ターゲット依存オプション
-sa
アキュムレータ保護コードの出力
出力しない
-Xsa
アキュムレータ保護コードの出力抑止
-div_check
DIVU 命令に対して警告メッセージを出力する
F2MC8L : 出力しない
-Xdiv_check
DIVU 命令に対して警告メッセージを出力しない
F2MC8FX : 出力する
その他のオプション
30
-Xdof
デフォルトオプションファイルの取り消し
-f filename
オプションファイルの指定
-w [0-3]
警告メッセージ出力のレベル指定
-name module-name
モジュール名の指定
-V
起動メッセージ出力
-XV
起動メッセージ出力の取り消し
-cmsg
終了メッセージの出力
-Xcmsg
終了メッセージの出力抑止
-cwno
警告メッセージ出力時終了コード 1 指定
-Xcwno
警告メッセージ出力時終了コード 0 指定
-help
ヘルプメッセージの出力
-cpu MB 番号
ターゲットチップ指定
-kanji[EUC|SJIS]
日本語コード系指定
SJIS
-LBA
.bit 擬似命令の次のラベルをバイトアドレッシン
グとして扱う指定
ビットアドレッシング
-XLBA
.bit 擬似命令の次のラベルをビットアドレッシン
グとして扱う指定
-OVFW
オーバフローを WARNING レベルとしてコードを
生成する指定
-XOVFW
オーバフローをエラーレベルとしてコード生成を
行わなくする指定
-cif CPU 情報ファイ
ル名
参照する CPU 情報ファイルの指定
2
表示しない
出力しない
0 指定
表示しない
エラーとする
CM81-00208-5, September 1, 2014
Support
4.3
Soft
Ma nual
起動時オプションの詳細
起動時オプションはその機能により , 次のように分類します。
• オブジェクトおよびデバッグに関するオプション
• リスティングに関するオプション
• プリプロセッサに関するオプション
• ターゲット依存オプション
• その他のオプション
ここでは , それぞれの起動時オプションの詳細について説明します。
■ オブジェクトおよびデバッグに関するオプション
オブジェクトファイル名の指定やデバッグ情報の出力制御をするオプションです。
■ リスティングに関するオプション
リストファイル名の指定やリスト形式の指定をするオプションです。
■ プリプロセッサに関するオプション
プリプロセッサ処理の動作を指定するオプションです。
■ ターゲット依存オプション
ターゲットチップに依存するオプションです。
■ その他のオプション
その他のオプションとして , オプションファイルの指定 , 警告メッセージ出力のレベル
指定 , モジュール名の指定などがあります。
September 1, 2014, CM81-00208-5
31
Su pp or t
4.4
So ft
Manu al
オブジェクトおよびデバッグに関するオプション
オブジェクトファイル名の指定やデバッグ情報の出力制御をするオプションです。
■ オブジェクトおよびデバッグに関するオプション
オブジェクトおよびデバッグに関するオプションは , 次の 4 種類があります。
32
• -o
: オブジェクトファイル名の指定
• -Xo
: オブジェクトファイルを作らない
• -g
: デバッグ情報出力
• -Xg
: デバッグ情報出力の取り消し
CM81-00208-5, September 1, 2014
Support
4.4.1
Soft
Ma nual
-o, -Xo
-o は , 指定したオブジェクトファイル名でオブジェクトファイルを作成します。
-Xo は , オブジェクトファイルを作成しません。
-o -Xo 両方とも指定がない場合は , ソースファイル名の主ファイル名に拡張子
".obj" を付けたファイルにオブジェクトを出力します。
■ -o
【記述形式】
-o [ オブジェクトファイル名 ]
【説明】
指定したオブジェクトファイル名でオブジェクトファイルを作成します。
オブジェクトファイル名を省略した場合 , またはパス名だけを指定した場合は ,
ソースファイル名の主ファイル名に拡張子 ".obj" を付けたファイルにオブジェクト
を出力します。
詳細は , 「3.3.2 ファイル名の省略指定」を参照してください。
【例】
fasm896s ex1 -o ex1_a
■ -Xo
【記述形式】
-Xo
【説明】
オブジェクトファイルを作成しません。
【例】
fasm896s ex1 -Xo
September 1, 2014, CM81-00208-5
33
Su pp or t
4.4.2
So ft
Manu al
-g, -Xg
-g は , デバッグ情報を出力します。
-Xg は , デバッグ情報を出力しません。
-g オプション指定がない場合は , デバッグ情報を出力しません。
■ -g
【記述形式】
-g
【説明】
オブジェクトファイルにデバッグ情報を出力します。
デバッグ情報を出力することにより , シミュレータデバッガまたはエミュレータデ
バッガによるシンボリックデバッグが可能になります。
高級言語デバッグなどを行う場合は , このオプションを指定してください。
【例】
fasm896s c_test -g
■ -Xg
【記述形式】
-Xg
【説明】
オブジェクトファイルにデバッグ情報を出力しません。
【例】
fasm896s c_test -Xg
34
CM81-00208-5, September 1, 2014
Support
4.5
Soft
Ma nual
リスティングに関するオプション
アセンブルリストファイル名の指定やリスト形式の指定をするオプションです。
■ リスティングに関するオプション
リスティングに関するオプションは次の 12 種類があります。
• -l
: アセンブルリストファイル出力
• -lf
: アセンブルリストファイル出力 ( ファイル名指定 )
• -X
: アセンブルリストファイル出力の取り消し
• -pl
: アセンブルリストの 1 頁の行数
• -pw
: アセンブルリストの 1 行の桁数
• -linf
: インフォメーションリスト出力
• -lsrc
: ソースリスト出力
• -lsec
: セクションリスト出力
• -lcros : クロスリファレンスリスト出力
• -linc
: インクルードファイルリスト出力
• -lexp : マクロ展開部リスト出力
• -tab
September 1, 2014, CM81-00208-5
: タブの展開文字数指定
35
Su pp or t
4.5.1
So ft
Manu al
-l, -lf, -Xl
-l は , アセンブルリストファイルを作成します。
-lf は , 指定したファイル名でアセンブルリストファイルを作成します。
-Xl は , アセンブルリストファイルを作成しません。
-l -lf -Xl の 3 つとも指定がない場合は , アセンブルリストファイルを作りません。
■ -l
【記述形式】
-l
【説明】
アセンブルリストファイルを作成します。
ソースファイル名の主ファイル名に拡張子 ".lst" を付けたファイルにアセンブルリ
ストを出力します。
【例】
fasm896s test -l
■ -lf
【記述形式】
-lf アセンブルリストファイル名
【説明】
指定したアセンブルリストファイル名でアセンブルリストファイルを作成します。
パス名だけを指定した場合は , ソースファイル名の主ファイル名に拡張子 ".lst" を付
けたファイルに出力します。
詳細は , 「3.3.2 ファイル名の省略指定」を参照してください。
【例】
fasm896s test -lf \fasm\src
■ -Xl
【記述形式】
-Xl
【説明】
アセンブルリストファイルを作りません。
【例】
fasm896s test -Xl
36
CM81-00208-5, September 1, 2014
Support
4.5.2
Soft
Ma nual
-pl, -pw
-pl は , アセンブルリストの 1 ページの行数を指定します。
-pw は , アセンブルリストの 1 行の桁数を指定します。
■ -pl
【記述形式】
-pl {0|20 ~ 255}
【説明】
アセンブルリストの 1 ページの行数を指定します。
指定された行数内で 1 ページ分のアセンブルリストが作成されます。
行数は , 20 ~ 255 の範囲で指定できます。
行数に 0 を指定した場合は , 改ページされません。
本オプションの指定がないときの値は , 60 です。
【例】
fasm896s test -pl 0
■ -pw
【記述形式】
-pw {80 ~ 1023}
【説明】
アセンブルリストの 1 行の桁数を指定します。
桁数は , 80 ~ 1023 の範囲で指定できます。
本オプションの指定がないときの値は , 100 です。
【例】
fasm896s test -pw 80
September 1, 2014, CM81-00208-5
37
Su pp or t
4.5.3
So ft
Manu al
-linf, -lsrc, -lsec, -lcros
アセンブルリストは , 大きく次の 4 つに別れています。
• インフォメーションリスト
• ソースリスト
• セクションリスト
• クロスリファレンスリスト
これらのリストをそれぞれ出力するかしないかを指定します。
-linf は , インフォメーションリストを出力するかしないかを指定します。
-lsrc は , ソースリストを出力するかしないかを指定します。
-lsec は , セクションリストを出力するかしないかを指定します。
-lcros は , クロスリファレンスリストを出力するかしないかを指定します。
■ -linf
【記述形式】
-linf {ON|OFF}
ON : インフォメーションリストを出力します。< デフォルト >
OFF: インフォメーションリストを出力しません。
【説明】
インフォメーションリストを出力するかしないかを指定します。
ON/OFF の文字は大文字 / 小文字を区別しません。
本オプションの指定がないときは , ON となります。
【例】
fasm896s test -linf off
■ -lsrc
【記述形式】
-lsrc {ON|OFF}
ON : ソースリストを出力します。< デフォルト >
OFF: ソースリストを出力しません。
【説明】
ソースリストを出力するかしないかを指定します。
ON/OFF の文字は大文字 / 小文字を区別しません。
本オプションの指定がないときは , ON となります。
38
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
【例】
fasm896s test -lsrc on
■ -lsec
【記述形式】
-lsec {ON|OFF}
ON : セクションリストを出力します。< デフォルト >
OFF: セクションリストを出力しません。
【説明】
セクションリストを出力するかしないかを指定します。
ON/OFF の文字は大文字 / 小文字を区別しません。
本オプションの指定がないときは , ON となります。
【例】
fasm896s test -lsec on
■ -lcros
【記述形式】
-lcros {ON|OFF}
ON : クロスリファレンスリストを出力します。
OFF: クロスリファレンスリストを出力しません。< デフォルト >
【説明】
クロスリファレンスリストを出力するかしないかを指定します。
ON/OFF の文字は大文字 / 小文字を区別しません。
本オプションの指定がないときは , OFF となります。
【例】
fasm896s test -lcros on
September 1, 2014, CM81-00208-5
39
Su pp or t
4.5.4
So ft
Manu al
-linc, -lexp
ソースリスト中には , インクルードファイル , マクロ展開部が含まれますが , これら
のリスト出力を制御します。
-linc は , インクルードファイルについてリスト出力を制御します。
-lexp は , マクロ展開部についてリスト出力を制御します。
■ -linc
【記述形式】
-linc {ON|OFF}
ON
: インクルードファイルをリストに出力します。< デフォルト >
OFF
: インクルードファイルをリストに出力しません。
【説明】
インクルードファイルについてリスト出力を制御します。
ON/OFF の文字は大文字 / 小文字を区別しません。
本オプションの指定がないときは , ON となります。
【例】
fasm896s test -linc off
■ -lexp
【記述形式】
-lexp {ON|OFF|OBJ}
ON
: マクロ展開部をリストに出力します。
OFF
: マクロ展開部をリストに出力しません。
OBJ
: オブジェクトコードのみリストに出力します。< デフォルト >
( マクロ展開部のテキスト部はリストには出力しません )
【説明】
マクロ展開部についてリスト出力を制御します。
ON/OFF の文字は大文字 / 小文字を区別しません。
本オプションの指定がないときは , OBJ となります。
【例】
fasm896s test -lexp obj
40
CM81-00208-5, September 1, 2014
Support
4.5.5
Soft
Ma nual
-tab
-tab は , リスト出力時に , タブをスペースで展開するときの文字数を指定します。
■ -tab
【記述形式】
-tab {0 ~ 32}
【説明】
リスト出力時にタブをスペースで展開するときの文字数を指定します。
本オプションの指定がないときは , 8 となります。
【例】
fasm896s test -tab 4
September 1, 2014, CM81-00208-5
41
Su pp or t
4.6
So ft
Manu al
プリプロセッサに関するオプション
プリプロセッサ処理の動作を指定するオプションです。
■ プリプロセッサに関するオプション
プリプロセッサに関するオプションは次の 8 種類があります。
• -p : プリプロセッサを起動させない
• -P : プリプロセッサのみの起動
• -Pf : プリプロセッサのみの起動 ( ファイル名指定 )
• -D : マクロ名の指定
• -U : マクロ名の取り消し
• -I : インクルードパスの指定
• -H : インクルードパスを出力
• -C : プリプロセッサ出力にコメントを残す
42
CM81-00208-5, September 1, 2014
Support
4.6.1
Soft
Ma nual
-p
プリプロセッサを起動させないことを指定します。
-p は , 小文字です。
■ -p
【記述形式】
-p
【説明】
プリプロセッサを起動させないことを指定します。
すなわち , プリプロセッサフェーズを飛ばして直接アセンブルフェーズを行いま
す。
プリプロセッサ処理が行われないので処理時間が少なくなります。
高級言語コンパイラが出力するようなプリプロセッサ命令を含まないアセンブル
ソースをアセンブルする場合に有効です。
【例】
fasm896s test -p
September 1, 2014, CM81-00208-5
43
Su pp or t
4.6.2
So ft
Manu al
-P, -Pf
-P は , プリプロセッサフェーズの前処理結果を出力します。
-Pf は , 指定したファイル名にプリプロセッサフェーズの前処理結果を出力します。
■ -P
【記述形式】
-P
【説明】
プリプロセッサフェーズの前処理結果をファイルに出力します。
ソースファイル名の主ファイル名に拡張子 ".as" を付けたファイルに出力します。
プリプロセッサ処理のみ行い , アセンブルフェーズの処理は行いません。
【例】
fasm896s test -P
■ -Pf
【記述形式】
-Pf 前処理結果ファイル名
【説明】
指定したファイル名にプリプロセッサフェーズの前処理結果を出力します。
パス名だけを指定した場合は , ソースファイル名の主ファイル名に拡張子 ".as" を付
けたファイルに出力します。
詳細は , 「3.3.2 ファイル名の省略指定」を参照してください。
プリプロセッサ処理のみ行い , アセンブルフェーズの処理は行いません。
【例】
fasm896s test -Pf \fasm\src
44
CM81-00208-5, September 1, 2014
Support
4.6.3
Soft
Ma nual
-D, -U
-D は , マクロ名に定義文字の列を定義します。
-U は , -D で指定されたマクロ名を取り消します。
■ -D
【記述形式】
-D マクロ名 [= 定義文字の列 ]
【説明】
マクロ名に定義文字の列を定義します。
"-D マクロ名 " と記述し , "= 定義文字の列 " を省略した場合は , 1 が定義されます。
"-D マクロ名 =" と記述し , 定義文字の列だけ記述がない場合は , 空文字が定義され
ます。
本オプションは , 複数指定が可能です。
本オプションは , #define 命令と等しい機能を持ちます。
【例】
fasm896s test -D OS_TYPE=3 -D WINDOWS
■ -U
【記述形式】
-U マクロ名
【説明】
-D で指定されたマクロ名を取り消します。
-D と -U オプションの両方で , 同じマクロ名が指定されたときは , オプションの順
番に関係なく , マクロ名を取り消します。
本オプションは , 複数指定が可能です。
本オプションは , #undef 命令と等しい機能を持ちます。
【例】
fasm896s test -D ABC=10 -U ABC
September 1, 2014, CM81-00208-5
45
Su pp or t
4.6.4
So ft
Manu al
-I
インクルードパスを指定します。
#include 命令で指定されたインクルードファイルを検索するパスを指定します。
■ -I
【記述形式】
-I インクルードパス
【説明】
インクルードパスを指定します。
#include 命令で指定されたインクルードファイルを検索するパスを指定します。
本オプションは , 複数指定が可能です。指定順に検索されます。
#include 命令については , 「第 II 部 文法編」の「11.9 #include 命令」を参照してく
ださい。
【例】
fasm896s test -I \INCLUDE -I \FFMC8L
46
CM81-00208-5, September 1, 2014
Support
4.6.5
Soft
Ma nual
-H
#include 命令で読み込まれるインクルードファイルのパス名を標準出力に出力しま
す。
パス名は読み込まれる順に 1 行に 1 つずつ出力します。
■ -H
【記述形式】
-H
【説明】
#include 命令で読み込まれるインクルードファイルのパス名を , 標準出力に出力し
ます。
パス名は読み込まれる順に 1 行に 1 つずつ出力します。
インクルードファイルの検索でファイルが見付からなかったパス名は出力しませ
ん。
【例】
fasm896s test -I \INCLUDE -I \FFMC8L -H
September 1, 2014, CM81-00208-5
47
Su pp or t
4.6.6
So ft
Manu al
-C
プリプロセッサ処理で , コメントおよび空白をすべて残します。
本オプションの指定がないときは , コメントおよび空白は 1 つの空白文字に置き換
えられます。
■ -C
【記述形式】
-C
【説明】
プリプロセッサ処理で , コメントおよび空白をすべて残します。
本オプションの指定がないときは , コメントおよび空白は 1 つの空白文字に置き換
えられます。このオプション指定により , アセンブルフェーズの処理の負担を少な
くしています。
【例】
fasm896s test -C
48
CM81-00208-5, September 1, 2014
Support
4.7
Soft
Ma nual
ターゲット依存オプション
ターゲットチップに依存するオプションです。
■ ターゲット依存オプション
ターゲット依存オプションには次の 4 種類があります。
● F2MC-8L/8FX ファミリのみ
• -sa
: アキュムレータ保護コード出力の指定
• -Xsa
: アキュムレータ保護コード出力抑止の指定
• -div_check
:DIVU 命令に対して警告メッセージを出力する指定
• -Xdiv_check :DIVU 命令に対して警告メッセージを出力しない指定
September 1, 2014, CM81-00208-5
49
Su pp or t
4.7.1
So ft
Manu al
-sa, -Xsa
アキュムレータ保護コードの出力に関してのオプションです。
-sa は , アキュムレータ保護コードを出力します。
-Xsa は , アキュムレータ保護コードを出力しません。
■ -sa
【記述形式】
-sa
【説明】
アキュムレータ保護コードの出力を行います。
構造化命令の式の前後でアキュムレータが変更されないように保護コードを出力
します。
【例】
fasm896s test -sa
■ -Xsa
【記述形式】
-Xsa
【説明】
アキュムレータ保護コードの出力を抑止します。
【例】
fasm896s test -sa -Xsa
50
CM81-00208-5, September 1, 2014
Support
4.7.2
Soft
Ma nual
-div_check, -Xdiv_check
-div_check は , DIVU 命令に対して警告メッセージを出力します。
-Xdiv_check は , DIVU 命令に対して警告メッセージを出力しません。
■ -div_check
【記述形式】
-div_check
【説明】
DIVU 命令に対して以下の警告メッセージを出力します。
エラー番号
日
メッセージ
DIVU 命令が検出されました
W1806A
英
DIVU is detected
【例】
fasm896s test -div_check
■ -Xdiv_check
【記述形式】
-Xdiv_check
【説明】
DIVU 命令に対して警告メッセージを出力しません。
【例】
fasm896s test -div_check -Xdiv_check
■ デフォルト動作について
ファミリ種別
デフォルト動作
F2MC-8L ファミリ
-Xdiv_check 指定時と同じ
F2MC-8FX ファミリ
-div_check 指定時と同じ
September 1, 2014, CM81-00208-5
51
Su pp or t
So ft
Manu al
■ DIVU 命令チェック機能について
F2MC-8FXファミリはDIVU命令の動作が従来のF2MC-8Lファミリと異なるためF2MC8L ファミリ用アセンブラソースを F2MC-8FX ファミリ用に流用する場合 , DIVU 命令
が使用されている箇所について問題がないか確認する必要があります。
アセンブラソース内のDIVU命令の使用について調べるには, エディタなどで検索する
ことで可能ですが , -div_check オプションを指定することでアセンブル時に検出できま
す。
52
CM81-00208-5, September 1, 2014
Support
4.8
Soft
Ma nual
その他のオプション
その他のオプションとして , オプションファイルの指定 , 警告メッセージ出力のレベ
ル指定 , およびモジュール名の指定などがあります。
■ その他のオプション
その他のオプションは次の 18 種類があります。
• -Xdof
: デフォルトオプションファイルの取り消し
• -f
: オプションファイルの指定
• -w
: 警告メッセージ出力のレベル指定
• -name
: モジュール名の指定
• -V
: 起動メッセージの表示
• -XV
: 起動メッセージ表示の取り消し
• -cmsg
: 終了メッセージの出力
• -Xcmsg
: 終了メッセージ出力の抑止
• -cwno
: ウォーニング時終了コード 1 指定
• -Xcwno
: ウォーニング時終了コード 0 指定
• -help
: ヘルプメッセージの表示
• -cpu
: ターゲットチップの指定
• -kanji
: 日本語コード系の指定
• -LBA
:.bit 擬似命令の次のレベルをバイトアドレスとして扱う
• -XLBA
:.bit 擬似命令の次のレベルをビットアドレスとして扱う
• -OVFW
: オーバフローを WARNING にする
• -XOVFW : オーバフローを ERROR にする
• -cif
September 1, 2014, CM81-00208-5
: 参照する CPU 情報ファイルの指定
53
Su pp or t
4.8.1
So ft
Manu al
-Xdof
デフォルトオプションファイルの読み込みを取り消します。
本オプションの指定がないときは , デフォルトオプションファイルは常に読み込ま
れます。
■ -Xdof
【記述形式】
-Xdof
【説明】
デフォルトオプションファイルの読み込みを取り消します。
本オプションの指定がないときは , デフォルトオプションファイルは常に読み込ま
れます。
デフォルトオプションファイルに関しては , 「3.6 デフォルトオプションファイル」
を参照してください。
【例】
fasm896s test -Xdof
54
CM81-00208-5, September 1, 2014
Support
4.8.2
Soft
Ma nual
-f
指定したオプションファイルを読み込みます。
オプションファイルには , fasm896s オプションが記述できます。
■ -f
【記述形式】
-f オプションファイル名
【説明】
指定したオプションファイルを読み込みます。
オプションファイル名に拡張子を省略した場合は , 拡張子 ".opt" を補います。
オプションファイルには , fasm896s オプションが記述できます。
本オプションファイルは , 複数指定が可能です。
オプションファイルに関しては , 「3.4 オプションファイル」を参照してください。
【例】
fasm896s test -f test.opt
September 1, 2014, CM81-00208-5
55
Su pp or t
4.8.3
So ft
Manu al
-w
警告メッセージの出力レベルを設定します。
警告レベルに 0 を指定した場合は , 警告メッセージは 1 つも出力されません。
■ -w
【記述形式】
-w [ 警告レベル ]
【説明】
警告メッセージの出力レベルを設定します。
警告レベルに 0 を指定した場合は , 警告メッセージは 1 つも出力されません。
警告レベルを省略した場合は , 2 となります。
本オプションの指定がないときは , 2 となります。
警告レベルと出力される警告メッセージに関しては ,「付録 A エラーメッセージ一
覧」を参照してください。
警告レベルと出力される警告メッセージを次に示します。
表 4.8-1 警告レベルと出力される警告メッセージ
警告レベル
0
1, 2
3
警告メッセージ
すべての警告メッセージを出力しません
エラー番号 W1551A, W1711A 以外の警告メッセージを出力
すべての警告メッセージを出力
【例】
fasm896s test -w 0
■ エラー番号 W1551A
ソースファイルの最後に .END 命令がなかったときに , 警告を出力します。
■ エラー番号 W1711A
.ORG 命令でアドレスが戻ったときに , 警告を出力します。
56
CM81-00208-5, September 1, 2014
Support
4.8.4
Soft
Ma nual
-name
モジュール名を指定します。
モジュール名は , .PROGRAM 命令よりも本オプションで指定した名前が有効になり
ます。
■ -name
【記述形式】
-name モジュール名
【説明】
モジュール名を指定します。
モジュール名は , 名前の規則に従います。
モジュール名は, .PROGRAM命令よりも本オプションで指定した名前が有効になり
ます。
【例】
fasm896s test -name prog
September 1, 2014, CM81-00208-5
57
Su pp or t
4.8.5
So ft
Manu al
-V, -XV
-V は , アセンブラ実行時に , 起動メッセージを表示します。
-XV は , 起動メッセージの表示を取り消します。
-V, -XV 両方とも指定がない場合は , 起動メッセージは表示されません。
■ -V
【記述形式】
-V
【説明】
アセンブラ実行時に , 起動メッセージを表示します。
起動メッセージは , 実行されたアセンブラのバージョン情報とコピーライトを表示
します。
【例】
fasm896s test -V
■ -XV
【記述形式】
-XV
【説明】
起動メッセージの表示を取り消します。
【例】
fasm896s test -V -XV
58
CM81-00208-5, September 1, 2014
Support
4.8.6
Soft
Ma nual
-cmsg, -Xcmsg
-cmsg は , アセンブラ実行時に , 終了メッセージを表示します。
-Xcmsg は , 終了メッセージの表示を取り消します。
-cmsg, -Xcmsg 両方とも指定がない場合は , 終了メッセージは表示されません。
■ -cmsg
【記述形式】
-cmsg
【説明】
アセンブラ実行時に , 終了メッセージを表示します。
【例】
fasm896s test -cmsg
■ -Xcmsg
【記述形式】
-Xcmsg
【説明】
終了起動メッセージの表示を取り消します。
【例】
fasm896s test -cmsg -Xcmsg
September 1, 2014, CM81-00208-5
59
Su pp or t
4.8.7
So ft
Manu al
-cwno, -Xcwno
-cwno は , 警告メッセージ出力時のアセンブラの終了コードを 1 にします。
-Xcwno は , 警告メッセージ出力時のアセンブラの終了コードを 0 にします。
-cwno, -Xcwno 両方とも指定がない場合は , 警告メッセージ出力時のアセンブラの
終了コードは 0 です。
■ -cwno
【記述形式】
-cwno
【説明】
警告メッセージ出力時のアセンブラの終了コードを 1 にします。
【例】
fasm896s test -cwno
■ -Xcwno
【記述形式】
-Xcwno
【説明】
警告メッセージ出力時のアセンブラの終了コードを 0 にします。
【例】
fasm896s test -cwno -Xcwno
60
CM81-00208-5, September 1, 2014
Support
4.8.8
Soft
Ma nual
-help
起動時オプションの一覧を表示します。
これをヘルプメッセージといいます。
■ -help
【記述形式】
-help
【説明】
起動時オプションの一覧を表示します。
これをヘルプメッセージといいます。
本オプションを指定したときは , アセンブル処理を行いません。
【例】
fasm896s test -help
September 1, 2014, CM81-00208-5
61
Su pp or t
4.8.9
So ft
Manu al
-cpu
ターゲットチップの指定を行います。
ターゲットチップには , 使用する製品名を指定します。
■ -cpu
【記述形式】
-cpu ターゲット
ターゲット : 使用する製品名
【説明】
ターゲットチップの指定を行います。
ターゲットには , 使用する製品名を指定します。
【例】
fasm896s test -cpu MB89051
fasm896s test -cpu MB89F051
62
CM81-00208-5, September 1, 2014
Support
4.8.10
Soft
Ma nual
-kanji
日本語コード系の指定を行います。
■ -kanji
【記述形式】
-kanji [EUC|SJIS]
EUC:EUC コード系を指定する。
SJIS: シフト JIS コード系を指定する。
【説明】
ソースプログラム中のコメント , 文字数 , および文字列定数に記述された日本語
コード系を指定します。
本オプションの指定がない場合は , SJIS が指定されたものとみなします。
【例】
fasm896s test -kanji EUC
September 1, 2014, CM81-00208-5
63
Su pp or t
4.8.11
So ft
Manu al
-LBA, -XLBA
-LBA は , .bit などのビットアドレッシングをとる擬似命令の後にラベルの定義のみ
の行が記述された場合に , そのラベルをバイトアドレッシングとして扱います。
-XLBA は , .bit などのビットアドレッシングをとる擬似命令の後にラベルの定義の
みの行が記述された場合に , そのラベルをビットアドレッシングとして扱います。
-LBA, -XLBA 両方とも指定がない場合は , -XLBA が指定された場合と同様の動作に
なります。
■ -LBA
【記述形式】
-LBA
【説明】
.bit, .data.i, .res.i のいずれかの擬似命令が記述された行の直後の行にラベル定義のみ
の行が記述された場合に , そのラベルをバイトアドレスとして処理します。この場
合 , ラベルのアドレスはバイト境界に調整されます。
【例】
fasm896s test -LBA
実行結果は以下のようになります。
000000:0 0
.bit 0
000000:1 0
LBL1:
000001
LBL2:
000001:0 1
.bit 0
.bit 1
■ -XLBA
【記述形式】
-XLBA
【説明】
.bit, .data.i, .res.i のいずれかの擬似命令が記述された行の直後の行にラベル定義のみ
の行が記述された場合に , そのラベルをビットアドレスとして処理します。この場
合 , ラベルのアドレスは直前のビットアドレスの次のビットアドレスになります。
64
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
【例】
fasm896s test -XLBA
実行結果は以下のようになります。
000000:0 0
.bit 0
000000:1 0
LBL1:
000000:
LBL2:
000000:2 1
September 1, 2014, CM81-00208-5
.bit 0
.bit 1
65
Su pp or t
4.8.12
So ft
Manu al
-OVFW, -XOVFW
-OVFW オプションは , 式を記述できるオペランドの演算結果が , そのオペランドサ
イズを超える場合に WARNING メッセージを表示します。
-XOVFW オプションは , 式を記述できるオペランドの演算結果が , そのオペランド
サイズを超える場合に ERROR メッセージを表示します。
■ -OVFW
【記述形式】
-OVFW
【説明】
-OVFWオプションは, 式を記述できるオペランドの演算結果がそのオペランドサイ
ズを超える場合 , 以下のような処理を行います。
式を記述できるオペランドには , 即値 , アドレス値があります。
- WARNING メッセージ (W1541A: 値が範囲外です ) を出力します。
- オブジェクトファイルを出力します。
- オペランドの演算結果をオペランドサイズに合わせてマスクして , 下位ビットの
みを設定してコードを出力します。
- アセンブルリスト出力指定オプション (-l) を指定した場合 , アセンブルリストを
出力します。
以下に本オプションの指定例と , アセンブルリスト出力例を示します。
アセンブルリストを出力する場合は , アセンブルリスト出力指定オプション (-l) を
指定してください。
【例】
fasm896s test -OVFW -l
・出力リスト
アセンブラは, 式の演算を32ビットで行っているため,
~(8008H)の演算結果は, FFFF7FF7Hとなります。
~(8008H)=FFFF7FF7Hは16ビットでマスクされ,
オブジェクトとリストに出力される値は7FF7Hになります。
SN LOC OBJ
<test.asm>
LLINE
SOURCE
=====
:
CO 0000 E47FF7
2 T
MOVW A,#~(8008H)
*** test.asm(2) W1541A: Value out of range (in operand 2)
:
66
-OVFW指定時は, WARNINGが出力されます。
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ -XOVFW
【記述形式】
-XOVFW ( デフォルト )
【説明】
-XOVFW オプションは , 式を記述できるオペランドの演算結果がそのオペランドサ
イズを超える場合 , 以下のような処理を行います。
式を記述できるオペランドには , 即値 , アドレス値があります。
- ERROR メッセージ (E4541A: 値が範囲外です ) を出力します。
- オブジェクトファイルは出力しません。
- アセンブルリストには , オペランドの演算結果をオペランドサイズに合わせてマ
スクして , 下位ビットのみを設定してアセンブルリストにコードを出力します。
- アセンブルリスト出力指定オプション (-l) を指定した場合 , アセンブルリストを
出力します。
以下に本オプションの指定例と , アセンブルリスト出力例を示します。
アセンブルリストを出力する場合は , アセンブルリスト出力指定オプション (-l) を
指定してください。
アセンブルリストは , エラー発生時にも出力されます。
【例】
fasm896s test -XOVFW -l
・出力リスト
アセンブラは, 式の演算を32ビットで行っているため,
~(8008H)の演算結果は, FFFF7FF7Hとなります。
~(8008H)=FFFF7FF7Hは16ビットでマスクされ,
リストに出力される値は7FF7Hになります。
SN LOC OBJ
<test.asm>
LLINE
SOURCE
=====
:
CO 0000 E47FF7
2 T
MOVW A,#~(8008H)
*** test.asm(2) E4541A: Value out of range (in operand 2)
:
September 1, 2014, CM81-00208-5
-XOVFW指定時は, ERRORが出力されます。
67
Su pp or t
4.8.13
So ft
Manu al
-cif
-cif は , SOFTUNE Tools が参照する CPU 情報ファイルを指定します。
■ -cif
【記述形式】
-cif CPU 情報ファイル名
CPU 情報ファイル名 : 参照する CPU 情報ファイル名
【説明】
SOFTUNE Tools が参照する CPU 情報ファイルを指定します。
【例】
fasm896s test -cpu MB89603 -cif "C:\SOFTUNE\lib\896\896.csv"
<注意事項>
SOFTUNE Tools は , CPU 情報ファイルを参照して , CPU に関する情報を取得します。
関連するツール間で異なる CPU 情報ファイルを参照した場合 , 作成するプログラムに問
題が発生する可能性があります。
SOFTUNE Tools に標準で添付されている CPU 情報ファイルは , 以下の場所にあります。
インストール先ディレクトリ \lib\896\896.csv
コンパイラ・アセンブラパックを異なるディレクトリにインストールし , SOFTUNE
Workbenchを使用せずにコンパイラ, アセンブラおよびリンケージエディタを使用する場
合, 各ツールに対して同一のCPU情報ファイルを参照するように-cifで指定してください。
68
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第5章
最適コードチェック機能
について
この章では , アセンブラの最適コードチェック機能
について説明します。
最適コードチェック機能とは , プログラムをさらに
高速に実行できる命令コードに書き換え可能な個
所を検出する機能です。
5.1 fasm896s の最適コードチェック機能
September 1, 2014, CM81-00208-5
69
Su pp or t
5.1
So ft
Manu al
fasm896s の最適コードチェック機能
fasm896s では , プログラムの動作に支障がない範囲で , 次の 1 つの最適化可能なプ
ログラム個所の検出を行います。
• 分岐命令の最適化
■ 分岐命令の最適化
分岐命令に対して分岐先ラベルまでの距離により, 生成する命令の最適化を行います。
最適化対象命令を次に示します (16 ビット分岐拡張命令 )。
● 対象命令 :Bcc16
本最適化は常に行われます。
16 ビット分岐拡張命令に対して行われる最適化です。
16 ビット分岐拡張命令と生成される命令の関係を表 5.1-1 に示します。
表 5.1-1 16 ビット分岐拡張命令から生成される命令 (1 / 3)
分岐拡張命令
BZ16 label
BNZ16 label
BEQ16 label
BNE16 label
BC16 label
BNC16 label
BLO16 label
70
動作
(Z)=1 なら分岐
(Z)=0 なら分岐
(Z)=1 なら分岐
(Z)=0 なら分岐
(C)=1 なら分岐
(C)=0 なら分岐
(C)=1 なら分岐
距離
生成される命令
-128 ~ +127
BZ label
その他
BNZ $+5
JMP label
-128 ~ +127
BNZ label
その他
BZ $+5
JMP label
-128 ~ +127
BEQ label
その他
BNE $+5
JMP label
-128 ~ +127
BNE label
その他
BEQ $+5
JMP label
-128 ~ +127
BC label
その他
BNC $+5
JMP label
-128 ~ +127
BNC label
その他
BC $+5
JMP label
-128 ~ +127
BLO label
その他
BHS $+5
JMP label
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
表 5.1-1 16 ビット分岐拡張命令から生成される命令 (2 / 3)
分岐拡張命令
BHS16 label
BN16 label
動作
(C)=0 なら分岐
(N)=1 なら分岐
距離
-128 ~ +127
BHS label
その他
BLO $+5
JMP label
-128 ~ +127
BN label
その他
BP $+5
JMP label
-128 ~ +127
BP16 label
BLT16 label
BGE16 label
BBC16 bit, label
BBS16 bit, label
BV16 label
BNV16 label
September 1, 2014, CM81-00208-5
(N)=0 なら分岐
(V)xor(N)=1
なら分岐
(V)xor(N)=0
なら分岐
(bit)=0 なら分岐
(bit)=1 なら分岐
生成される命令
BP label
その他
BN $+5
JMP label
-128 ~ +127
BLT label
その他
BGE $+5
JMP label
-128 ~ +127
BGE label
その他
BLT $+5
JMP label
-128 ~ +127
BBC bit, label
その他
BBS bit, $+6
JMP label
-128 ~ +127
BBS bit, label
その他
BBC bit, $+6
JMP label
-128 ~ +122
BN $+7
BLT label
JMP $+5
BGE label
その他
BN $+7
BGE $+10
JMP label
BLT $+5
JMP label
-128 ~ +122
BN $+7
BGE label
JMP $+5
BLT label
その他
BN $+7
BLT $+10
JMP label
BGE $+5
JMP label
(V)=1 なら分岐
(V)=0 なら分岐
71
Su pp or t
So ft
Manu al
表 5.1-1 16 ビット分岐拡張命令から生成される命令 (3 / 3)
分岐拡張命令
BLE16 label
BGT16 label
BLS16 label
BHI16 label
72
動作
距離
生成される命令
-128 ~ +125
BEQ label
BLT label
その他
BEQ $+4
BGE $+5
JMP label
-128 ~ +127
BEQ $+4
BGE label
その他
BEQ $+7
BLT $+5
JMP label
-128 ~ +125
BEQ label
BLO label
その他
BEQ $+4
BHS $+5
JMP label
-128 ~ +127
BEQ $+4
BHS label
その他
BEQ $+7
BLO $+5
JMP label
(Z)or((N)or(V))=1
なら分岐
(Z)or((N)or(V))=0
なら分岐
(Z)or(C)=1
なら分岐
(Z)or(C)=0
なら分岐
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第6章
アセンブルリスト
この章では , アセンブルリストの内容について説明
します。
6.1 全体形式
6.2 ページの形式
6.3 インフォメーションリスト
6.4 ソースリスト
6.5 セクションリスト
6.6 クロスリファレンスリスト
September 1, 2014, CM81-00208-5
73
Su pp or t
6.1
So ft
Manu al
全体形式
アセンブルリストは , 起動時オプションで "-l" または "-lf" が指定されたときに作成
されます。
アセンブルリストは次の 4 つの部分から構成されています。
• インフォメーションリスト
• ソースリスト
• セクションリスト
• クロスリファレンスリスト
■ 全体形式
アセンブルリストは , 起動時オプションで "-l" または "-lf" が指定されたときに作成さ
れます。
アセンブルリストは次の 4 つの部分から構成されています。
● インフォメーションリスト
起動時の指定内容 , エラー数 , ウォーニング数 , ソースファイル名 , インクルードファ
イル名 , およびオプションファイル名などが出力されます。
● ソースリスト
ソースリストは , ソースプログラムをアセンブルしたときの様々な情報を行単位に出
力します。
エラー情報 , ロケーション , およびオブジェクトデータなどが出力されます。
● セクションリスト
ソースプログラム内で定義されたセクションの名前 , 属性などが出力されます。
● クロスリファレンスリスト
ソースプログラム内で使用されているシンボル名の定義 , および参照されている行番
号を出力します。
■ 起動時オプションとの関係
それぞれのリスト部は , 起動時オプションで出力制御できます。
起動時オプションの詳細は , 「4.5 リスティングに関するオプション」を参照してくだ
さい。
表 6.1-1 にそれぞれのリスト部と起動時オプションとの関係を示します。
74
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
表 6.1-1 リスト部と起動時オプションとの関係
リスト部
起動時オプション
初期値
インフォメーションリスト
-linf {ON|OFF}
ON: 出力する
ソースリスト
-lsrc {ON|OFF}
ON: 出力する
セクションリスト
-lsec {ON|OFF}
ON: 出力する
クロスリファレンスリスト
September 1, 2014, CM81-00208-5
-lcros {ON|OFF}
OFF: 出力しない
75
Su pp or t
6.2
So ft
Manu al
ページの形式
アセンブルリストを構成するページの形式は , 起動時オプションまたは擬似命令で
その大きさを指定できます。
起動時オプションでは , 行数は "-pl", 桁数は "-pw" で指定します。
擬似命令では , 行数は ".FORM LIN", 桁数は ".FORM COL" で指定します。
■ インフォメーションリスト
アセンブルリストを構成するページの形式は , 起動時オプションまたは擬似命令でそ
の大きさを指定できます。
起動時オプションでは , 行数は "-pl", 桁数は "-pw" で指定します。
擬似命令では , 行数は ".FORM LIN", 桁数は ".FORM COL" で指定します。
ヘッダは 4 行あります。
図 6.2-1 にこの関係を示します。
図 6.2-1 ページの形式
ヘッダ
行数
桁数
指定範囲
行数
0,20~255
桁数
60~1023
初期値
60
100
(注意事項)行数に0を指定した場合は改ページされません。
76
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ ヘッダの形式
ヘッダは 4 行で構成されています。4 行目は空白行です。
図 6.2-2 ヘッダの形式
[ヘッダ1~2行目の形式]
F2MC-8L/8FX Family SOFTUNE Assembler V30L08
アセンブラ名/バージョン
2003-06-26 15:44:08 Page: 1
アセンブル日時 先頭からの通し頁番号
[ヘッダ3行目の形式]
・インフォメーションリスト
F2MC-8L/8FX Family SOFTUNE Assembler V30L08
2003-06-26 15:44:08 Page: 1
モジュール名
- ASSEMBLE INFORMATION - ( sample )
・ソースリスト
F2MC-8L/8FX Family SOFTUNE Assembler V30L08
*
2003-06-26 15:44:08 Page: 2
モジュール名
- SOURCE LISTING - ( sample )
*:この行は,.TITLE命令または,.HEADING命令で指定された文字列に変更できます。
・セクションリスト
F2MC-8L/8FX Family SOFTUNE Assembler V30L08
2003-06-26 15:44:08 Page: 10
モジュール名
- SECTION LISTING - ( sample )
・クロスリファレンスリスト
F2MC-8L/8FX Family SOFTUNE Assembler V30L08
2003-06-26 15:44:08 Page: 11
- CROSSREFERENCE LISTING - ( sample )
モジュール名
[ヘッダ4行目の形式]
必ず空白行が出力されます。
September 1, 2014, CM81-00208-5
77
Su pp or t
6.3
So ft
Manu al
インフォメーションリスト
アセンブルリストを構成するページの形式は , 起動時オプションまたは擬似命令で
その大きさを指定できます。
■ インフォメーションリスト
【形式 1】
図 6.3-1 インフォメーションリスト ( 形式 1)
___ ______________________________________________________________________
F2MC-8L/8FX Family SOFTUNE Assembler V30L08
- ASSEMBLE INFORMATION - ( sample )
|
2003-06-26 15:44:08 Page: 1
モジュール名
Command line
: fasm896s sample -C -W 2
Total errors
Total warnings
: 0
: 0
There were no errors.
Object file
List file
: sample.obj
: sample.lst
アセンブル時の
コマンド指定
|
|
|
|
|
|
|
|
|
エラーがなかった場合
表示されます。
オブジェクトファイル名
リストファイル名
|
|
|
|
|
CREATE DATE/TIME
|NO NEST
SOURCE-FILE-NAME
|-- ---------
------------------------------------------------------- -------------------------2003-03-01 09:00:00
sample.asm
|
|0
|-- ---------
------------------------------------------------------- --------------------------
|
|
ソースファイル名
|
|
ファイル作成日時
|
|
|
Current path
:
D:\
ファイル追番 |
(0から) |
Include path
:
INC896
= D: \INCLUDE\
Work file path
:
TMP
= D: \TMP\
Default Option file
:
OPT896
= D: \(fasm896.opt)
|
アセンブル時の
カレントディレクトリ
ワークディレクトリ
デフォルトオプション
ファイルディレクトリ
(およびファイル名)
|
|
環境変数名
|NO NEST
OPTION-FILE-NAME
|--------------
------------------------
|0
D:\fasm896.opt
|
------------------------
|
オプション
ファイル名
-l -P -lcros on
| ________________________________________
78
環境変数指定状況
CREATE DATE/TIME
-------------2003-03-0109:00:00
|
|
|
|
ファイル内容
|
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
【形式 2】
図 6.3-2 インフォメーションリスト ( 形式 2)
_______________________________________________________________________
F2MC-8L/8FX Family SOFTUNE Assembler V30L08
- ASSEMBLE INFORMATION - ( sample )
2003-06-26 15:44:08 Page: 1
モジュール名
Command line
: fasm896s sample -C -W 2
|
** Total errors
:
2
( First Line:
22)
|
|
** Total warnings
:
3
( First Line:
7)
|
|
|
|
|
|
エラーかウォーニングが Object file
あったときは, *を表示
List file
|
: - None -
エラーかウォーニングがあったときは,その数と
最初に見つかった行のリスト行番号を表示
|
: sample.lst
|
|
|
|NO NEST
SOURCE-FILE-NAME
CREATE DATE/TIME
|
|-- ------------- ------------------------------------------------------- -------------------------------------- |
sample.asm
|0
2003-03-01 09:00:00
|
|-- ------------- ------------------------------------------------------- -------------------------------------- |
|1*
sample.h
2003-03-01 09:02:00
|
|-- ------------- ------------------------------------------------------- -------------------------------------- |
|
インクルードのネスト状況(*の数がネストの深さを示します)
|
|
|
|
Current path
: D:\WORK\
|
|
Include path
: INC896
= -None- = D:\TOOL\LIB
\896\INCLUDE\
|
|
Work file path
: TMP
= D:\TMP\
|
|
Default Option file
: OPT896
= -None- = D:\TOOL\LIB
\896\(fasm896.opt)\
|
|
|
|
|
|______________________________________________________________________|
オプションファイルエラーが存在しない場合は,
ファイル内容は表示されません。
September 1, 2014, CM81-00208-5
79
Su pp or t
6.4
So ft
Manu al
ソースリスト
ソースリストは , ソースプログラムをアセンブルしたときの様々な情報を行単位に
出力します。
エラー情報 , ロケーション , オブジェクトデータなどが出力されます。
■ ソースリスト
図 6.4-1 ソースリスト
____________________________________________________________________________
F2MC-8L/8FX Family SOFTUNE Assembler V30L08
2003-06-26 15:44:08 Page: 2
- SOURCE LISTING - ( sample )
SN LOC
OBJ
LINE
SOURCE
====
DA 000
------------<DATA>------------
DA 000
ABCD 0123
DA 004
0020 0010
.SECTION DATA.DATA
1
2
CO 000 ------------<CODE>------------
rel:
.DATA.W 0xABCD.0x123
3
.DATA.H
4
.SECTION CODE.CODE
32,16
CO 000
00
5
NOP
CO 001
00
6
NOP
CO 002
00
7
NOP
8
.IMPORT imp
CO 003
0400
I
9
MOV
A,#imp
CO 005
600000
S
10
MOV
A,DATA
CO 008
0400
R
11
MOV
A,#rel
CO 00A
0500
12
MOV
A,0x00
オプションコード値
ロケーション値
(16進数表示)
セクション名の先頭2文字までを
表示します。
ソースプログラム表示
1行に表示できない場合は,複数行に
折り返して表示します。
リスト番号表示
オブジェクトファイル中のリスト行番号に
相当します。
オブジェクトコードに含まれる値の属性を次の優先順位で表示します。
I :外部参照値
S:セクション値
R:相対値
空:絶対値
80
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
プリプロセッサ処理
6.4.1
プリプロセッサで処理された行に対して表示される記号です。
■ プリプロセッサ処理
図 6.4-2 プリプロセッサ処理
SN LOC
:
OBJ
:
LLINE
:
SOURCE
:
:
2
DA 0000 0001
3
4
#ifdef DEF1
X
.DATA 0 /* then */
#else
5
6
.DATA 1 /* else */
#endif
プリプロセッサの処理状況表示
空:通常
プリプロセッサ
X:アセンブル対象外となった行
&:マクロ展開行
September 1, 2014, CM81-00208-5
81
Su pp or t
6.4.2
So ft
Manu al
エラー表示
エラーが発生した行に対して出力されるリスト形式です。
■ エラー表示
図 6.4-3 エラーのリスト形式
SN LOC OBJ
LLINE
:
:
:
DA 0000 0000I
:
SOURCE
:
2
*** sample.asm(2) W1527A: 未定義シンボルです(un_def)
.DATA
un_def
エラー認識番号
ソースファイル中の行番号
(リスト行番号でない)
ソースファイル名
W 1 5 2 7 A
ツール識別子 A:アセンブラ
エラー番号(3桁)
エラーレベル
W1: 警告レベル
E4: 文法エラー
F9: 致命的なエラー(アセンブル異常終了)
82
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
インクルードファイル
6.4.3
#include 命令で読み込まれたファイルに対して出力されるリスト形式です。
■ インクルードファイル
図 6.4-4 インクルードファイルのリスト形式
SN LOC
:
OBJ
:
LLINE
:
SOURCE
:
2
:
#include "sample.h"
=====
<sample.h>
CO0000 00
3=1
NOP
CO0001 00
4=1
NOP
CO0002 00
5=1
NOP
<sample.asm>
=====
インクルードファイル名
インクルードから
戻ったところの
ファイル名
September 1, 2014, CM81-00208-5
インクルードネスト数
最大8まで
-linc off / .LIST NOINCの場合には
この部分は表示しません。
ただし,エラーメッセージは
表示します。
83
Su pp or t
6.4.4
So ft
Manu al
.END, .PROGRAM, .SECTION
プログラム構造定義命令のリスト形式です。
• .END: ソースプログラムの終了
• .PROGRAM: モジュール名の宣言
• .SECTION: セクションの定義
■ .END
図 6.4-5 .END のリスト形式
SN LOC
OBJ
:
:
LLINE
SOURCE
:
:
:
==
25
.END
=> 00000300
25
.END 0x300
25
.END start
または
または
=> 00000010
R
スタートアドレス指定が
ある場合は16進数で表示する。
R:相対値
空:絶対値
なお , .END 命令以降にソースプログラムが書かれていてもアセンブルされません。
また , リストにも表示されません。
■ .PROGRAM
図 6.4-6 .PROGRAM のリスト形式
SN LOC
:
:
OBJ
LLINE
:
MODULE NAME = test_module1
:
9
SOURCE
:
.PROGRAM test _ module1
モジュール名として設定された文字列を表示します。
長い場合は折り返して表示します。
84
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ .SECTION
図 6.4-7 .SECTION のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
SE 0000 ------------<SEC1>-----------:
:
:
:
.SECTION
:
SE 0010 ------------<SEC2>-----------ロケーション
4
SOURCE
19
SEC1,CO DE,ALIGN1
:
.SECTION
SEC2,CODE,LOCATE=0x10
セクション名
セクション名が表示枠より長すぎる場合は,
後部をカットして表示します。
セクション名の先頭2文字を表示します。
September 1, 2014, CM81-00208-5
85
Su pp or t
6.4.5
So ft
Manu al
.ALIGN, .ORG, .SKIP
アドレス制御命令のリスト形式です。
• .ALIGN : 境界整列
• .ORG
: ロケーションカウンタ値の変更
• .SKIP
: ロケーションカウンタ値のインクリメント
■ .ALIGN
図 6.4-8 .ALIGN のリスト形式
SN LOC
:
OBJ
:
LLINE
:
SOURCE
:
CO 0004 - 0001 [3] < [4]
16
:
.ALIGN 4
指定されたALIGN値(10進数)
ALIGN境界までのオフセット値(10進数)
ALIGN前のロケーション
ALIGN後のロケーション
■ .ORG
図 6.4-9 .ORG のリスト形式
SN LOC
:
OBJ
:
LLINE
:
SOURCE
:
CO 0050
16
:
.ORG
0x50
ORG後のロケーション
■ .SKIP
図 6.4-10 .SKIP のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
CO 002A - 0020 [10]
16
SOURCE
:
.SKIP
10
SKIP値として指定された値(10進数)
SKIP前のロケーション
SKIP後のロケーション
86
CM81-00208-5, September 1, 2014
Support
6.4.6
Soft
Ma nual
.EXPORT, .GLOBAL, .IMPORT
プログラム結合命令は特にリストは変化しません。
• .EXPORT : 外部定義シンボルの宣言
• .GLOBAL : 外部定義・外部参照シンボルの宣言
• .IMPORT : 外部参照シンボルの宣言
■ .EXPORT
図 6.4-11 .EXPORT のリスト形式
SN LOC
:
:
OBJ
:
LLINE
:
SOURCE
:
16
.EXPORT exp1,exp2
■ .GLOBAL
図 6.4-12 .GLOBAL のリスト形式
SN LOC
:
:
OBJ
:
LLINE
:
SOURCE
:
16
.GLOBAL exp1,exp2
■ .IMPORT
図 6.4-13 .IMPORT のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
16
September 1, 2014, CM81-00208-5
SOURCE
:
.IMPORT imp1,imp2
87
Su pp or t
6.4.7
So ft
Manu al
.EQU
シンボル定義命令のリスト形式です。
• .EQU: シンボルへの値の割り付け
■ .EQU
図 6.4-14 .EQU のリスト形式
SN LOC
:
:
OBJ
LLINE
:
=00000100
:
16
SOURCE
:
sym01:
.EQU
0x100
シンボル値として設定された値(16進数)
88
CM81-00208-5, September 1, 2014
Support
6.4.8
Soft
Ma nual
.DATA, .BIT, .BYTE, .HALF, .LONG, .WORD, .DATAB
領域定義命令 ( 整数 ) のリスト形式です。
• .DATA
: 定数定義 ( 整数 )
• .BIT
: 定数定義 (1 ビット整数 )
• .BYTE
: 定数定義 (8 ビット整数 )
• .HALF
: 定数定義 (16 ビット整数 )
• .LONG
: 定数定義 (32 ビット整数 )
• .WORD : 定数定義 (16 ビット・32 ビット整数 )
• .DATAB : 定数ブロック定義 ( 整数 )
■ .DATA
図 6.4-15 .DATA のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
SOURCE
:
SE 0000 10
10
.DATA.B 0x10
SE 0001 20 10
11
.DATA.B 0x20,16
SE 0003 00R 00S
12
.DATA.B REL01,SEC1
SE 0005 0010
13
.DATA.H 0x10
SE 0007 0020 0010
14
.DATA.H 0x20,16
SE 000B 0000R 0000S
15
.DATA.H REL01,SEC1
SE 000F 00000010
16
.DATA.L 0x10
SE 0013 00000020 00000010
17
.DATA.L 0x20,16
SE 001B 00000000R 00000000S
18
.DATA.L REL01,SEC1
ロケーション
データの値
複数のデータがある場合
できるだけ多くのデータ値を
横にならべ表示します。
(16進数)
データ値直後の記号
I:外部参照値
S:セクション値
R:相対値
空:絶対値
■ .BIT
.DATA.I と同じリスト形式です。
■ .BYTE
.DATA.B と同じリスト形式です。
■ .HALF
.DATA.H と同じリスト形式です。
September 1, 2014, CM81-00208-5
89
Su pp or t
So ft
Manu al
■ .LONG
.DATA.L と同じリスト形式です。
■ .WORD
.DATA.W と同じリスト形式です。
F2MC-8L/8FX ファミリの場合は , .DATA.H と同じリスト形式です。
■ .DATAB
図 6.4-16 .DATAB のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
:
SE 0023 [2] 10
10
.DATAB.B 2,0x10
SE 0025 [16] 0020
11
.DATAB.H 16,0x20
SE 0045 [2] 00000010
12
.DATAB.L 2,0x10
SE 004D [2] 00000000
R
13
.DATAB.L 2,REL01
SE 0055 [2] 00
S
14
.DATAB.B 2,SEC1
ロケーション
データ値
(16進数)
折り返し数
(10進数)
90
SOURCE
データ値に含まれる属性
I :外部参照値
S :セクション値
R :相対値
空:絶対値
CM81-00208-5, September 1, 2014
Support
6.4.9
Soft
Ma nual
.FDATA, .FLOAT, .DOUBLE, .FDATAB
領域定義命令 ( 浮動小数点データ ) のリスト形式です。
• .FDATA : 定数定義 ( 浮動小数点数 )
• .FLOAT : 定数定義 (32 ビット浮動小数点数 )
• .DOUBLE : 定数定義 (64 ビット浮動小数点数 )
• .FDATAB : 定数ブロック定義 ( 浮動小数点数 )
■ .FDATA
図 6.4-17 .FDATA のリスト形式
SN LOC
OBJ
:
:
LLINE
:
SOURCE
:
:
SE 0057 3F80000040133333
16
.FDATA.S 0r1.0,0r2.3
SE 005F 3FF0000000000000
17
.FDATA.D 0r1.0
SE 0067 11112222
18
.FDATA.S 0x11112222
SE 006B 1111222233334444
19
.FDATA.D 0x1111222233334444
ロケーション
データの値
複数のデータがある場合できるだけ多くのデータ値を
横にならべ表示します。(16進数)
■ .FLOAT
.FDATA.S と同じリスト形式です。
■ .DOUBLE
.FDATA.D と同じリスト形式です。
■ .FDATAB
図 6.4-18 .FDATAB のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
SOURCE
:
SE 0073 [2] 3F800000
16
.FDATAB.S2,0r1.0
SE 007B [2] 3FF0000000000000
17
.FDATAB.D2,0r1.0
ロケーション
データ値(16進数)
折り返し数(10進数)
September 1, 2014, CM81-00208-5
91
Su pp or t
6.4.10
So ft
Manu al
.RES, .FRES
領域定義命令 ( データ値なし ) のリスト形式です。
• .RES : 領域定義命令 ( データ値なし : 整数 )
• .FRES : 領域定義命令 ( データ値なし : 浮動小数点数 )
■ .RES
図 6.4-19 .RES のリスト形式
SN LOC
:
:
OBJ
LLINE
:
SOURCE
:
:
CO 0000 [2]B
16
.RES.B
2
CO 002
[5]H
17
.RES.H
5
CO 000C [3]L
18
.RES.L
3+1-1
ロケーション
折り返し数
(10進数)
データサイズ
B:1バイト長
H:2バイト長
L:4バイト長
W:2バイト長
■ .FRES
図 6.4-20 .FRES のリスト形式
SN LOC
:
:
OBJ
:
:
SOURCE
:
CO 0018 [2]S
16
.FRES.S 2
CO 0020 [2]D
17
.FRES.D 2
ロケーション
折り返し数
(10進数)
92
LLINE
データサイズ
S:単精度浮動小数点数データ(領域長:4バイト長)
D:倍精度浮動小数点数データ(領域長:8バイト長)
CM81-00208-5, September 1, 2014
Support
6.4.11
Soft
Ma nual
.SDATA, .ASCII, .SDATAB
領域定義命令 ( 文字列 ) のリスト形式です。
• .SDATA : 文字列定義
• .ASCII
: 文字列定義
• .SDATAB : 文字列ブロック定義
■ .SDATA
図 6.4-21 .SDATA のリスト形式
SN LOC
OBJ
:
:
LLINE
:
SOURCE
:
:
DA 0000 61 62 63 64 65 66 67 68 69 6A
16
.SDATA
"abcdefghijklmnopqrstuv\
6B 6C 6D 6E 6F 70 71 72 73 74
17
wxyz0123456789" /*継続行*/
18
.SDATA "123\xff123","12345\t\n"
DA 0032 31 32 33 09 31 32 33
19
.SDATA
"123\t123","\"",\
DA 0039 22
20
"1234567890"
21
.SDATA "" /* 空文字列*/
75 76 77 78 79 7A 30 31 32 33
34 35 36 37 38 39
DA 0024 31 32 33 FF 31 32 33
DA 002B 31 32 33 34 35 09 0A
DA 003A 31 32 33 34 35 36 37 38 39 30
DA 0044
ロケーション
データ値
1バイトずつ表示します。(16進数)
■ .ASCII
.SDATA と同じリスト形式です。
■ .SDATAB
図 6.4-22 .SDATAB のリスト形式
SN LOC
:
OBJ
:
LLINE
:
:
DA 0044 [2]
DA 0044 [5]
31 32 33 34 35 36 37 38
SOURCE
:
16
.SDATAB 2,"" /* 空文字列*/
17
.SDATAB 5,"12345678901234567890"
39 30 31 32 33 34 35 36 37 38
39 30
ロケーション
データ値
1バイトずつ表示します。(16進数)
September 1, 2014, CM81-00208-5
93
Su pp or t
6.4.12
So ft
Manu al
.DEBUG
デバッグ情報出力制御命令のリスト形式です。
• .DEBUG: デバッグ情報出力の部分指定
■ .DEBUG
図 6.4-23 .DEBUG のリスト形式
SN LOC
:
:
======
:
:
DEBUG INFORMATION Already ON
:
:
94
31
:
DEBUG INFORMATION off -> ON
起動時オプションで,
デバッグ情報出力(-g)
の指定ができない場合は,
"Ignore"と表示されます。
28
:
DEBUG INFORMATION on -> OFF
:
======
LLINE
:
:
======
:
OBJ
40
SOURCE
:
.DEBUG ON
:
.DEBUG OFF
:
.DEBUG ON
ON/OFF状態表示
off -> ON
:本行以降からデバッグ情報出力を開始します。
on -> OFF :本行以降からデバッグ情報出力を抑止します。
Already ON :既にデバッグ情報出力を開始済です。
Already OFF :既にデバッグ情報出力を抑止済です。
CM81-00208-5, September 1, 2014
Support
6.4.13
Soft
Ma nual
.LIBRARY
ライブラリファイル指定命令は特にリストは変化しません。
• .LIBRARY: ライブラリファイルの指定
■ .LIBRARY
図 6.4-24 .LIBRARY のリスト形式
SN LOC
:
:
OBJ
:
LLINE
:
16
September 1, 2014, CM81-00208-5
SOURCE
:
.LIBRARY "sample.lib"
95
Su pp or t
6.4.14
So ft
Manu al
.FORM, .TITLE, .HEADING, .LIST, .PAGE, .SPACE
リスト出力制御命令のリスト形式です。
• .FORM
:1 ページの行数・桁数指定
• .TITLE
: タイトル指定
• .HEADING: タイトルの変更
• .LIST
: アセンブルソースリスト出力の詳細指定
• .PAGE
: 改ページ指定
• .SPACE : 空白行の出力
■ .FORM
図 6.4-25 .FORM のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
16
SOURCE
:
.FORM LIN=70,COL=80
本行よりリストファイル形式が
70行×80桁として出力されます。
70行
80桁
■ .TITLE
図 6.4-26 .TITLE のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
16
SOURCE
:
.TITLE "SAMPLE PROGRAM"
先頭ページから
_____________________________________________________________________________
F2MC-8L/8FX Family SOFTUNE Assembler V30L08 2003-06-26 15:44:08 Page: 2
SAMPLE PROGRAM
.TITLEで指定した文字列
SN LOC
:
96
:
OBJ
:
LLINE
:
SOURCE
:
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ .HEADING
図 6.4-27 .HEADING のリスト形式
_____________________________________________________________________________
F2MC-8L/8FX Family SOFTUNE Assembler V30L08 2003-06-26 15:44:08
SAMPLE PROGRAM
SN LOC
:
:
OBJ
LLINE
:
:
Page: 2
SOURCE
:
.HEADINGの行で改ページします。次のページからタイトルが変わります。
_____________________________________________________________________________
F2MC-8L/8FX Family SOFTUNE Assembler V30L08 2003-06-26 15:44:08
PROG-1
SN LOC
OBJ
LLINE
Page: 3
SOURCE
.HEADING "PROG-1"
■ .LIST
図 6.4-28 .LIST のリスト形式
SN LOC
:
:
OBJ
LLINE
:
:
SOURCE
:
6
.LIST OFFの行から.LIST ONの
直前の行までは表示されません。
(行番号は進む)
7
; 次の行(8行目)に.LIST OFF
10
.LIST
ON
11
■ .PAGE
図 6.4-29 .PAGE のリスト形式
SN LOC
:
:
OBJ
:
LLINE
:
SOURCE
:
6
7
; 次の行(8行目)に.PAGE
.PAGEの行で改ページします(ただし,ページ先頭が.PAGEの場合は改ページしません)。
September 1, 2014, CM81-00208-5
97
Su pp or t
So ft
Manu al
■ .SPACE
図 6.4-30 .SPACE のリスト形式
SN LOC
:
:
OBJ
:
LLINE
:
5
SOURCE
:
; 次の行(6行目)に.SPACE 2
指定された行数の空白を生成します。
7
98
CM81-00208-5, September 1, 2014
Support
6.5
Soft
Ma nual
セクションリスト
ソースプログラム内で定義されたセクションの名前 , 属性などが出力されます。
■ セクションリスト
図 6.5-1 セクションリスト
___________________________________________________________________________
F2MC-8L/8FX Family SOFTUNE Assembler V30L08 2003-06-26 15:44:08
Page: 10
- SECTION LISTING - ( sample )
モジュール名
NOSECTION-NAME
SIZE ATTRIBUTES
0 SEC1 . . . . . . . . . . . . . . . . . . . . . . . . . 0008 CODE
REL ALIGN=1
1 SEC02 . . . . . . . . . . . . . . . . . . . . . . . . 0008 CODE
REL ALIGN=1
2 ON . . . . . . . . . . . . . . . . . . . . . . . . . . . 0004 CODE
REL ALIGN=1
3 SEC05 . . . . . . . . . . . . . . . . . . . . . . . . 0008 CODE
REL ALIGN=1
4 SEC06 . . . . . . . . . . . . . . . . . . . . . . . . 0008 DATA
REL ALIGN=1
5 SEC07 . . . . . . . . . . . . . . . . . . . . . . . . 0008 CONST
REL ALIGN=1
6 SEC08 . . . . . . . . . . . . . . . . . . . . . . . . 00008 COMMON REL ALIGN=1
7 SEC09 . . . . . . . . . . . . . . . . . . . . . . . . 0008 STACK
REL ALIGN=1
SEC10 . . . . . . . . . . . . . . . . . . . . . . . . 0008 DUMMY
8 SEC11 . . . . . . . . . . . . . . . . . . . . . . . . 0008 CODE
ABS LOCATE=0100
9 SEC12 . . . . . . . . . . . . . . . . . . . . . . . . 0008 CODE
REL ALIGN=1
10 SEC13 . . . . . . . . . . . . . . . . . . . . . . . . 0008 CODE
REL ALIGN=1
11 SEC14 . . . . . . . . . . . . . . . . . . . . . . . . 0008 DATA
ABS LOCATE=0000
12 SEC15 . . . . . . . . . . . . . . . . . . . . . . . . 0008 CONST
REL ALIGN=1
13 SEC16 . . . . . . . . . . . . . . . . . . . . . . . . 0008 COMMON ABS LOCAE=0010
14 SEC17 . . . . . . . . . . . . . . . . . . . . . . . . 0008 STACK
セクション名(出現順)
セクションサイズ
(16進数)
セクション出現番号
0から始まります。
ダミーセクションは番号はありません。
オブジェクトファイル中での
セクション番号に相当します。
September 1, 2014, CM81-00208-5
REL ALIGN=1
セクションタイプ
セクション配置形式
相対セクションならALIGN値を
表示します。
絶対セクションならLOCATE値を
表示します。
ダミーセクションは空白を表示
します。
99
Su pp or t
6.6
So ft
Manu al
クロスリファレンスリスト
ソースプログラム内で使用されているシンボル名の定義 , および参照されている行
番号を出力します。
■ クロスリファレンスリスト
図 6.6-1 クロスリファレンスリスト
__________________________________________________________________________
F2MC-8L/8FX Family SOFTUNE Assembler V30L08 2003-06-26 15:44:08
- CROSSEWFERENCE LISTING - ( sample )
NAME
ATTRIB.
CODE . . . . . . . . . . . . . . . . . . . . .
SECT/ABS
1000 6 #
DATA . . . . . . . . . . . . . . . . . . . . . .
SECT/REL
0000 2 #
DUMMY . . . . . . . . . . . . . . . . . . . .
SECT/DUM
SYM_ABS . . . . . . . . . . . . . . . . . .
ABS
00001000 7 #
SYM_ABS/EXP . . . . . . . . . . . . . .
ABS/EXP
00001000 9 #
SYM_IMP . . . . . . . . . . . . . . . . . .
IMP
SYM_REL . . . . . . . . . . . . . . . . . .
REL
00000000 3 #
SYM_REL/EXP . . . . . . . . . . . . . .
REL/EXP
00000000 5 #
SYM_UNDEFINED . . . . . . . . . . .
UNDEFINED
シンボル値
(16進数)
シンボル名(セクション名も含む)
大文字,小文字,アルファベット
順に表示します。
シンボル種別
ABS
REL
ABS/EXP
REL/EXP
IMP
SECT/ABS
SECT/REL
SECT/DUM
UNDEFINED
STRU/TAG
STRU/MEM
STRU/ABS
STRU/REL
100
Page: 11
VALUE DEFINITION/REFERENCES
11 #
8
1
4
10
参照行番号(リスト行番号)
定義行番号(リスト行番号)
絶対シンボル
相対シンボル
絶対シンボル(外部定義指定)
相対シンボル(外部定義指定)
外部参照シンボル
絶対セクション
相対セクション
ダミーセクション
未定義シンボル
構造体タグ名
構造体要素名
絶対シンボル(構造体変数)
相対シンボル(構造体変数)
CM81-00208-5, September 1, 2014
Support
第 II 部
Soft
Ma nual
文法編
この部では , アセンブラのソースプログラムを記述する際の文法や記述形式につい
て説明します。
第 7 章 言語の基本規則
第 8 章 セクション
第 9 章 機械命令
第 10 章 アセンブラ擬似命令
第 11 章 プリプロセッサ処理
第 12 章 アセンブラ擬似機械命令
第 13 章 構造化命令
September 1, 2014, CM81-00208-5
101
Su pp or t
102
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第7章
言語の基本規則
この章では , アセンブリ言語を使用してプログラム
を作成する場合の書き方およびその規則について
説明します。
7.1 文の形式
7.2 文字セット
7.3 名前
7.4 前方参照シンボルと後方参照シンボル
7.5 整数定数
7.6 ロケーションカウンタシンボル
7.7 文字定数
7.8 文字列
7.9 浮動小数点定数
7.10 浮動小数点定数のデータ形式
7.11 式
7.12 コメント
September 1, 2014, CM81-00208-5
103
Su pp or t
7.1
So ft
Manu al
文の形式
アセンブラの 1 行は , 次の 5 つのフィールドから構成されます。
• シンボルフィールド
• オペレーションフィールド
• オペランドフィールド
• コメントフィールド
• 継続指示フィールド
1 行には最大 4095 文字まで記述できます。
■ 文の形式
アセンブラの文の形式は , 次のとおりです。
シンボル
フィールド
オペレーション
フィールド
オペランド
フィールド
コメント
フィールド
継続指示
フィールド
各フィールドは省略可能です。
シンボルフィールド , オペレーションフィールド , オペランドフィールドの区切りには ,
1 つ以上の空白またはタブが必要です。
1 行には , 最大 4095 文字まで記述できます。
■ シンボルフィールド
シンボルを記述します。
シンボルは , 先頭カラムから始めるか , または , 任意のカラムから始め最後にコロン (:)
を付けます。
【例】
SYMBOL
SYMBOL:
SYMBOL:
■ オペレーションフィールド
機械命令や擬似命令などのオペレーションニーモニックを記述します。
このフィールドは , 2 カラム目以降に記述します。
シンボルフィールドとの区切りには , 1 つ以上の空白またはタブが必要です。
【例】
.SECTION CODE
NOP
.DATA 100
104
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ オペランドフィールド
機械命令や擬似命令などのオペランドを記述します。
オペランドが複数ある場合には , カンマ (, ) で区切って記述します。
オペレーションフィールドとの区切りには , 1 つ以上の空白またはタブが必要です。
【例】
.SECTION
.DATA
.SECTION
MOV
DATA, DATA, ALIGN=4
1, 2, 4
CODE, CODE, ALIGN=2
A, R1
■ コメントフィールド
注釈を記述します。
このフィールドは , 任意のカラムから始めることができます。
セミコロン (;) または 2 個のスラッシュ (//) でコメントが始まり , 行終端までコメント
となります。このコメントを行コメントといいます。
C 言語風に , /* ~ */ で囲ってコメントを記述することもできます。これを範囲コメン
トといいます。範囲コメントは好きな位置にコメントを書くことができます。
【例】
/*---------コメント
------------*/
PUSHW
MOVW
IX
; コメント
A, /* コメント */ SP
// コメント
■ 継続指示フィールド
行の最後にバックスラッシュ (\) を置くことによって次の行に継続できます。
バックスラッシュ (\) の次の文字に改行以外の文字がある場合は , 継続しません。
行の継続は , コメント , 文字定数 , 文字列の途中にも指定できます。
【例】
.DATA
0x01, 0x02, 0x03,
\
0x04, 0x05, 0x06,
; コメント \
0x07, 0x08, 0x09
.SDATA "abcdefghijklmnopqrstuvwxyz\
ABCDEFGHIJKLMNOPQRSTUVWXYZ"
/* 文字列の継続 */
September 1, 2014, CM81-00208-5
105
Su pp or t
7.2
So ft
Manu al
文字セット
アセンブリ言語でプログラムを書く場合に使用できる文字を示します。
• 英字 : 大文字 (A ~ Z), 小文字 (a ~ z)
• 数字 : 0 ~ 9
• 記号 : +-*/% < >| &~=()!^$@#_'":.\; 空白 タブ
■ 文字セット
本アセンブラで使用できる文字セットを表 7.2-1 に示します。
表 7.2-1 文字セット
種別
文字
英字 ( 大文字 )
ABCDEFGHIJKLMNOPQRSTUVWXYZ
英字 ( 小文字 )
abcdefghijklmnopqrstuvwxyz
数字
0123456789
記号
+-*/% < >| &~=()!^
$ @ # _ ' " : . \ ; 空白 タブ
<注意事項>
• バックスラッシュ (\) は端末によっては , 円記号 (¥) で表示される場合があります。
• コメントまたは文字列には, 文字セット以外の記号や日本語コード(SJISコードかEUC
コードのみ ) が記述できます。
106
CM81-00208-5, September 1, 2014
Support
7.3
Soft
Ma nual
名前
名前は , アセンブラにおいて種々のものを識別および参照するために使われます。
名前には , モジュール名 , シンボル , セクション名 , 構造体タグ名 , マクロ名などが
あります。
予約語には , 次のものがあります。
• レジスタ名
: R0 ~ R7, A, T, IX, EP, SP, PC, PS
• サイズ演算子 :SIZEOF, BITADR, BITPOS
■ 名前の規則
• 255 文字以内です。
• 先頭文字は , 英字 , アンダスコア (_) です。
• 2 文字目以降は , 英字 , 数字 , アンダスコア (_) で構成されます。
• 大文字 , 小文字は区別されます。
■ 名前の分類
名前は使用される目的により次のように分類されます。
● モジュール名
.PROGRAM 命令で定義されます。オブジェクトを識別するための名前です。
● シンボル
ある値を割り当てられた名前です。
普通は , シンボルフィールドで定義されます。
分岐先のラベルとして使用したり , データのアドレスに使用したりします。
また , .EQU 命令などで値を割り当てたりします。
● セクション名
.SECTION 命令で定義されます。
セクションを識別するための名前です。
セクション名は , シンボルに割り当てられます。
式の項にセクション名を使用する場合は , リンク後のセクションの先頭アドレスを示
します。
● 構造体タグ名
.STRUCT 命令で定義されます。
構造体を識別する名前です。
● マクロ名
プリプロセッサで使用します。
プリプロセッサについては「第 11 章 プリプロセッサ処理」を参照してください。
September 1, 2014, CM81-00208-5
107
Su pp or t
So ft
Manu al
■ 予約語
予約語は , あらかじめアセンブラに予約されている名前で , ユーザは定義できない名前
です。
予約語の英字は , 大文字 , 小文字とも同じと解釈され区別しません。
予約語には , 次のものがあります。
● レジスタ名 :
R0 ~ R7, A, T, IX, EP, SP, PC, PS
● 演算子
SIZEOF, BITADR, BITPOS
● その他
以下の語は , リンカの予約名となっています。
アセンブラでは , 使用に際してエラーの検出は行いませんが , 使用できません。
• _ROM_ または _RAM_ で始まるセクション名およびシンボル名
108
CM81-00208-5, September 1, 2014
Support
7.4
Soft
Ma nual
前方参照シンボルと後方参照シンボル
アセンブラプログラムにおいて , 機械命令や擬似命令のオペランドに使用するシン
ボルは , 前方参照シンボルか後方参照シンボルかのどちらかの扱いを受けます。
使用したシンボルが , 未定義の場合は , 前方参照シンボル扱いとなります。
使用したシンボルが , 定義済の場合は , 後方参照シンボル扱いとなります。
■ 前方参照シンボルと後方参照シンボル
アセンブラプログラムにおいて , 機械命令や擬似命令のオペランドに使用するシンボ
ルは , 前方参照シンボルか後方参照シンボルかのどちらかの扱いを受けます。
使用したシンボルが , まだ未定義の場合は , 前方参照シンボル扱いとなります。
使用したシンボルが , すでに定義済の場合は , 後方参照シンボル扱いとなります。
【例】
BEQ
aaa
/* BEQ 命令にとって aaa は前方参照シンボル */
BLT
aaa
/* BLT 命令にとって aaa は後方参照シンボル */
aaa:
前方参照シンボルの扱いとなったシンボルは , アセンブラ処理において次のような制
約を受けます。
• 式中に書かれた前方参照シンボルは , その値が絶対値の場合でも式の種類は , 相対
式と同じ扱いになります。したがって , 絶対値のみしか記述できないオペランドに
は記述できません。
■ サイズ演算子について
通常のサイズ演算子は , リンカで算出されるので相対値扱いになりますが , ダミーセク
ションのサイズを算出する場合のみは , アセンブラで算出を行います。
この場合 , 処理の都合上 , サイズ演算子は前方参照シンボル扱いで処理を行います。
サイズ演算子については , 「7.11.4 名前から算出される値」を参照してください。
September 1, 2014, CM81-00208-5
109
Su pp or t
7.5
So ft
Manu al
整数定数
整数定数には , 2 進定数 , 8 進定数 , 10 進定数 , 16 進定数の 4 種類があります。
■ 整数定数
整数定数には , 2 進定数 , 8 進定数 , 10 進定数 , 16 進定数の 4 種類があります。
C 言語の long 型指定 (123L など ), unsigned 型指定 (123U など ) もサポートしています。
■ 2 進定数
2 進法で表された整数定数です。
プリフィックス (B' または 0b) を付けるか , サフィックス (B) を付けて記述します。
プリフィックス(B'または0b), サフィックス(B)は大文字でも小文字でもかまいません。
【例】
B'0101
0b0101
0101B
■ 8 進定数
8 進法で表された整数定数です。
プリフィックス (Q' または 0) を付けるか , サフィックス (Q) を付けて記述します。
プリフィックス (Q' または 0), サフィックス (Q) は大文字でも小文字でもかまいません。
【例】
Q'377
0377
377Q
■ 10 進定数
10 進法で表された整数定数です。
プリフィックス (D') を付けるか , サフィックス (D) を付けて記述します。
プリフィックス , サフィックスは 10 進定数のみ省略可能です。
プリフィックス (D'), サフィックス (D) は大文字でも小文字でもかまいません。
【例】
D'1234567
1234567
1234567D
■ 16 進定数
16 進法で表された整数定数です。
プリフィックス (H' または 0x) を付けるか , サフィックス (H) を付けて記述します。
プリフィックス(H'または0x), サフィックス(H)は大文字でも小文字でもかまいません。
【例】
H'ff
110
0xFF
0FFH
CM81-00208-5, September 1, 2014
Support
7.6
Soft
Ma nual
ロケーションカウンタシンボル
現在のロケーションカウンタを表すシンボルです。
ロケーションカウンタシンボルは , '$' です。
■ ロケーションカウンタシンボル
アセンブラは , アセンブル時のアドレス付けを , ロケーションカウンタを用いて行いま
す。
この現在のロケーションの値をロケーションカウンタシンボルで参照できます。
ロケーションカウンタシンボルは , '$' で表現します。
ロケーションカウンタの値は , 絶対セクションの場合は絶対値 , 相対セクションの場合
は相対値となります。
【例】
BNE
September 1, 2014, CM81-00208-5
$+4
111
Su pp or t
7.7
So ft
Manu al
文字定数
文字定数は文字の値を示します。
文字定数は文字定数要素をシングルクォート (') で囲って記述します。
文字定数要素は , 4 文字まで指定可能です。
■ 文字定数
文字定数は文字定数要素をシングルクォート (') で囲って記述します。
文字定数要素には , 文字 , 拡張表記 , 8 進表記 , 16 進表記があります。
文字定数要素は , 4 文字まで指定可能です。
文字定数は , 256 進法の扱いとなります。
● 文字
バックスラッシュ (\), シングルクォート (') を除くすべての文字と空白文字は単独で文
字定数要素となります。
【例】
'P'
[email protected]'
'0A”'
● 拡張表記
バックスラッシュ (\) の後に特定の文字を続けて文字定数要素とします。
これを拡張表記とよびます。
拡張表記を表 7.7-1 に示します。
表 7.7-1 拡張表記
文字
文字定数要素
値
\n
\t
\b
\r
\f
\\
\'
\”
\a
\v
\?
0x0A
0x09
0x08
0x0D
0x0C
0x5C
0x27
0x22
0x07
0x0B
0x3F
改行文字
水平タブ文字
後退文字
復帰文字
改ページ文字
バックスラッシュ
シングルクォート
ダブルクォート
警報文字
垂直タブ文字
疑問符
( 注意事項 ) 拡張表記として用いられる文字は , 小文字のみです。
【例】
'\n'
112
'\''
'\”\\'
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
● 8 進表記
文字コードのビットパターンを直接表記して 1 バイトデータを表現します。
8 進表記は , バックスラッシュ (\) の後に 1 から 3 文字の 8 進数字を続けたものです。
【例】 文字定数要素
ビットパターン
'\0'
b'00000000
'\377'
b'11111111
'\53'
b'00101011
'\0123'
b'00001010 → '\012' と '3' に分かれます
● 16 進表記
文字コードのビットパターンを直接表記して 1 バイトデータを表現します。
16 進表記は , バックスラッシュ (\) の後に文字 x ( 小文字 ) と 1 文字か 2 文字の 16 進文
字を続けたものです。
【例】 文字定数要素
ビットパターン
'\x0'
b'00000000
'\xff'
b'11111111
'\x2B'
b'00101011
'\x0A5'
b'00001010 → '\x0A' と '5' に分かれます
September 1, 2014, CM81-00208-5
113
Su pp or t
7.8
So ft
Manu al
文字列
文字列は文字列要素の列をダブルクォート (") で囲って記述します。
■ 文字列
文字列は文字列要素の列をダブルクォート (") で囲って記述します。
文字列要素には , 文字定数要素と同じ形式を使用できます。詳しくは ,「7.7 文字定数」
を参照してください。
文字列要素にダブルクォート (") を記述する場合は , 拡張表記 (\") を使用します。
シングルクォート (') は拡張表記を使用せずにそのまま記述できます。
【例】
"ABCD\n"
"012345\n\0"
"\xff\t\n\0377\0"
<注意事項>
文字列に日本語を記述した場合は , 記述したコード系 (SJIS または EUC) で , そのままオ
ブジェクトへ出力されます。アセンブラ内でコード系の変換は行いません。
114
CM81-00208-5, September 1, 2014
Support
7.9
Soft
Ma nual
浮動小数点定数
浮動小数点定数の表記には , 次の形式があります。
• [0r][+|-]{.d|d[.[d]]} [e[[+|-]d]] d は 10 進数
• [F'][+|-]{.d|d[.[d]]} [e[[+|-]d]]
d は 10 進数
• 0xh
h は 16 進数
• H'h
h は 16 進数
■ 浮動小数点定数の表記
【記述形式 1】
[0r][+|-]{.d|d[.[d]]} [e[[+|-]d]]
[F'][+|-]{.d|d[.[d]]} [e[[+|-]d]]
d は 10 進数
【説明】
浮動小数点定数を値で指定します。
"e" は指数部を指定することを表し , "e" に続く値は指数部となります。
"e" は大文字でもかまいません。
プリフィックス (0r または F') は省略できます。
【例】
0r954
0r-12e+0
415.
F'.5
F'2.0e2
-2.5E-4
【記述形式 2】
0xh
H'h
h は 16 進数
【説明】
浮動小数点定数をビットパターンで直接指定します。
データ長分のビットパターンを 16 進数で指定します。
【例 1】倍精度でマイナス無限大を表す場合
0xFFF0000000000000
【例 2】単精度でマイナス無限大を表す場合
0xFF800000
September 1, 2014, CM81-00208-5
115
Su pp or t
So ft
Manu al
■ 単精度と倍精度の指定
浮動小数点定数が単精度 (32 ビット ) になるか倍精度 (64 ビット ) になるかは , 擬似命
令またはサイズ指定によって決まります。
● 単精度 (32 ビット ) になる場合
1. 浮動小数点定数の擬似命令でサイズ指定が省略されている場合
2. "S" のサイズ指定がある場合
3. .FLOAT 命令の場合
● 倍精度 (64 ビット ) になる場合
1. "D" のサイズ指定がある場合
2. .DOUBLE 命令の場合
【例】
116
.FDATA.S 1.2
/* S のサイズ指定があるので単精度指定 */
.FDATA.D 1.2
/* D のサイズ指定があるので倍精度指定 */
.FDATA 1.2
/* サイズ指定が省略されているので単精度指定 */
.FLOAT 0.1
/* .FLOAT 命令なので単精度指定 */
.DOUBLE 0.1
/* .DOUBLE 命令なので倍精度指定 */
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
7.10 浮動小数点定数のデータ形式
浮動小数点定数のデータ形式は , ANSI/IEEE Std754-1985 の仕様に準拠しています。
浮動小数点定数のデータ形式は次の 2 つがあります。
• 単精度浮動小数点定数のデータ形式
• 倍精度浮動小数点定数のデータ形式
また , 浮動小数点定数で表現可能な範囲を示します。
■ 単精度浮動小数点定数のデータ形式
単精度浮動小数点定数のデータ形式は , 符号 1 ビット , 指数部 8 ビット , 仮数部 23 ビッ
トで構成されています。
31 30
23 22
指数部
0
仮数部
符号部
■ 倍精度浮動小数点定数のデータ形式
倍精度浮動小数点定数のデータ形式は , 符号 1 ビット , 指数部 11 ビット , 仮数部 52 ビッ
トで構成されています。
63 62
52 51
指数部
0
仮数部
符号部
September 1, 2014, CM81-00208-5
117
Su pp or t
So ft
Manu al
■ 浮動小数点定数の表現可能な範囲
表 7.10-1 に浮動小数点定数の表現可能な範囲を示します。
表 7.10-1 浮動小数点定数の表現可能な範囲
精度
118
表現可能範囲
単精度
-3.40282356779733661637e+38
~ -1.17549431578982589985e-38
-0
0
1.17549431578982589985e-38
~ 3.40282356779733661637e+38
倍精度
-1.79769313486231580793e+308
~ -2.22507385850720125958e-308
-0
0
2.22507385850720125958e-308
~ 1.79769313486231580793e+308
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
7.11 式
式は , アドレスやデータ値などを表すところに記述できます。
式には , C 言語風の演算子が用意されています。
■ 式の構文
以下に , 式の構文を BNF 表記で示します。
【文法】
< 式 >::= < 式 >'||' < 式 >
論理 OR 式
::= < 式 >' & &' < 式 >
論理 AND 式
::= < 式 >'|' < 式 >
ビット OR 式
::= < 式 >'^' < 式 >
ビット XOR 式
::= < 式 >' &' < 式 >
ビット AND 式
::= < 式 >{'=='|'!='} < 式 >
等価式
::= < 式 >{' <'|' <='|' >'|' >='} < 式 >
関係式
::= < 式 >{' < <'|' > >'} < 式 >
シフト式
::= < 式 >{'+'|'-'} < 式 >
加法式
::= < 式 >{'*'|'/'|'%'} < 式 >
乗法式
::={'!'|'~'|'+'|'-'|'SIZEOF'} < 式 >
単項式
::='(' < 式 >')'
括弧式
::= < 項 >
< 項 >::={ 数値定数 | 文字定数 | シンボル | ロケーションカウンタ }
<注意事項>
式は整数式のことであり , 浮動小数点定数の式はサポートしていません。
September 1, 2014, CM81-00208-5
119
Su pp or t
So ft
Manu al
■ 式の種類
式はアセンブル時に計算されますが , 相対シンボル , 外部参照シンボル , セクションシ
ンボルは項として残りリンカで処理されます。したがって , 相対シンボル , 外部参照シ
ンボル , セクションシンボルを含む式については , リロケーション情報が生成され式処
理をリンカへ渡します。
式は次のように分類されます。
● 絶対式
• 数値定数 , 文字定数 , 絶対値を持つシンボルのみで構成される式
• 前方参照シンボルを含まない式
• サイズ演算子を含まない式
● 単純相対式
• 相対値を 1 つしか含まない式
• 前方参照シンボルを含まない式
• サイズ演算子を含まない式
● 複合相対式
• 2 つ以上の相対値を含む式
• 外部参照値を含む式
• セクション値を含む式
• 前方参照シンボルを含む式
• サイズ演算子を含む式
単に相対式という場合は , 通常 , 複合相対式を指します。
■ 式の演算精度について
式の演算は , 32 ビットで行っております。したがって , 32 ビットを超える演算は保証
しておりません。注意してください ( エラーにはなりません )。
120
CM81-00208-5, September 1, 2014
Support
7.11.1
Soft
Ma nual
項
項は , 絶対値 , 相対値 , 外部参照値 , セクション値のいずれかを表し , 式で使用でき
ます。
また , 項にはビットアドレス , アドレス規定子を付けることができます。
■ 項の種類
項は次の種類があります。
• 数値定数
• 文字定数
• シンボル ( 絶対 , 相対 , 外部参照 , セクション )
• ロケーションカウンタ ($)
これらの項は , さらに絶対値 , 相対値 , 外部参照値 , セクション値のいずれかの値を持
ちます。
また , これらの項には , ビットアドレス , アドレス規定子を付けることができます。
■ 絶対値
絶対値となる項を次に示します。
• 数値定数
• 文字定数
• .EQU 命令で定義したシンボル
• 絶対セクション内のアドレスを表すシンボル
• 絶対セクション内のロケーションカウンタ
• 絶対セクションのセクションシンボル
• ダミーセクションのサイズを算出するサイズ演算子
■ 相対値
相対値はリンカで解決されるためリロケーション情報を生成します。
相対値となる項を次に示します。
• 相対セクション内のアドレスを表すシンボル
• 相対セクション内のロケーションカウンタ
• ダミーセクション以外のセクションサイズを算出するサイズ演算子
■ 外部参照値
外部参照値はリンカで解決されるためリロケーション情報を生成します。
外部参照となる項を次に示します。
• 外部参照シンボル
September 1, 2014, CM81-00208-5
121
Su pp or t
So ft
Manu al
■ セクション値
セクション値はセクション先頭のアドレスを持ちます。
セクション値はリンカで解決されるためリロケーション情報を生成します。
セクション値は相対セクションのセクションシンボルのみです。
絶対セクションのセクションシンボルは絶対値になります。
■ ビットアドレス
ビットアドレスは , .BIT や .RES.I の命令で定義されるシンボルのほかに , 以下の特殊
な記述方法があります。
【記述形式 1】
: ビットアドレス
ビットアドレスは , メモリ領域にビット単位のロケーションを割り付けたもので
す。
【記述形式 2】
アドレス : ビットポジション
ビットポジションは , 8 以上の数値を指定できます。この場合 , 8 で割った値をアド
レスに加算し , その余りをビットポジションとします。
■ アドレス規定子
オペランドにアドレス規定子を記述できます。
【記述形式】
アドレス規定子 : アドレス
アドレス規定子:{D|E|X}
D:
ダイレクトアドレス指定
E:
エクステンドアドレス指定
X:
拡張ダイレクトアドレス指定
アドレス :
式
アドレス規定子によりオペランドに指定するアドレスが変わります。
- ダイレクトアドレス指定 : アドレスの下位 8 ビットを指定します。
- エクステンドアドレス指定 : 16 ビットアドレスを指定します。
- 拡張ダイレクトアドレス指定 : 式 "( アドレス & 0x007F) + 0x0080" の演算結果の
下位 8 ビットを指定します。この指定は F2MC-8FX ファミリでのみ意味を持ちま
す。
122
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
【制限事項 1】
機械命令オペランドが , ダイレクトアドレス指定 , エクステンドアドレス指定 , また
は拡張ダイレクトアドレス指定のいずれかを指定可能な場合 , オペランドに指定さ
れたシンボルが以下の条件の場合には , アドレス規定子の指定は無視され , 必ずエ
クステンドアドレス指定となります。
- 前方参照シンボルの場合 ( ただし , 外部参照シンボルは除きます )
- セクション外で外部参照宣言されたシンボルの場合
セクション外で外部参照宣言されたシンボルとは , ソースプログラムの先頭から ,
最初に .section 擬似命令が現れるまでの間に .import または .global 擬似命令で外部参
照宣言されたシンボルです。
【制限事項 2】
拡張ダイレクトアドレス指定は , F2MC-8FX ファミリでのみ意味を持つ機能ですが ,
F2MC-8L ファミリで指定してもアセンブラはエラーを検出しませんので , ご注意く
ださい。
【補足 1】
fasm896s はアドレッシングモードを以下のように自動選択します。
表 7.11-1 アドレッシングモードの自動選択
記述形式
即値
シンボル
条件
アドレッシングモード
0x0000 ~ 0x00FF
ダイレクトアドレッシング
0x0100 ~ 0xFFFF
エクステンドアドレッシング
DIR 属性セクションで定義・宣言
ダイレクトアドレッシング
DIR 属性セクション以外で定義・宣言
エクステンドアドレッシング
このため , F2MC-8FX ファミリ用アセンブラソースをアセンブルする際に , 拡張ダ
イレクトアクセス領域バンクが 0 以外の場合 , 0x0080 番地~ 0x00FF 番地を正しく
アクセスできません。このような場合 , アドレス規定子 "E" を用いてエクステンド
アドレッシングを指定してください ( 例 1, 例 2 を参照してください )。
【例 1】
SETDB
#1
/* ダイレクトバンクポインタ =1 */
MOV
A, 0x80
/* ダイレクトアドレスで
*/
/* 0x0100 番地をアクセスします */
MOV
A, E:0x80
/* エクステンドアドレス指定で
*/
/* 0x0080 番地をアクセスします */
September 1, 2014, CM81-00208-5
123
Su pp or t
So ft
Manu al
【例 2】シンボル SYM が DIR セクション属性かつ 0x80 番地の場合
SETDB
#1
/* ダイレクトバンクポインタ =1 */
MOV
A, SYM
/* ダイレクトアドレスで
*/
/* 0x0100 番地をアクセスします */
MOV
/* エクステンドアドレス指定で
A, E:SYM
*/
/* 0x0080 番地をアクセスします */
【補足 2】
拡張ダイレクトアドレスは , ダイレクトバンクポインタが指定されている場合のア
ドレス指定です。ダイレクトバンクポインタと拡張ダイレクトアドレスとマッピン
グ領域の関係は以下のとおりです。ダイレクトバンクポインタが 0 以外の領域に割
り付けられているシンボルを使って , 拡張ダイレクトアドレス指定でアクセスする
場合 , 例 3 のようにします。
表 7.11-2 ダイレクトバンクポインタと拡張ダイレクトアドレスとマッピング領域の
関係
ダイレクトバンク
ポインタ
拡張ダイレクトアドレス
マッピング領域
(16 ビットアドレス )
0
0x0080 ~ 0x00FF
1
0x0100 ~ 0x017F
2
0x0180 ~ 0x01FF
3
0x0080 ~ 0x00FF
0x0200 ~ 0x027F
4
0x0280 ~ 0x02FF
5
0x0300 ~ 0x037F
6
0x0380 ~ 0x03FF
7
0x0400 ~ 0x047F
【例 3】シンボル SYM が 0x0100 番地のとき
SETDB
#1
/* ダイレクトバンクポインタ =1
*/
MOV
A, D:SYM
/* ダイレクトアドレス指定で
*/
/* 0x0000 番地をアクセスします
*/
/* エクステンドアドレス指定で
*/
/* 0x0100 番地をアクセスします
*/
/* 拡張ダイレクトアドレス指定で
*/
MOV
MOV
A, E:SYM
A, X:SYM
/* 0x0100 番地をアクセスします
*/
/* ( コード上は 0x80 番地アクセス ) */
124
CM81-00208-5, September 1, 2014
Support
7.11.2
Soft
Ma nual
オペランド値の範囲
式が記述できるオペランドは , その種類によって記述可能な値の範囲が決まってい
ます。
アセンブラは , オペランドの演算結果が記述可能な値の範囲外であったとき ,
WARNING または ERROR を表示します。
出力されるメッセージが WARNING か ERROR かは , -OVFW, -XOVFW オプション
の指定によって変わります (「4.8.12 -OVFW, -XOVFW」参照 )。
ここでは , オペランド値の範囲について説明します。
■ オペランド値の範囲
オペランド値の範囲例を表 7.11-3 に示します。
オペランドの計算結果が , 表 7.11-3 の範囲外になるとアセンブラは WARNING または
ERROR を表示します。
各オペランドの詳細に関しては , ハードウェアマニュアルを参照してください。
表 7.11-3 オペランド値の範囲例
オペランドの種類
値の範囲
ダイレクトアドレス (dir)
0 ~ 255
オフセット (off)
-128 ~ 127
エクステンドアドレス (ext)
0 ~ 65535
ベクタテーブル番号 (#vct)
0~7
イミディエートデータ (#d8)
-128 ~ 255
イミディエートデータ (#d16)
-32768 ~ 65535
ビットダイレクトアドレス (dir: b)
di: 0 ~ 255/b: 0 ~ 7
分岐相対アドレス (rel)
-128 ~ 127
September 1, 2014, CM81-00208-5
125
Su pp or t
7.11.3
So ft
Manu al
演算子
演算子は , 式の中で使用されます。
論理値は値が 0 以外の場合は真 , 0 の場合は偽として扱います。
演算子には , 次のものがあります。
• 論理演算子
: || & & !
• ビット演算子 : | & ^ ~
• 関係演算子
: == != < <= > >=
• 算術演算子
: + - * / % > > < < +( 単項 ) -( 単項 )
• 名前から値を算出する演算子 : BITADR BITPOS SIZEOF
■ 論理値
論理値は値が 0 以外の場合は真 , 0 の場合は偽として扱います。
■ 論理演算子
論理演算子には , 次のものがあります。
• 式 || 式
: 論理値の OR 演算
• 式&&式
: 論理値の AND 演算
• !式
: 論理値の反転
■ ビット演算子
ビット演算子には , 次のものがあります。
• 式|式
: ビットの OR 演算
• 式&式
: ビットの AND 演算
• 式^式
: ビットの XOR 演算 ( 排他的論理和演算 )
• ~式
: ビットの反転
■ 関係演算子
関係演算子は , 評価が真であれば 1, 偽であれば 0 となります。
関係演算子には , 次のものがあります。
126
• 式 == 式
: 等しい
• 式 != 式
: 等しくない
• 式<式
: 小さい
• 式 <= 式
: 小さいか等しい
• 式>式
: 大きい
• 式 >= 式
: 大きいか等しい
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ 算術演算子
算術演算子には , 次のものがあります。
• 式+式
: 加算
• 式-式
: 減算
• 式*式
: 乗算
• 式/式
: 除算
• 式%式
: 剰余算
• 式<<式
: 左シフト
• 式>>式
: 右シフト
• +式
:正
• -式
:負
■ 名前から値を算出する演算子
名前から値を算出する演算子には , 次のものがあります。
詳細は , 「7.11.4 名前から算出される値」を参照してください。
• BITADR シンボル
: ビットシンボルアドレス演算子
• BITPOS シンボル
: ビットポジション番号演算子
• SIZEOF セクション
: サイズ演算子
September 1, 2014, CM81-00208-5
127
Su pp or t
7.11.4
So ft
Manu al
名前から算出される値
アドレッシングやプログラミングで必要となる値を参照するために , 次の特殊な演
算子を用意しています。
• BITADR : ビットシンボルアドレス演算子
• BITPOS : ビットポジション番号演算子
• SIZEOF : サイズ演算子
■ ビットシンボルアドレス演算子 (BITADR 演算子 )
【記述形式】
BITADR ビットシンボル
BITADR ( ビットシンボル )
ビットシンボルは括弧で囲むことができます。
【説明】
ビットシンボルアドレス演算子は , ビットシンボルのアドレスを算出します。
■ ビットポジション番号演算子 (BITPOS 演算子 )
【記述形式】
BITPOS ビットシンボル
BITPOS ( ビットシンボル )
ビットシンボルは括弧で囲むことができます。
【説明】
ビットポジション番号演算子は , ビットシンボルのビットポジション番号を算出し
ます。
128
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ セクションサイズ抽出 (SIZEOF 演算子 )
【記述形式】
SIZEOF セクションシンボル
SIZEOF ( セクションシンボル )
セクションシンボルは括弧で囲むことができます。
【説明】
サイズ演算子は , セクションのサイズを算出する演算子です。
したがって , SIZEOF の演算対象となる項は , セクションシンボルのみです。
セクションのサイズは , リンカで算出されるのでサイズ演算子を含む式は相対式と
なります。
ただし , ダミーセクションの場合は , オブジェクトファイルにコードが出力されな
いため , アセンブラでサイズを算出することになります。
この場合 , アセンブラはサイズ演算子を前方参照シンボルが記述された場合と同じ
扱いにして処理を行います。
理由は , セクションが分割記述可能なため , アセンブラ内部の処理 PASS1 が終了す
るまでサイズが分からないためです。
すなわち , サイズ演算子が記述された式は , 値が結果的に絶対値となっても式の種
類は , 相対式と同じ扱いとなります。
【例】
.SECTION
ABC, DATA, ALIGN=1
:
.SECTION
PROGRAM, CODE, ALIGN=1
MOVW
A, #SIZEOF(ABC)
MOVW
A, #SIZEOF(DMY)
:
.SECTION
DATA, DATA, ALIGN=1
.DATA
SIZEOF(PROGRAM), SIZEOF(DMY)
:
.SECTION
DMY, DATA, ALIGN=1
:
September 1, 2014, CM81-00208-5
129
Su pp or t
So ft
Manu al
■ サイズ演算子を含む式が記述できない擬似命令
サイズ演算子を含む式は , 次の擬似命令には記述できません。
機械命令に対しては , すべての式で有効です ( 記述できます )。
• .END 命令の開始アドレス
• .SECTION 命令の境界値と開始アドレス
• .ALIGN 命令の境界値
• .ORG 命令の式
• .SKIP 命令の式
• .EQU 命令の式
• .DATAB 命令の式 1
• .FDATAB 命令の式 1
• .RES 命令の式
• .FRES 命令の式
• .SDATAB 命令の式
• .FORM 命令の行数と桁数
• .SPACE 命令の空白行数
■ ほかのモジュールにあるセクションサイズを得るには
ほかのモジュールにあるセクションのサイズを得るには , 目的のセクションを空セク
ションとして作ります。そして , サイズ演算子を用いることでセクションサイズを算出
できます。
【例】
ほかのモジュールにあるセクション 'S' のサイズを得る場合
130
.SECTION
S, STACK, ALIGN=1 /* セクション 'S' の空セクションを作る */
.SECTION
P, CODE, ALIGN=1
MOVW
A, #SIZEOF(S)
/* セクション 'S' のサイズを得る */
CM81-00208-5, September 1, 2014
Support
7.11.5
Soft
Ma nual
演算子の優先順位
演算子の優先順位は , C 言語に合わせてあります。
■ 演算子の優先順位
表 7.11-4 に演算子の優先順位を示します。
表 7.11-4 演算子の優先順位
優先順位
演算子
結合性
適用される式
1
()
左
括弧
2
!~ + BITADR BITPOS
SIZEOF
右
単項式
3
*/ %
左
乗法式
4
+-
左
加法式
5
<< >>
左
シフト式
6
< <= > >=
左
関係式
7
==!=
左
等価式
8
&
左
ビット AND 式
9
^
左
ビット XOR 式
10
|
左
ビット OR 式
11
&&
左
論理 AND 式
12
||
左
論理 OR 式
【例】
.IMPORT
imp
.DATA
10 + 2 * 3
data_h:
.DATA
imp
> > 8
data_1:
.DATA
imp
& 0xff
September 1, 2014, CM81-00208-5
& 0xff
131
Su pp or t
So ft
Manu al
7.12 コメント
コメントには , 行コメントと範囲コメントがあります。
行コメントは , セミコロン (;) または 2 個のスラッシュ (//) で始まります。
C 言語風に , /* ~ */ で囲ってコメントを記述することもできます。
■ コメント
【記述形式】
/* 範囲コメント */
// 行コメント
; 行コメント
【説明】
コメントは , 任意のカラムから始めることができます。
コメントには , 行コメントと範囲コメントがあります。
行コメントは , セミコロン (;) または 2 個のスラッシュ (//) で始まります。
C 言語風に , /* ~ */ で囲ってコメントを記述することもできます。
これを範囲コメントといいます。
範囲コメントは , 好きな位置にコメントを記述できます。
【例】
/*---------範囲コメント
------------*/
; 行コメント
// 行コメント
.SECTION D1, DATA, ALIGN=2
/* 範囲コメント */ .DATA
// 行コメント
1
.DATA /* 範囲コメント */ 0xff ; 行コメント
132
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第8章
セクション
メモリ空間を分割し , それぞれのメモリ空間に意味
を付けたのがセクションです。
セクションは , メモリ空間を用途ごとに区分し , 同
じセクション名を持つものどうしを 1 つのグルー
プとして扱います。
セクションは , リンク時に同じセクション名を持つ
ものどうしを集めて結合されます。このように , セ
クションを用いることでメモリ空間を論理的に扱
うことができます。
この章では , セクションの書き方について説明しま
す。
8.1 セクションの記述形式
8.2 セクションのタイプについて
8.3 セクションタイプと属性
8.4 セクションの配置形式について
8.5 セクションの結合方法
8.6 セクションの分割記述
8.7 ROM 化セクションの書き方
September 1, 2014, CM81-00208-5
133
Su pp or t
8.1
So ft
Manu al
セクションの記述形式
.SECTION 命令でセクションの開始を宣言します。
セクションはいくつも分割できます。
セクションタイプによりセクションの種類が決まります。
セクション配置形式によりセクションの配置形式が決まります。
■ セクションの記述形式
【記述形式】
.SECTION セクション名 [, セクションタイプ ][, セクション配置形式 ]
:
テキスト
:
セクションタイプ
:{CODE|DATA|CONST|COMMON|STACK|DUMMY|
IO|IOCOMMON|DIR|DIRCONST|DIRCOMMON}
セクション配置形式
: {ALIGN= 境界値 |LOCATE= 開始アドレス }
境界値
: 式 ( 絶対式 )
開始アドレス
: 式 ( 絶対式 )
【説明】
.SECTION 命令でセクションの開始を宣言します。
最初の .SECTION 命令までの間には , オブジェクトコードを生成する命令やロケー
ションカウンタを更新する命令を記述できません。
セクションはいくつにも分割できます。
詳細は , 「8.6 セクションの分割記述」を参照してください。
■ セクションタイプ
セクションタイプを指定することで , セクションの属性が決まります。
詳細は , 「8.2 セクションのタイプについて」を参照してください。
セクションタイプは , 次の 11 種類があります。
セクションタイプを省略した場合は , CODE となります。
134
• CODE
: コードセクションになります。
• DATA
: データセクションになります。
• CONST
: 初期値付きデータセクションになります。
• COMMON
: 共有セクションになります
• STACK
: スタックセクションになります。
• DUMMY
: ダミーセクションになります。
• IO
:I/O セクションになります。
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
• IOCOMMON
: 共有 I/O セクションになります。
• DIR
: ダイレクトセクションになります。
• DIRCONST
: 初期値付きダイレクトセクションになります。
• DIRCOMMON : 共有ダイレクトセクションになります。
■ セクション配置形式
セクションの配置方法が決まります。
● ALIGN: 相対セクションとなります。
メモリ上での配置アドレスはリンカで決定されます。
境界値で指定されたメモリ境界に配置されます。
● LOCATE: 絶対セクションとなります。
指定された開始アドレスから配置されます。
セクション配置形式を省略した場合は ALIGN=1 となります。
詳細は , 「8.4 セクションの配置形式について」を参照してください。
【例】
.SECTION PROG, CODE, ALIGN=2
/* セクション名
: PROG
*/
/* セクションタイプ
: コードセクション
*/
/* セクション属性
: 相対セクション ( 境界値 2)
*/
:
.SECTION VAL, DATA, LOCATE=0x1000
/* セクション名
: VAL
*/
/* セクションタイプ
: データセクション
*/
/* セクション属性
: 0x1000 番地から配置される絶対セクション
*/
:
September 1, 2014, CM81-00208-5
135
Su pp or t
8.2
So ft
Manu al
セクションのタイプについて
セクションのタイプは , セクションにどのようなデータを置くかで決めます。
■ セクションのタイプについて
セクションのタイプは , セクションにどのようなデータを置くかで決めます。
次にセクションタイプに対して一般的に使われるデータの種類を示します。
● コードセクション (CODE 指定 )
プログラムコードを置きます。
通常 , 機械命令が記述されます。
【例】
.SECTION PROG, CODE, ALIGN=1
start_program:
MOVW
A, #0
PUSHW
A
CALL
_func
● データセクション (DATA 指定 )
初期値のないデータ領域を置きます。
通常 , .RES 命令 , .FRES 命令が記述されます。
【例】
.SECTION VAL, DATA, ALIGN=1
v1:
.RES
1
v2:
.RES.H 2
また , データセクションには , 変更可能な初期値データを置く場合にも使用します。
詳細は , 「8.7 ROM 化セクションの書き方」を参照してください。
【例】
.SECTION INIT, DATA, ALIGN=1
ptbl:
.DATA 10, 11, 12 /* 変更可能なデータ値 */
● 初期値付きデータセクション (CONST 指定 )
変更しない初期値データを置きます。
主に ROM 内に配置するデータ値を記述する場合に指定します。
【例】
.SECTION PARAM, CONST, ALIGN=1
param1:
.DATA 10
param2:
.DATA -1
● 共有セクション (COMMON 指定 )
共有変数や共通領域を確保したい場合に指定します。
136
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
リンカで共有結合されます。
【例】
.SECTION COMval, COMMON, ALIGN=1
val:
.DATA
500
tbl:
.DATAB.B 10, 0xff
● スタックセクション (STACK 指定 )
スタック領域を確保するセクションです。
通常は , .RES 命令で領域を確保します。
【例】
.SECTION STACKAREA, STACK, ALIGN=1
.RES.B 0x1000 /* 4K バイト */
● ダミーセクション (DUMMY 指定 )
このセクションはオブジェクトコードには出力されません。
したがって , ダミーセクション内で意味を持つのは , 定義されたシンボルやダミーセク
ションのサイズを算出する場合のみとなります。
【例】 IO 領域をダミーセクションとして使用する場合】
ヘッダファイル iodef.h
.SECTION IO_MAP, DUMMY, LOCATE=0x100
iodata1:.RES.H 1
iodata2:.RES.H 1
iodata3:.RES.H 1
ソースファイル a.asm
#include "iodef.h" /* IO 定義ファイルを読み込む */
.SECTION P, CODE, ALIGN=2
:
MOVW
A, @iodata2
/* IO から値を読む */
:
ソースファイル b.asm
#include "iodef.h" /* IO 定義ファイルを読み込む */
.SECTION P, CODE, ALIGN=2
:
MOVW
@iodata2, A
/* IO へ値を書く */
:
September 1, 2014, CM81-00208-5
137
Su pp or t
So ft
Manu al
● I/O セクション (IO 指定 )
このセクションは , 各種の入出力ポートが配置されている領域にデータを配置するこ
とを指定します。
● 共有 I/O セクション (IOCOMMON 指定 )
このセクションは , 各種の入出力ポートが配置されている領域にデータを配置するこ
とを指定します。
このセクションは , リンカで共有結合されます。
● ダイレクトセクション (DIR 指定 )
このセクションは , ダイレクトアクセス領域にデータを配置することを指定します。
● 初期値付きダイレクトセクション (DIRCONST 指定 )
このセクションは , ダイレクトアクセス領域に変更しない初期値データを配置するこ
とを指定します。
● 共有ダイレクトセクション (DIRCOMMON 指定 )
このセクションは , ダイレクトアクセス領域にデータを配置することを指定します。
このセクションは , リンカで共有結合されます。
138
CM81-00208-5, September 1, 2014
Support
8.3
Soft
Ma nual
セクションタイプと属性
セクションはオブジェクトへ出力されるとき , セクション情報として内容種別 , 結合
種別 , リード種別 , ライト種別 , 実行種別という 5 つの属性を設定します。
これらの属性は , リンク時に , リンカでチェックされます。
■ セクションタイプと属性
セクションはオブジェクトへ出力されるとき , セクション情報として内容種別 , 結合種
別 , リード種別 , ライト種別 , 実行種別という 5 つの属性を設定します。
これらの属性は , リンク時にリンカでチェックされます。
表 8.3-1 にセクションタイプに対する各属性を示します。
表 8.3-1 セクションタイプに対する各属性
セクションタイプ
内容種別
結合種別
リード
ライト
実行
CODE
コード
連結結合
○
×
○
DATA
データ
連結結合
○
○
×
CONST
コンスタント
連結結合
○
×
×
COMMON
データ
共有結合
○
○
×
STACK
スタック
連結結合
○
○
×
IO
データ (I/O)
連結結合
○
○
×
IOCOMMON
データ (I/O)
共有結合
○
○
×
DIR
ダイレクト
連結結合
○
○
×
DIRCONST
ダイレクト
連結結合
○
×
×
DIRCOMMON
ダイレクト
共有結合
○
○
×
○…可 ×…不可
<注意事項>
ダミーセクションはオブジェクトには出力されませんので属性は持っていません。
September 1, 2014, CM81-00208-5
139
Su pp or t
8.4
So ft
Manu al
セクションの配置形式について
セクションの配置形式は次の 2 種類があります。
• 相対セクション
• 絶対セクション
相対セクションはリンカで配置アドレスが決定されます。
絶対セクションはアセンブラで配置アドレスを指定できます。
■ セクションの配置形式について
セクションの配置形式は次の 2 種類があります。
● 相対セクション (ALIGN 指定 )
相対セクションはリンカで配置アドレスが決定されます。したがって , 相対セクション
内のアドレスを持つシンボルはリンクされるまで値が確定しません。このようなシン
ボルを相対シンボルといいます。
相対セクションは , どこに配置されるかわからない場合に使います。
ほとんどのプログラムは相対セクションで記述して , リンカで配置アドレスを決める
やり方が一般的です。
リンカは , 相対セクションを配置するとき , ALIGN で指定された境界値のメモリ空間
に配置します。
【例】
.SECTION
PROG, CODE, ALIGN=1
_main:
PUSHW
IX
MOVW
A, SP
MOVW
IX, A
PUSHW
A
PUSHW
A
● 絶対セクション (LOCATE 指定 )
絶対セクションはアセンブラで配置アドレスを指定できます。
リンカは , 絶対セクションを LOCATE で指定された開始アドレスからメモリ空間に配
置します。したがって , 絶対セクション内のアドレスを持つシンボルはアドレスが決定
されているので値が確定しています。このようなシンボルを絶対シンボルといいます。
絶対セクションは , EIT ベクタテーブルや IO 領域の定義などに利用できます。
絶対セクションの指定では , 以下の記述ができます。
LOCATE= アドレス
【例】
.SECTION
140
IO, DATA, LOCATE=0x0000
CM81-00208-5, September 1, 2014
Support
timer_cmd:
Soft
/* タイマコマンドアドレス */
.RES
timer_data:
1
/* タイマデータアドレス */
.RES
September 1, 2014, CM81-00208-5
Ma nual
1
141
Su pp or t
8.5
So ft
Manu al
セクションの結合方法
セクションの結合処理は , リンカで行います。
セクションの結合方法は , 連結結合と共有結合の 2 種類があります。
連結結合は , 同じ名前を持つセクションを連続したメモリ空間に結合します。
共有結合は , 同じ名前を持つセクションどうしのメモリ空間を共有します。
■ セクションの結合方法
セクションの結合処理は , リンカで行います。
セクションの結合方法は , 連結結合と共有結合の 2 種類があります。
結合方法は , セクションのセクションタイプで決まります。
表 8.5-1 にセクションタイプと結合方法を示します。
表 8.5-1 セクションタイプと結合方法
セクションタイプ
結合方法
CODE
DATA
CONST
STACK
IO
DIR
連結結合
COMMON
IOCOMMON
DIRCOMMON
共有結合
■ 連結結合
複数のソースプログラムに含まれる同じ名前を持つセクションは , 連続したメモリ空
間に結合されます。ただし , セクションタイプ , セクション配置形式ともに同じ指定で
なければなりません。
142
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
【例】
図 8.5-1 連結結合の例
ソースプログラム
s1.asm
.SECTION A ,CODE,ALIGN=2
2バイト境界
:
:
ソースプログラム
s2.asm
SECTION A ,CODE,ALIGN=2
:
:
s3.asm
ソースプログラム
SECTION A ,CODE,ALIGN=2
:
↑下位アドレス
ソースプログラム
s1.asm
セクションA
ソースプログラム
s2.asm
セクションA
ソースプログラム
s3.asm
セクションA
↓上位アドレス
:
■ 共有結合
複数のソースプログラムに含まれる同じ名前を持つセクションは , 同じメモリ空間を
共有します。
領域の大きさは , もっとも大きなセクションのサイズで確保されます。
【例】
図 8.5-2 共有結合の例
s1.asm
ソースプログラム
.SECTION A,DATA,COMMON
↑下位アドレス
:
:
ソースプログラム
s2.asm
.SECTION A,DATA,COMMON
:
:
ソースプログラム s1.asm
セクションA 最終アドレス
ソースプログラム s2.asm
セクションA 最終アドレス
September 1, 2014, CM81-00208-5
↓上位アドレス
143
Su pp or t
8.6
So ft
Manu al
セクションの分割記述
セクションは , 1 つのソースプログラムの中に同じセクション名を持つ .SECTION
命令を複数個書くことができます。
その場合 , 同じ名前のセクションは連続した 1 つのセクションとして認識されます。
■ セクションの分割記述
セクションは , 1 つのソースプログラムの中に同じセクション名を持つ .SECTION 命令
を複数個書くことができます。
その場合 , 同じ名前のセクションは連続した 1 つのセクションとして認識されます。
最初の .SECTION 命令では , そのセクションの開始を宣言し , 2 つめからのセクション
は最初のセクションの継続を表します。
セクションが継続する場合 , ロケーションカウンタは直前の同じ名前のセクションの
値が継続されます。
分割して書かれた .SECTION 命令には , 異なる指定 ( セクションタイプとセクション配
置形式 ) をすることはできません。
ただし , セクション名が同じであり , 属性が省略された場合には , 以前に定義された指
定を引き継ぎます。
【例】
.SECTION
P, CODE, ALIGN=2
テキスト 1
.SECTION
D, DATA, ALIGN=4
テキスト 2
.SECTION
P, CODE
テキスト 3
.SECTION
D
テキスト 4
上記のソースプログラムは , 下のソースプログラムと同様に解釈されます。
.SECTION
P, CODE, ALIGN=2
テキスト 1
テキスト 3
.SECTION
D, DATA, ALIGN=4
テキスト 2
テキスト 4
144
CM81-00208-5, September 1, 2014
Support
8.7
Soft
Ma nual
ROM 化セクションの書き方
ROM 化するプログラムまたはデータ値の書き方について説明します。
プログラムコードと変更しない初期値データは , そのまま ROM 化しても問題ありま
せんが , 変更可能な初期値データは , リンカの -sc オプションで初期値データを
ROM に置いておき実行時に RAM に転送して使用することを指定する必要がありま
す。
■ ROM 化セクションの書き方
ROM 化するプログラムまたはデータ値は , 次のように分類できます。
1. プログラムコード (CODE セクション )
2. 変更しない初期値データ (CONST セクション )
3. 変更可能な初期値データ (DATA セクション )
1. と 2. は , そのまま ROM 化しても問題ありませんが , 3. は変更可能な値であるため ,
ROM 化したデータを RAM 領域に転送する必要があります。したがって , リンカで初
期値を ROM 領域へ配置し , 実行時に RAM 領域に転送して使用する指定が必要となり
ます。
このようなセクションの名前は , わかりやすいものに決めて置くことをお薦めいたし
ます。
C コンパイラでは , 変更可能な初期値データのセクション名に "INIT" を使っています
ので , アセンブラでも "INIT" を使うとよいでしょう。
■ 初期値データの転送
変更可能な初期値データを ROM から RAM へ転送する方法を説明します。
リンカで , -sc オプションを用いて , ROM-RAM 転送セクション指定を行うと , リンカ
は指定されたセクション名に対して , 次のシンボルを自動的に生成します。
• _ROM_ セクション名
• _RAM_ セクション名
それぞれのシンボルは , ROM 領域と RAM 領域の先頭アドレスを示しています。
ROM 領域 (0xE100 ~ 0xE1FF), RAM 領域 (0x0100 ~ 0x01FF) を指定し , INIT セクショ
ンを ROM-RAM 転送セクションの指定をした場合の例を次に示します。
flnk896s -ro ROM=0xE100/0xE1FF -ra RAM=0x0100/0x01ff
-sc @INIT=ROM, INIT=RAM sample.obj
この場合, _ROM_INIT, _RAM_INITが生成され, _ROM_INITには0xE100が, _RAM_INIT
には 0x0100 が設定されます。
詳細は , 『SOFTUNE リンケージキットマニュアル』を参照してください。
これらのシンボルを用いて , 次の例に示すように ROM-RAM 転送プログラムを作成し ,
スタートアップルーチンに組み込みます。
September 1, 2014, CM81-00208-5
145
Su pp or t
So ft
Manu al
【例】
.IMPORT
_ROM_INIT
/* ROM 側の INIT セクション先頭アドレス */
.IMPORT
_RAM_INIT
/* RAM 側の INIT セクション先頭アドレス */
INIT, DATA, ALIGN=4 /* 変更可能初期値データセクション
.SECTION
ptbl:
.DATA
10, 11, 12
*/
/* ptbl は RAM 側のアドレスを示す
*/
/* 初期値データは ROM 側に配置される
*/
/* ROM-RAM 転送プログラム
*/
:
.SECTION CODE, CODE, ALIGN=2
init_copy:
MOVW
IX, #_ROM_INIT
/* 転送元 (ROM) アドレス
*/
MOVW
EP, #_RAM_INIT
/* 転送先 (RAM) アドレス
*/
MOVW
A, #SIZEOF(INIT)
/* INIT セクションのサイズ
*/
BZ
init_copy_end
/* サイズが 0 なら終了
*/
A, @IX+0
/* 転送元データを読み込む
*/
init_copy_loop:
MOV
MOV
@EP, A
/* 転送先にデータを書き込む
*/
INCW
EP
/* 転送先アドレスを 1 進める
*/
INCW
IX
/* 転送元アドレスを 1 進める
*/
XCH
A, T
/* サイズを A レジスタに読み込む
*/
DECW
A
/* サイズを 1 減らす
*/
BNZ
init_copy_loop
/* サイズが 0 になるまで繰り返す
*/
init_copy_end:
146
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第9章
機械命令
この章では , 機械命令の記述形式 , 記述上の規則に
ついて説明します。
機械命令およびアドレッシングモードの詳細は , 各
CPU の『インストラクションマニュアル』または
『プログラミングマニュアル』を参照してください。
9.1 機械命令の記述形式
9.2 オペランドフィールドの記述形式
September 1, 2014, CM81-00208-5
147
Su pp or t
9.1
So ft
Manu al
機械命令の記述形式
機械命令の一般的な記述形式と規則について説明します。
■ 機械命令の記述形式
機械命令は , プログラムの実行時に CPU により解釈され実行する命令です。
機械命令の詳細は , 各 CPU の『インストラクションマニュアル』または『プログラミ
ングマニュアル』を参照してください。
機械命令を記述する一般的な記述形式は次のとおりです。
【記述形式】
[ シンボル ]
オペレーション
[ オペランド [, オペランド ]…]
オペレーション : 命令ニーモニック
オペランド
: アドレッシングモード
【説明】
シンボルフィールドにシンボルを書いた場合 , そのシンボルに対して現在のアドレ
スが割り付けられます。
オペレーションフィールドには , 命令ニーモニックを記述します。
オペランドフィールドには , その機械命令に必要なオペランドを記述します。複数
のオペランドを記述する場合は , カンマ (, ) でオペランドを区切ります。
各オペランドには , アドレッシングモードを記述します。
【例】
148
PUSHW
IX
MOVW
A, SP
MOVW
IX, A
PUSHW
A
CALL
_proc0
CM81-00208-5, September 1, 2014
Support
9.2
Soft
Ma nual
オペランドフィールドの記述形式
オペランドフィールドの記述形式について説明します。
■ オペランドフィールドの記述形式
【記述形式】
[ オペランド [, オペランド ]…]
オペランド : アドレッシングモード
【説明】
機械命令のオペランドは各機械命令に記述できるアドレッシングモードが決まっ
ています。
複数のオペランドを持つ機械命令は , カンマ (, ) でオペランドを区切ります。
各機械命令に記述できるアドレッシングモードおよびアドレッシングモードの詳
細は , 各 CPU の『インストラクションマニュアル』または『プログラミングマニュ
アル』参照してください。
■ オペランドの順序
オペランドの順序は機械命令ごとに定められていますが原則は次のとおりです。
● 演算系の命令
演算系の命令では , 第 1 オペランドと第 2 オペランドで演算を行い , その結果を第 1 オ
ペランドに格納します。
第 1 オペランド ← 第 1 オペランド .op. 第 2 オペランド
【例】
ADD
A, #5
/* A ← A + 5 */
● 転送系の命令
転送系の命令では , 第 2 オペランドから第 1 オペランドに転送を行います。
第 1 オペランド ← 第 2 オペランド
【例】
MOV
September 1, 2014, CM81-00208-5
A, R5
/* A ← R5 */
149
Su pp or t
150
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第 10 章
アセンブラ擬似命令
アセンブラ擬似命令は , 機械命令とは異なりアセン
ブラ自身に対して指示を与える命令です。
アセンブラ擬似命令は , 次の 8 つに分類されます。
• プログラム構造定義命令
• アドレス制御命令
• プログラム結合命令
• シンボル定義命令
• 領域定義命令
• デバッグ情報出力制御命令
• ライブラリファイル指定命令
• リスト出力制御命令
この章では , アセンブラ擬似命令の各記述形式とそ
の機能について説明します。
10.1 擬似命令で扱う整数定数の範囲
10.2 プログラム構造定義命令
10.3 アドレス制御命令
10.4 プログラム結合命令
10.5 シンボル定義命令
10.6 領域定義命令
10.7 デバッグ情報出力制御命令
10.8 ライブラリファイル指定命令
10.9 リスト出力制御命令
September 1, 2014, CM81-00208-5
151
Su pp or t
So ft
Manu al
10.1 擬似命令で扱う整数定数の範囲
擬似命令で整数定数を指定する場合 , ビット (1 ビット ), バイト (8 ビット ), ハーフ
ワード (16 ビット ), ロングワード (32 ビット ), ワード (16 ビット ) の 5 種類のサイ
ズがあります。
サイズの記述がない場合は , ワード (16 ビット ) になります。
■ 擬似命令で扱う整数定数の範囲
擬似命令で整数定数を指定する場合 , 次の 5 種類のサイズがあります。
• ビット (1 ビット )
• バイト (8 ビット )
• ハーフワード (16 ビット )
• ロングワード (32 ビット )
• ワード (16 ビット )
サイズの記述がない場合は , ワード (16 ビット ) になります。
擬似命令で使うサイズ指定子を表 10.1-1 に示します。
表 10.1-1 サイズ指定子
152
サイズ指定子
データサイズ
I( ビット )
1bit
B( バイト )
8bit(1byte)
H( ハーフ )
16bit(2bytes)
L( ロング )
32bit(4bytes)
W( ワード )
16bit(2bytes)
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
10.2 プログラム構造定義命令
プログラム構造定義命令は , ソースプログラムの終了 , モジュール名の宣言 , セク
ション情報の定義などを行う命令です。
■ プログラム構造定義命令
プログラム構造定義命令には , 次の 3 種類があります。
• .PROGRAM
: モジュール名の宣言
• .END
: ソースプログラムの終了
• .SECTION
: セクションの定義
September 1, 2014, CM81-00208-5
153
Su pp or t
10.2.1
So ft
Manu al
.PROGRAM 命令
モジュール名の指定を行います。
モジュール名は , 名前の規則に従います。
.PROGRAM 命令が省略された場合は , オブジェクトファイルの主ファイル名をモ
ジュール名とします。
■ .PROGRAM 命令
【記述形式】
.PROGRAM
モジュール名
【説明】
モジュール名の指定を行います。
モジュール名は , 名前の規則に従います。
.PROGRAM 命令は , ソースプログラム中 , 1 回限り有効です。
.PROGRAM 命令が省略された場合は , オブジェクトファイルの主ファイル名をモ
ジュール名とします。
オブジェクトファイルの主ファイル名が , 名前規則から外れている場合は警告を出
力し , モジュール名に使用できない文字は , アンダバー (_) に置き換えます。
【例】
.PROGRAM
test_name
■ 起動時オプションとの関係
-name を指定した場合 , -name で指定した名前がモジュール名となります。
154
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
.END 命令
10.2.2
ソースプログラムの終了を示します。
.END 命令は省略できます。その場合 , ソースプログラムの最後までアセンブルされ
ます。
開始アドレスを設定できます。
■ .END 命令
【記述形式】
[ 開始アドレス ]
.END
開始アドレス : 式
【説明】
ソースプログラムの終了を示します。
.END 命令は省略できます。その場合 , ソースプログラムの最後までアセンブルされ
ます。
.END 命令以降にソースがある場合は , 以降のソースはアセンブルされません。
開始アドレスが指定されていると , プログラムの開始アドレスを設定します。
プログラムの開始アドレスは , SOFTUNE Workbench でプログラムをロードすると
きに参照し , プログラムカウンタに値を設定するためのものです。
開始アドレスが省略された場合は , 開始アドレスは設定されません。
開始アドレスは , 絶対式か単純相対式でなければなりません。
開始アドレスは , コードセクション内を示していなければなりません。
【例】
.SECTION PROG, CODE, ALIGN=1
start:
:
.END
September 1, 2014, CM81-00208-5
start
155
Su pp or t
10.2.3
So ft
Manu al
.SECTION 命令
セクションの開始を宣言し , セクションのタイプと配置形式を設定します。
■ .SECTION 命令
【記述形式】
セクション名 [, 指定 [, 指定 ]]
.SECTION
指定
:{ セクションタイプ | セクション配置形式 }
セクションタイプ
:{CODE|DATA|CONST|COMMON|STACK|DUMMY|IO
|IOCOMMON|DIR|DIRCOMMON|DIRCONST}
セクション配置形式
:{ALIGN= 境界値 |LOCATE= 開始アドレス }
境界値
: 式 ( 絶対式 )
開始アドレス
: 式 ( 絶対式 )
【説明】
セクションの開始を宣言し , セクションのタイプと配置形式を設定します。
セクション名は , 名前の規則に従います。
セクションタイプ , セクション配置形式は , それぞれ 1 つのみ指定できます。
セクションタイプが省略された場合は , コードセクションとなります。
セクション配置形式が省略された場合は , ALIGN=1 が設定されます。
■ セクションタイプ
セクションタイプを指定します。
詳細は , 「8.2 セクションのタイプについて」を参照してください。
• CODE
: コードセクションになります。
• DATA
: データセクションになります。
• CONST
: 初期値付きデータセクションになります。
• COMMON
: 共有セクションになります。
• STACK
: スタックセクションになります。
• DUMMY
: ダミーセクションになります。
• IO
: I/O セクションになります。
• IOCOMMON
: 共有 I/O セクションになります。
• DIR
: ダイレクトセクションになります。
• DIRCONST
: 初期値付きダイレクトセクションになります。
• DIRCOMMON : 共有ダイレクトセクションになります。
156
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ セクション配置形式
セクションの配置方法を指定します。
詳細は , 「8.4 セクションの配置形式について」を参照してください。
● ALIGN= 境界値
相対セクションとなります。
リンカで , 指定された境界にセクションが配置されます。
境界値は , 絶対式でなければなりません。
境界値は , 2 のべき乗値でなければなりません。
● LOCATE= 開始アドレス
絶対セクションとなります。
指定された開始アドレスからセクションが配置されます。
開始アドレスは , 絶対式でなければなりません。
【例】
.SECTION
P, CODE, ALIGN=1
:
.SECTION
D, DATA, LOCATE=0x1000
:
.SECTION
C, CONST, LOCATE=0x2000
:
.SECTION
V, COMMON, ALIGN=1
:
September 1, 2014, CM81-00208-5
157
Su pp or t
So ft
Manu al
10.3 アドレス制御命令
アドレス制御命令は , ロケーションカウンタ値の変更を行う命令です。
■ アドレス制御命令
アドレス制御命令には , 次の 3 種類があります。
158
• .ALIGN
: 境界整列
• .ORG
: ロケーションカウンタ値の変更
• .SKIP
: ロケーションカウンタ値のインクリメント
CM81-00208-5, September 1, 2014
Support
10.3.1
Soft
Ma nual
.ALIGN 命令
現在のロケーションカウンタ値が指定された境界にない場合 , 境界値になるまでロ
ケーションカウンタ値を進めます。
ただし , 境界にある場合は何も行いません。
■ .ALIGN 命令
【記述形式】
.ALIGN
境界値
境界値 : 式 ( 絶対式 )
【説明】
現在のロケーションカウンタ値が指定された境界にない場合 , 境界値になるまでロ
ケーションカウンタ値を進めます。ただし , 境界にある場合は何も行いません。
式は , 絶対式でなければなりません。
式は , 0x8000 以下の正の値でなければなりません。
【条件】
.SECTION 命令の境界値≧ .ALIGN 命令の境界値
( 絶対セクションの場合は , この条件は必要ありません )
【例】
.SECTION
D, DATA, ALIGN=8 /* (8=2^3) */
.DATA.B
0
.ALIGN
8
.DATA.B
0xff
.ALIGN
4
:
September 1, 2014, CM81-00208-5
159
Su pp or t
10.3.2
So ft
Manu al
.ORG 命令
ロケーションカウンタに式の値を設定します。
■ .ORG 命令
【記述形式】
.ORG
式
【説明】
ロケーションカウンタに式の値を設定します。
絶対セクション内で .ORG 命令を使用した場合 , .SECTION 命令で指定した開始アド
レス (LOCATE 指定 ) より前にロケーションカウンタを戻すことはできません。
式は , 絶対式または本命令と同じセクション内のシンボルを値に含む単純相対式で
なければなりません。
【例】
.SECTION
D, DATA, LOCATE=0x100
.DATA
0
.ORG
0x200
.DATA
2
.ORG
0x300
.DATA
3
:
160
CM81-00208-5, September 1, 2014
Support
10.3.3
Soft
Ma nual
.SKIP 命令
ロケーションカウンタを式の数分だけインクリメントします。
■ .SKIP 命令
【記述形式】
.SKIP
式
【説明】
ロケーションカウンタを , 式の数分だけインクリメントします。
式は , 絶対式でなければなりません。
【例】
.SECTION
D, DATA, ALIGN=2
.DATA.H
0x0505
.SKIP
2
.DATA.H
0x1010
:
September 1, 2014, CM81-00208-5
161
Su pp or t
So ft
Manu al
10.4 プログラム結合命令
複数のプログラム間で , シンボルを共有する場合にプログラム結合命令を使用しま
す。
シンボルをほかのプログラムも参照可能にする外部定義の宣言 , ほかのプログラム
のシンボルを参照する外部参照の宣言を行います。
■ プログラム結合命令
プログラム結合命令には , 次の 3 種類があります。
162
• .EXPORT
: 外部定義シンボルの宣言
• .GLOBAL
: 外部定義 / 外部参照シンボルの宣言
• .IMPORT
: 外部参照シンボルの宣言
CM81-00208-5, September 1, 2014
Support
10.4.1
Soft
Ma nual
.EXPORT 命令
プログラム内で定義したシンボルを .EXPORT 命令で指定することによりほかのプ
ログラムでもそのシンボルの参照ができるようになります。
■ .EXPORT 命令
【記述形式】
シンボル [, シンボル ]…
.EXPORT
【説明】
プログラム内で定義したシンボルを .EXPORT 命令で指定することによりほかのプ
ログラムでもそのシンボルの参照ができるようになります。
シンボルは本プログラム中で定義されていなければなりません。
指定可能なシンボルの種類は次のとおりです。
- 絶対値を持つシンボル
- アドレスを持つシンボル
同じシンボルが指定されてもエラーにはなりません。
【例】
-------- プログラム 1 -------.EXPORT
abc1, abc2
:
abc1:
.EQU
5*3
:
abc2:
ADDC
A, R5
-------- プログラム 2 -------.IMPORT
abc1, abc2
:
.DATA
abc1
:
.DATA
abc2
:
September 1, 2014, CM81-00208-5
163
Su pp or t
10.4.2
So ft
Manu al
.GLOBAL 命令
外部定義 , または外部参照するシンボルを宣言します。
本プログラム内で定義されているシンボルは , 外部定義シンボルとなります。
■ .GLOBAL 命令
【記述形式】
シンボル [, シンボル ]…
.GLOBAL
【説明】
外部定義 , または外部参照するシンボルを宣言します。
本プログラム内で定義されているシンボルは , 外部定義シンボルとなります。
指定可能な外部定義シンボルの種類は , 次のとおりです。
- 絶対値を持つシンボル
- アドレスを持つシンボル
本プログラム内で定義されていないシンボルは , 外部参照シンボルとなります。
同じシンボルが指定されてもエラーにはなりません。
【例】
.GLOBAL
abc, sub
/* abc は外部定義シンボル */
/* sub は外部参照シンボル */
:
abc:
164
CALL
sub
CM81-00208-5, September 1, 2014
Support
10.4.3
Soft
Ma nual
.IMPORT 命令
シンボルが , ほかのプログラムで定義されていることを指定します。
■ .IMPORT 命令
【記述形式】
シンボル [, シンボル ]…
.IMPORT
【説明】
シンボルが , ほかのプログラムで定義されていることを指定します。
このシンボルは , ほかのプログラム内で外部定義されていなければなりません。
同じシンボルが指定されてもエラーにはなりません。
【例】
-------- プログラム 1 -------.IMPORT
xyz1, xyz2
:
.DATA
xyz1
:
.DATA
xyz2
-------- プログラム 2 -------.EXPORT xyz1, xyz2
:
xyz1:
.EQU
5*3
:
xyz2:
September 1, 2014, CM81-00208-5
ADDC
A, R5
165
Su pp or t
So ft
Manu al
10.5 シンボル定義命令
シンボル定義命令は , シンボルに値を割り付けます。
■ シンボル定義命令
シンボル定義命令には , 次の 1 種類があります。
• .EQU: シンボルへの値の割り付け
166
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
.EQU 命令
10.5.1
シンボルに , 式の値を割り付けます。
■ .EQU 命令
【記述形式】
シンボル
式
.EQU
【説明】
シンボルに , 式の値を割り付けます。
すでに定義されているシンボルに対して , 値を割り付けることはできません。
式は , 絶対式か単純相対式でなければなりません。
【例】
TEN:
.EQU
10
/* TEN=10 */
ONE:
.EQU
TEN/10
/* ONE=TEN/10 */
val1:
.DATA
0xFFFF0000
val2:
.EQU
val1+2
September 1, 2014, CM81-00208-5
167
Su pp or t
So ft
Manu al
10.6 領域定義命令
領域定義命令は , メモリ領域に定数や領域を確保できます。
■ 領域定義命令
領域定義命令には , 次の 18 種類があります。
168
• .DATA:
定数定義 ( 整数型 )
• .BIT:
定数定義 (1 ビット整数定数 )
• .BYTE:
定数定義 (8 ビット整数定数 )
• .HALF:
定数定義 (16 ビット整数定数 )
• .LONG:
整数定義 (32 ビット整数定数 )
• .WORD:
定数定義 (16 ビット整数定数 )
• .DATAB:
定数ブロック定義 ( 整数定数 )
• .FDATA:
定数定義 ( 浮動小数点定数 )
• .FLOAT:
定数定義 (32 ビット浮動小数点定数 )
• .DOUBLE:
定数定義 (64 ビット浮動小数点定数 )
• .FDATAB:
定数ブロック定義 ( 浮動小数点定数 )
• .RES:
領域定義 ( 整数定数 )
• .FRES:
領域定義 ( 浮動小数点定数 )
• .SDATA:
文字列定義
• .ASCII:
文字列定義
• .SDATAB:
文字列ブロック定義
• .STRUCT:
構造体の定義開始
• .ENDS:
構造体の定義終了
CM81-00208-5, September 1, 2014
Support
10.6.1
Soft
Ma nual
.DATA 命令 , .BIT 命令 , .BYTE 命令 , .HALF 命令 ,
.LONG 命令 , .WORD 命令
式の値をメモリ領域に確保します。
.DATA 命令は , サイズ単位でメモリ領域を確保します。
.BIT 命令は , ビット単位でメモリ領域を確保します。
.BYTE 命令は , バイト単位でメモリ領域を確保します。
.HALF 命令は , ハーフワード単位でメモリ領域を確保します。
.LONG 命令は , ロングワード単位でメモリ領域を確保します。
.WORD 命令は , ワード単位でメモリ領域を確保します。
■ .DATA 命令
【記述形式】
[ シンボル ]
式 [, 式 ]…
.DATA.s
サイズ指定 (s):
I … ビット (1 ビット )
B … バイト (8 ビット )
H … ハーフワード (16 ビット )
L … ロングワード (32 ビット )
W …ワード (16 ビット )
< < デフォルト > >
【説明】
式の値をメモリ領域にサイズ (.s) 単位で確保します。
サイズ (.s) が省略された場合は , ワード指定となります。
式には , 絶対式と相対式が記述できます。
【例】
.DATA.B
0x12, 0x23, 0xa3
.DATA
-1, 0xffff
■ .BIT 命令
【記述形式】
[ シンボル ]
.BIT
式 [, 式 ]…
【説明】
ビット (1 ビット ) 単位でメモリ領域を確保します。
次の定義と同じ意味です。
.DATA.I 式 [, 式 ]…
September 1, 2014, CM81-00208-5
169
Su pp or t
So ft
Manu al
■ .BYTE 命令
【記述形式】
[ シンボル ]
.BYTE
式 [, 式 ]…
【説明】
バイト (8 ビット ) 単位でメモリ領域を確保します。
次の定義と同じ意味です。
.DATA.B 式 [, 式 ]…
■ .HALF 命令
【記述形式】
[ シンボル ]
.HALF
式 [, 式 ]…
【説明】
ハーフワード (16 ビット ) 単位でメモリ領域を確保します。
次の定義と同じ意味です。
.DATA.H 式 [, 式 ]…
■ .LONG 命令
【記述形式】
[ シンボル ]
.LONG
式 [, 式 ]…
【説明】
ロングワード (32 ビット ) 単位でメモリ領域を確保します。
次の定義と同じ意味です。
.DATA.L 式 [, 式 ]…
■ .WORD 命令
【記述形式】
[ シンボル ]
.WORD
式 [, 式 ]…
【説明】
ワード (16 ビット ) 単位でメモリ領域を確保します。
次の定義と同じ意味です。
.DATA.W 式 [, 式 ]…
170
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
.DATAB 命令
10.6.2
指定された数分だけ , 値をメモリ領域にサイズ単位で確保します。
サイズが省略された場合は , ワード指定となります。
■ .DATAB 命令
【記述形式】
[ シンボル ]
式 1, 式 2
.DATAB.s
サイズ指定 (s):
I
…ビット (1 ビット )
B …バイト (8 ビット )
H …ハーフ (16 ビット )
L …ロング (32 ビット )
W …ワード (16 ビット ) < < デフォルト > >
【説明】
式 1 の数分だけ , 式 2 の値をメモリ領域にサイズ (.s) 単位で確保します。
サイズ (.s) が省略された場合は , ワード指定となります。
式 1 は , 絶対式でなければなりません。
式 2 は , 絶対式と相対式が記述できます。
【例】
.DATAB.B
4, 0x12
<注意事項>
.DATAB 命令は , 式 2 を式 1 の数分繰り返して領域を確保するため , 式 1 にあまりにも大
きな値を指定すると処理時間が非常に長くなります。そのため , 式 1 の値は 1048575 以
下にしてください。それ以上はエラーとなります。
September 1, 2014, CM81-00208-5
171
Su pp or t
10.6.3
So ft
Manu al
.FDATA 命令 , .FLOAT 命令 , .DOUBLE 命令
浮動小数点定数をメモリ領域に確保します。
.FDATA 命令は , 型指定で指定された単位でメモリ領域を確保します。
.FLOAT 命令は , 単精度 (4 バイト ) 単位でメモリ領域を確保します。
.DOUBLE 命令は , 倍精度 (8 バイト ) 単位でメモリ領域を確保します。
■ .FDATA 命令
【記述形式】
[ シンボル ]
型指定 (t):
.FDATA.t
浮動小数点定数 [, 浮動小数点定数 ]…
S …単精度浮動小数点定数 , 32 ビット (4 バイト ) < < デフォルト > >
D …倍精度浮動小数点定数 , 64 ビット (8 バイト )
【説明】
浮動小数点定数をメモリ領域に型指定 (.t) 単位で確保します。
浮動小数点定数には , 式や整数定数を指定できません。
型指定 (.t) が省略された場合は , 単精度指定となります。
浮動小数点定数については , 「7.9 浮動小数点定数」を参照してください。
【例】
.FDATA.S
2.1e4
/* 単精度となります */
.FDATA.D
3.2e5
/* 倍精度となります */
.FDATA
4.3e-2
/* 単精度となります */
.FDATA
0xFFFF0000
/* 単精度となります */
■ .FLOAT 命令
【記述形式】
[ シンボル ]
.FLOAT
浮動小数点定数 [, 浮動小数点定数 ]…
【説明】
単精度 (4 バイト ) 単位でメモリ領域を確保します。
次の定義と同じ意味です。
.FDATA.S 浮動小数点定数 [, 浮動小数点定数 ]…
172
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ .DOUBLE 命令
【記述形式】
[ シンボル ]
.DOUBLE
浮動小数点定数 [, 浮動小数点定数 ]…
【説明】
倍精度 (8 バイト ) 単位でメモリ領域を確保します。
次の定義と同じ意味です。
.FDATA.D 浮動小数点定数 [, 浮動小数点定数 ]…
September 1, 2014, CM81-00208-5
173
Su pp or t
So ft
Manu al
.FDATAB 命令
10.6.4
指定された数分だけ , 浮動小数点定数をメモリ領域に型指定で指定された単位で確
保します。
型指定が省略された場合は , 単精度指定となります。
■ .FDATAB 命令
【記述形式】
[ シンボル ]
型指定 (t):
.FDATAB.t
式 , 浮動小数点定数
S …単精度浮動小数点定数 , 32 ビット (4 バイト ) < < デフォルト > >
D …倍精度浮動小数点定数 , 64 ビット (8 バイト )
【説明】
式の数分だけ , 浮動小数点定数をメモリ領域に型指定 (.t) 単位で確保します。
型指定 (.t) が省略された場合は , 単精度指定となります。
式は , 絶対式でなければなりません。
浮動小数点定数には , 式や整数定数を指定できません。
【例】
.FDATAB.S
4, 0xFFF00000
.FDATAB.S
12, 0r1.2e10
<注意事項>
.FDATAB 命令は , 浮動小数点定数を式の数分繰り返して領域を確保するため , 式にあまり
にも大きな値を指定すると処理時間が非常に長くなります。そのため , 式の値は 1048575
以下にしてください。それ以上はエラーとなります。
174
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
.RES 命令
10.6.5
指定された数分だけ , メモリ領域をサイズ単位で確保します。
.RES 命令は , 領域を確保するだけでデータは未設定となります。
サイズが省略された場合は , ワード指定となります。
■ .RES 命令
【記述形式】
[ シンボル ]
式
.RES.s
サイズ指定 (s):
I
…ビット (1 ビット )
B …バイト (8 ビット )
H …ハーフワード (16 ビット )
L …ロングワード (32 ビット )
W …ワード (16 ビット ) < < デフォルト > >
【説明】
式の数分だけ , メモリ領域をサイズ (.s) 単位で確保します。
この命令は , 領域を確保するだけでデータは未設定となります。
サイズ (.s) が省略された場合は , ワード指定となります。
式は , 絶対式でなければなりません。
【例】
.RES.H
2
/* ハーフワード (16 ビット )
を 2 つ分確保 */
.RES.B
4
/* バイト (8 ビット )
を 4 つ分確保 */
September 1, 2014, CM81-00208-5
175
Su pp or t
10.6.6
So ft
Manu al
.FRES 命令
指定された数分だけ , メモリ領域を型指定で指定された単位で確保します。
.FRES 命令は , 領域を確保するだけでデータは未設定となります。
型指定省略された場合は , 単精度指定となります。
■ .FRES 命令
【記述形式】
[ シンボル ]
型指定 (t):
.FRES.t
式
S …単精度浮動小数点定数 , 32 ビット (4 バイト ) < < デフォルト > >
D …倍精度浮動小数点定数 , 64 ビット (8 バイト )
【説明】
式の数分だけ , メモリ領域を型指定 (.t) 単位で確保します。
この命令は , 領域を確保するだけでデータは未設定となります。
型指定 (.t) が省略された場合は , 単精度指定となります。
式は , 絶対式でなければなりません。
【例】
176
.FRES.S
2
/* 単精度 (4 バイト ) を 2 つ分確保 */
.FRES.D
4
/* 倍精度 (8 バイト ) を 4 つ分確保 */
CM81-00208-5, September 1, 2014
Support
10.6.7
Soft
Ma nual
.SDATA 命令 , .ASCII 命令
メモリ領域に , 文字列のデータを確保します。
■ .SDATA 命令
【記述形式】
[ シンボル ]
.SDATA
文字列 [, 文字列 ]…
【説明】
メモリ領域に , 文字列のデータを確保します。
文字列の書き方については , 「7.8 文字列」を参照してください。
【例】
.SDATA
"STR", "IN", "G"
→
|S |T |R |I |N |G |
.SDATA
"EF\tXYZ\0"
→
|E |F |09|X |Y |Z |00|
■ .ASCII 命令
【記述形式】
[ シンボル ]
.ASCII
文字列 [, 文字列 ]…
【説明】
.SDATA 命令と命令名が異なるだけで機能は全く同じです。
【例】
.ASCII
September 1, 2014, CM81-00208-5
"GHI\r\n"
→
|G |H |I |0D|0A|
177
Su pp or t
So ft
Manu al
.SDATAB 命令
10.6.8
メモリ領域に , 指定された数分だけ文字列データを確保します。
■ .SDATAB 命令
【記述形式】
[ シンボル ]
.SDATAB
式 , 文字列
【説明】
メモリ領域に , 式の数分だけ文字列データを確保します。
式は , 絶対式でなければなりません。
【例】
.SDATAB
3, "ABCD"
A B C D A B C D A B C D
下位アドレス
上位アドレス
<注意事項>
.SDATAB 命令は , 文字列を式の数分繰り返して領域を確保するため , 式にあまりにも大き
な値を指定すると処理時間が非常に長くなります。そのため , 式の値は 1048575 以下に
してください。それ以上はエラーとなります。
178
CM81-00208-5, September 1, 2014
Support
10.6.9
Soft
Ma nual
.STRUCT 命令 , .ENDS 命令
構造体の名前とその構成要素を定義します。
構造体の開始 (.STRUCT 命令 ) と終了 (.ENDS 命令 ) は , 一致させなければなりません。
構造体の構成要素となる各メンバは領域定義擬似命令を記述します。
■ .STRUCT 命令 , .ENDS 命令
【記述形式】
構造体タグ名
.STRUCT
[ メンバ名 ]
:
領域定義擬似命令
構造体タグ名
.ENDS
式
【説明】
構造体の名前とその構成要素を定義します。
構造体の開始(.STRUCT命令)と終了(.ENDS命令)は, 一致させなければなりません。
構造体の構成要素となる各メンバは , 領域定義擬似命令を記述します。
【例】
ABC:
.STRUCT
m1:
.BIT
0
m2:
.BYTE
2
ABC:
.ENDS
■ 構造体の領域定義
【記述形式】
構造体シンボル
構造体タグ名
<[ 式 [, …]] >
【説明】
構造体タグ名は , この構造体が持つ大きさの領域を確保してくれる領域定義擬似命
令のように機能します。
オペランド欄には構造体の各メンバの値を記述します。
アングルブラケット ( < >) 内の式は , 省略できますが , アングルブラケットそのもの
は省略できません。
式は構造体の各メンバへの初期値を記述します。
初期化しない領域がある場合は , カンマ (, ) だけを記述して式を記述しなければ , そ
の部分は初期化されません。
初期化しないメンバが後に連続している場合には , そのメンバ以降の式を指定する
必要はありません。
September 1, 2014, CM81-00208-5
179
Su pp or t
So ft
Manu al
【例】
ABC:
.STRUCT
m1:
.BIT
0
m2:
.BYTE
2
ABC:
.ENDS
c:
ABC
<0, 2 >
■ 構造体のアクセス
【記述形式】
構造体シンボル . メンバ名
【説明】
構造体シンボルの後にピリオド (.) を付加して構造体メンバ名を続けて記述するこ
とで構造体のメンバを参照できます。
構造体メンバは , 構造体内での 16 ビットオフセットを持ち , 式の中でディスプレー
スメントとしても記述できます。
【例】
180
ABC:
.STRUCT
m1:
.BIT
0
m2:
.BYTE
2
ABC:
.ENDS
c:
ABC
<0, 2 >
MOV
A, c+m2
SETB
c.m1
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
10.7 デバッグ情報出力制御命令
デバッグ情報出力の部分指定を行います。
起動時オプションでデバッグ情報出力 (-g) を指定すると , プログラムで使用されて
いるシンボル情報がオブジェクトへ出力されます。
デバッグ情報出力制御命令は , ON/OFF 指定を行うことで必要な部分だけデバッグ
情報を出力できます。
■ デバッグ情報出力制御命令
デバッグ情報出力制御命令には , 次の 1 種類があります。
• .DEBUG: デバッグ情報出力の部分指定
■ .DEBUG 命令
【記述形式】
.DEBUG
{ON|OFF}
ON : デバッグ情報出力の開始を指定
OFF: デバッグ情報出力の中止を指定
【説明】
デバッグ情報出力の部分指定を行います。
起動時オプションでデバッグ情報出力 (-g) を指定すると , プログラムで使用されて
いるシンボル情報がオブジェクトへ出力されます。
.DEBUG 命令は , ON/OFF 指定を行うことで必要な部分だけデバッグ情報を出力で
きます。
.DEBUG 命令は , ソースプログラム上何回現れてもよく , その都度有効となります。
デバッグ情報出力が ON になっている部分のシンボルについてデバッグ情報が出力
されます。
初期値は , ON になっています。
【例】
.DEBUG
ON
: /* この部分のデバッグ情報は出力されます
.DEBUG
OFF
: /* この部分のデバッグ情報は出力されません
.DEBUG
September 1, 2014, CM81-00208-5
*/
*/
ON
181
Su pp or t
So ft
Manu al
■ 起動時オプションとの関係
-g が指定されている場合のみ .DEBUG 命令が有効となります。
-g が指定されていない場合や -Xg で -g が取り消されている場合は , .DEBUG 命令はす
べて無効となり , デバッグ情報は一切出力されません。
182
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
10.8 ライブラリファイル指定命令
ライブラリファイルを指定します。
■ ライブラリファイル指定命令
ライブラリファイル指定命令には , 次の 1 種類があります。
• .LIBRARY: ライブラリファイルの指定
■ .LIBRARY 命令
【記述形式】
.LIBRARY
" ライブラリファイル名 "
【説明】
リンカで検索するライブラリファイル名の指定を行います。
ライブラリファイルをいくつも指定したい場合は , .LIBRARY 命令を複数記述しま
す。
【例】
.LIBRARY
"liblo.lib"
.LIBRARY
"libstd.lib"
September 1, 2014, CM81-00208-5
183
Su pp or t
So ft
Manu al
10.9 リスト出力制御命令
アセンブルリストの出力形式を指定できます。
■ リスト出力制御命令
ライブラリファイル指定命令には , 次の 6 種類があります。
• .FORM
: 1 頁の行数と桁数指定
• .TITLE
: タイトル指定
• .HEADING: タイトルの指定と変更
184
• .LIST
: アセンブルソースリスト出力の詳細指定
• .PAGE
: 改頁指定
• .SPACE
: 空白行の出力
CM81-00208-5, September 1, 2014
Support
10.9.1
Soft
Ma nual
.FORM 命令
アセンブルリストに出力する 1 頁当たりの行数と桁数を指定します。
行数の値の範囲は , 20 ~ 255 です。0 を指定した場合は , 改頁されません。
桁数の値の範囲は , 80 ~ 1023 です。
初期値は , .FROM LIN=60, COL=100 です。
■ .FORM 命令
【記述形式】
指定 [, 指定 ]
.FORM
指定 :{ 行数 | 桁数 }
行数 :LIN= 式 ( 絶対式 ) {0|20 ~ 255}
桁数 :COL= 式 ( 絶対式 ) 80 ~ 1023
【説明】
アセンブルリストに出力する 1 頁当たりの行数と桁数を指定します。
.FORM命令は, ソースプログラム上に何回現れてもよく, その都度有効となります。
式は , 絶対式でなければなりません。
行数の値の範囲は , 20 ~ 255 です。0 を指定した場合は , 改頁されません。
桁数の値の範囲は , 80 ~ 1023 です。
初期値は , .FORM LIN=60, COL=100 です。
アセンブラは , 指定された行数と桁数内に余白を補って出力します。
【例】
図 10.9-1 .FORM 命令の出力例
ソースプログラム
.FORM
アセンブルリスト
LIN=60, COL=80
80
60
■ 起動時オプションとの関係
-pl を指定した場合 , 行数の指定は無効となります。
-pw を指定した場合 , 桁数の指定は無効となります。
September 1, 2014, CM81-00208-5
185
Su pp or t
10.9.2
So ft
Manu al
.TITLE 命令
アセンブルリストの各頁のヘッダ部に , コメントとして表示するタイトルを指定し
ます。
指定されたタイトル文字は , 先頭頁から出力されます。
.TITLE 命令は , ソースプログラム上で 1 回のみ指定可能です。
■ .TITLE 命令
【記述形式】
" タイトル文字 "
.TITLE
【説明】
アセンブルリストの各ページのヘッダ部に , コメントとして表示するタイトルを指
定します。
指定されたタイトル文字は , 先頭頁から出力されます。
.TITLE 命令は , ソースプログラム上で 1 回のみ指定可能です。
タイトルの長さは 60 文字までです。
【例】
図 10.9-2 .TITLE 命令の出力例
ソースプログラム
.TITLE "TEST PROGRAM"
アセンブルリスト
TEST PROGRAM
TEST PROGRAM
TEST PROGRAM
186
CM81-00208-5, September 1, 2014
Support
10.9.3
Soft
Ma nual
.HEADING 命令
アセンブルリストの各頁のヘッダ部に , コメントとして表示するタイトルを指定し
ます。
指定されたタイトル文字は , 本命令で強制的に改頁されて本頁から出力されます。
.HEADING 命令は , ソースプログラム上で何回でも指定でき , その都度有効となりま
す。
■ .HEADING 命令
【記述形式】
" タイトル文字 "
.HEADING
【説明】
アセンブルリストの各ページのヘッダ部に , コメントとして表示するタイトルを指
定します。
指定されたタイトル文字は , 本命令で強制的に改頁されて本頁から出力されます。
本命令が頁の第 1 行目にあたる場合は , 本頁から出力されます。
.LIST OFF が指定されている場合は , .LIST ON になってから頁の先頭行に出力され
ます。
.HEADING 命令は , ソースプログラム上で何回も指定でき , その都度有効となりま
す。
タイトルの長さは 60 文字までです。
【例】
図 10.9-3 .HEADING 命令の出力例
ソースプログラム
.HEADING "PROGRAM=TEST1\"V1.0L2.0\""
:
.HEADING "PROGRAM=TEST2\"V1.0L2.0\""
アセンブルリスト
PROGRAM=TEST3 "V1.0L2.0"
PROGRAM=TEST2 "V1.0L2.0"
PROGRAM=TEST1 "V1.0L2.0"
:
.HEADING "PROGRAM=TEST3\"V1.0L2.0\""
:
September 1, 2014, CM81-00208-5
187
Su pp or t
So ft
Manu al
.LIST 命令
10.9.4
アセンブルリストの出力形式を詳細に指定します。
.LIST 命令は , ソースプログラム上で何回でも指定でき , その都度有効となります。
.LIST 命令は , ON または OFF 指定がある場合 , .LIST 命令自身は出力されません。
初期値は , .LIST ON, CALL, COND, DEF, EXPOBJ, INC です。
■ .LIST 命令
【記述形式】
.LIST
指定 :
指定 [, 指定 ]…
{ON|OFF}
…アセンブルソースリスト出力制御
{CALL|NOCALL}
…マクロコール命令の出力制御
{COND|NOCOND}
…非テキスト部の出力制御
{DEF|NODEF}
…マクロ命令およびマクロ定義部の出力制御
{EXP|NOEXP|EXPOBJ}
…マクロ展開されたテキストの出力制御
{INC|NOINC}
…インクルードファイルのテキストの出力制御
【説明】
アセンブルリストの出力形式を詳細に指定します。
.LIST 命令は , ソースプログラム上で何回でも指定でき , その都度有効となります。
.LIST 命令は , ON または OFF 指定がある場合 , .LIST 命令自身は出力されません。
初期値は , .LIST ON, CALL, COND, DEF, EXPOBJ, INC, STR です。
.LIST 命令の各指定の意味は次のとおりです。
- ON
: アセンブルソースリストを出力します。
- OFF
: アセンブルソースリストを出力しません。
- CALL
: マクロコール命令をリストに出力します。
- NOCALL : マクロコール命令をリストに出力しません。
- COND
: 非テキスト部 * をリストに出力します。
- NOCOND : 非テキスト部をリストに出力しません。
- DEF
: マクロ定義部 , マクロ命令をリストに出力します。
- NODEF
: マクロ定義部 , マクロ命令をリストに出力しません。
- EXP
: マクロ展開されたテキストをリストに出力します。
- NOEXP
: マクロ展開されたテキストをリストに出力しません。
- EXPOBJ : オブジェクトコードのみリストに出力します ( マクロ展開されたテキ
ストはリストに出力しません )。
188
- INC
: インクルードファイルのテキストをリストに出力します。
- NOINC
: インクルードファイルのテキストをリストに出力しません。
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
*:非テキスト部とは , if 節でアセンブルの対象とならない部分のことです。
【例】
.LIST
ON
:
/* この部分はリストに出力されます
:
*/
:
.LIST
OFF
:
/* この部分はリストに出力されません */
:
:
.LIST
ON
■ 起動時オプションとの関係
● -linc ON を指定した場合
INC/NOINC 指定は無効となり , 常にインクルードファイルのテキストはリストに出力
されます。
● -linc OFF を指定した場合
INC/NOINC 指定は無効となり , 常にインクルードファイルのテキストはリストに出力
されません。
● -lexp ON を指定した場合
EXP/NOEXP/EXPOBJ 指定は無効となり , 常にマクロ展開されたテキストはリストに出
力されます。
● -lexp OFF を指定した場合
EXP/NOEXP/EXPOBJ 指定は無効となり , 常にマクロ展開されたテキストはリストに出
力されません。
● -lexp OBJ を指定した場合
EXP/NOEXP/EXPOBJ 指定は無効となり , 常にマクロ展開されたテキストのオブジェク
トコードのみがリストに出力されます。
September 1, 2014, CM81-00208-5
189
Su pp or t
10.9.5
So ft
Manu al
.PAGE 命令
頁番号を更新してアセンブルリストの印字を次頁から開始します。
頁の先頭行に .PAGE 命令があった場合は , .PAGE 命令は無効となります。
.PAGE 命令自身は出力されません。
■ .PAGE 命令
【記述形式】
.PAGE
【説明】
頁番号を更新してアセンブルリストの印字を次頁から開始します。
頁の先頭行に .PAGE 命令があった場合は , .PAGE 命令は無効となります。
.PAGE 命令自身は出力されません。
【例】
図 10.9-4 .PAGE 命令の出力例
ソースプログラム
アセンブルリスト
ページ n
.DATA 10
.DATA 20
.DATA 10
.PAGE
.DATA 20
.DATA 30
.DATA 40
190
.DATA 30
ページ n+1
.DATA 40
CM81-00208-5, September 1, 2014
Support
10.9.6
Soft
Ma nual
.SPACE 命令
指定された分の空白行を出力します。
値の範囲は , 0 ~ 255 です。
.SPACE 命令自身は , リスト出力されませんが行数はカウントされます。
■ .SPACE 命令
【記述形式】
.SPACE
空白行数
空白行数 : 式 ( 絶対式 )
【説明】
空白行数で指定された分の空白行数を出力します。
式は , 絶対式でなければなりません。
空白行数の値の範囲は , 0 ~ 255 までです。
頁を超える空白行の指定があった場合 , 頁最終行以降の空白行は出力しません。
.SPACE 命令自身は , リスト出力されませんが行数はカウントされます。
【例】
.SPACE
September 1, 2014, CM81-00208-5
4
191
Su pp or t
192
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第 11 章
プリプロセッサ処理
プリプロセッサ処理では , マクロ展開 , リピート展
開 , 条件アセンブル , マクロ置換 , ファイル読み込
みなどのテキスト処理ができます。
この機能により同じようなテキストを繰り返して
記述を行うアセンブリ言語プログラムを効率よく
プログラミングできます。
プリプロセッサの各命令は C 言語と共有化しやす
いように C コンパイラのプリプロセッサの仕様に
合わせてあります。
ただし , #macro 命令など , C コンパイラにはない ,
アセンブラ独自の仕様も含まれています。
この章では , プリプロセッサの機能と各命令を説明
します。
11.1 プリプロセッサ
11.2 プリプロセッサの基本規則
11.3 プリプロセッサの式
11.4 マクロ定義
11.5 マクロコール命令
11.6 リピート展開
11.7 条件付きアセンブル命令
11.8 マクロ名の置換処理
11.9 #include 命令
11.10 #line 命令
11.11 #error 命令
11.12 #pragma 命令
11.13 空命令
11.14 既定義マクロ名
11.15 C 言語プリプロセッサとの違い
September 1, 2014, CM81-00208-5
193
Su pp or t
So ft
Manu al
11.1 プリプロセッサ
プリプロセッサは , 一般的に前処理プログラムとよばれ , 実際にアセンブルを行う前
にテキストの加工処理を行うプログラムです。
プリプロセッサには , 大きく 4 つの機能があります。
• マクロ定義
• 条件アセンブル
• マクロ名の置換処理
• ファイルの読込み
■ プリプロセッサ
● マクロ定義
複数の命令または , ある処理単位を 1 つの命令で実現したい場合があります。
このような場合にマクロ定義は有効です。
このとき , 定義する命令列のテキスト部分を「マクロボディ」といいます。
マクロコールすることによりマクロボディが展開されます。
このマクロボディには , 機械命令 , 擬似命令 , マクロ名のほかに仮引数 , #local 命令 ,
ローカルシンボルを記述できます。
【例】
#macro
get_timer
#local
loop
addr,reg
loop:
MOV
A,#addr
CMP
A,#0
BEQ
loop
MOV
reg, A
マクロボディ
マクロ定義
#endm
/* get_timerがマクロコール命令 */
/* addr,regl,reg2が仮引数 */
/*loopがローカルシンボル */
get_timer
0x100, R1 /* マクロコール */
__0000000001loop:
194
MOV
A,#0x100
CMP
A,#0
BEQ
__0000000001loop
MOV
R1,A
マクロ展開
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
● 条件アセンブル
例えば , ある条件によりアセンブルしたい命令としたくない命令とがある場合は , 次の
ように書きます。
#if
CPU_TYPE==1
テキスト 1
#else
テキスト 2
#endif
この場合 , CPU_TYPE が 1 であればテキスト 1 が選択されてアセンブルされます。
CPU_TYPE が 1 以外であればテキスト 2 が選択されてアセンブルされます。
条件アセンブルを行う命令を条件付きアセンブル命令といいます。
条件付きアセンブル命令には , #if, #ifdef, #ifndef, #elif, #else, #endif 命令があります。
● マクロ名の置換処理
プリプロセッサの大事な機能として , マクロ名の置換処理があります。
例えば , ある定数値を使う場合 ,
MOV
A, #0xFF
と直接書くよりも , 0xFF を何か意味のある名前に定義して ,
#define IOMASK
MOV
0xFF
A, #IOMASK
と書いた方が , プログラムがわかりやすくなります。
このとき , IOMASK という名前を 0xFF に置き換える ( 置換 ) する機能をマクロ置換と
いいます。
September 1, 2014, CM81-00208-5
195
Su pp or t
So ft
Manu al
● ファイルの読み込み
共通で使う変数やマクロ名を別ファイルにしておいて , 必要なファイルを読み込んで
使用すると便利です。
【例】
ファイル iodef.h
#define IOMASK
#define SETCMD
:
0xFF
1
/* I/O のマスク値 */
/* データセットコマンド */
ファイル com.asm
#include "iodef.h"
:
MOV
A, R2
AND
A, #IOMASK
MOV
R2, A
MOV
MOV
MOV
196
A, #SETCMD
A, R7
@A, T
/* デファイン値の読み込み */
/* データをマスク */
/* データセットコマンドを送る */
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
11.2 プリプロセッサの基本規則
プリプロセッサ命令を使ったプログラムの書き方 , およびその規則について説明し
ます。
■ プリプロセッサ命令の記述形式
プリプロセッサ命令は , すべて先頭に "#" を付加して記述します。
プリプロセッサ命令を次に示します。
#macro
#local
#exitm
#endm
#repeat
#if
#ifdef
#ifndef
#elif
#else
#endif
#define
#set
#undef
#purge
#include
#line
#error
#pragma
#
■ コメント
コメントは , 任意のカラムから始めることができます。
セミコロン (;) または 2 個のスラッシュ (//) で行コメントとなります。
C 言語風に /* ~ */ で囲ってコメントを記述することもできます。
/* ~ */ で囲ったコメントは , 好きな位置にコメントを記述できます。
■ 行の継続
行の最後にバックスラッシュ (\) を置くことによって次の行に継続できます。
継続を意味するバックスラッシュ (\) の位置に次の行の先頭が続きます。
バックスラッシュ (\) の次の文字に改行以外の文字がある場合は , 継続しません。
■ 整数定数
整数定数には , 2 進定数 , 8 進定数 , 10 進定数 , 16 進定数の 4 種類があります。
■ 文字定数
文字定数は文字をシングルクォート (') で囲って記述します。
■ マクロ名
マクロ名は , テキストに出現するたびに定義されている定義文字の列に置き換えたり ,
マクロ展開したりします。
■ 仮引数
仮引数は , マクロ定義 (#macro 命令 ) で定義され , マクロコール命令で引数を設定でき
ます。
September 1, 2014, CM81-00208-5
197
Su pp or t
So ft
Manu al
■ ローカルシンボル
ローカルシンボルは , マクロ展開時に自動的にユニークな名前を生成します。
したがって , マクロボディ内でジャンプシンボルなどをローカルシンボルに定義して
おけば , 何回マクロ展開されてもシンボルの 2 重定義になることはありません。
198
CM81-00208-5, September 1, 2014
Support
11.2.1
Soft
Ma nual
プリプロセッサ命令の記述形式
プリプロセッサ命令は , すべての先頭に "#" を付加して記述します。
第 1 カラムからプリプロセッサ命令の間に空白やコメントを記述してもかまいませ
ん。
ただし , 行コメントを記述した場合は , 行終端までコメント扱いとなります。
■ プリプロセッサ命令の記述形式
【記述形式】
# プリプロセッサ命令 [ パラメタ…]
【説明】
プリプロセッサ命令は , すべて先頭に "#" を付加して記述します。
第 1 カラムからプリプロセッサ命令の間に空白やコメントを記述してもかまいませ
ん。
ただし , 行コメントを記述した場合は , 行終端までコメント扱いとなります。
"#" の後に続くプリプロセッサ命令はマクロ置換の対象にはなりません。
プリプロセッサ命令を次に示します。
#macro
#local
#exitm
#endm
#repeat
#if
#ifdef
#ifndef
#elif
#else
#endif
#define
#set
#undef
#purge
#include
#line
#error
#pragma
#
【例】
#define LINEMAX 255
#ifndef OFF
/* OFF */ #define
OFF
0
/* ON
ON
-1
*/ #define
/* 1 ではない */
#endif
September 1, 2014, CM81-00208-5
199
Su pp or t
11.2.2
So ft
Manu al
コメント
コメントには , 行コメントと範囲コメントがあります。
行コメントは , セミコロン (;) または 2 個のスラッシュ (//) で始まります。
C 言語風に , /* ~ */ で囲ってコメントを記述することもできます。これと範囲コメ
ントといいます。
■ コメント
【記述形式】
/* 範囲コメント */
// 行コメント
; 行コメント
【説明】
コメントは , 任意のカラムから始めることができます。
コメントには , 行コメントと範囲コメントがあります。
行コメントは , セミコロン (;) または 2 個のスラッシュ (//) で始まります。
C 言語風に , /* ~ */ で囲ってコメントを記述することもできます。これを範囲コメ
ントといいます。
範囲コメントは , 好きな位置にコメントを記述できます。
【例】
/*---------コメント
------------*/
#define STRLEN
; 文字の長さ
10
/* test1 */ #if
TEST == 1
// テストモード 1
:
/* test2 */ #elif TEST == 2
/* 特殊なテスト */
:
/* end */
200
#endif
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
11.2.3 行の継続
行の最後にバックスラッシュ (\) を置くことによって , 次の行に継続できます。
継続を意味するバックスラッシュ (\) の位置に次の行の先頭が続きます。
バックスラッシュ (\) の次の文字に改行以外の文字がある場合は , 継続しません。
■ 行の継続
【記述形式】
\ 改行
【説明】
行の最後にバックスラッシュ (\) を置くことによって , 次の行に継続できます。
継続を意味するバックスラッシュ (\) の位置に次の行の先頭が続きます
バックスラッシュ (\) の次の文字に改行以外の文字がある場合は , 継続しません。
行の継続は , コメント , 文字定数 , 文字列の途中にも指定できます。
【例】
.DATA
0x01, 0x02, 0x03, \
0x04, 0x05, 0x06, ; コメント \
0x07, 0x08, 0x09
.SDATA
"abcdefghijklmnopqrstuvwxyz \
ABCDEFGHIJKLMNOPQRSTUVWXYZ"
September 1, 2014, CM81-00208-5
/* 文字列の継続 */
201
Su pp or t
11.2.4
So ft
Manu al
整数定数
整数定数には , 2 進定数 , 8 進定数 , 10 進定数 , 16 進定数の 4 種類があります。
アセンブルフェーズの数値定数と全く同じです。
■ 整数定数
整数定数には , 2 進定数 , 8 進定数 , 10 進定数 , 16 進定数の 4 種類があります。
C 言語の long 型指定 (123L など ), unsigned 型指定 (123U など ) もサポートしています。
● 2 進定数
2 進法で表された整数定数です。
プリフィックス (B' または 0b) を付けるか , サフィックス (B) を付けて記述します。
プリフィックス(B'または0b), サフィックス(B)は大文字でも小文字でもかまいません。
【例】
B'0101
0b0101
0101B
● 8 進定数
8 進法で表された整数定数です。
プリフィックス (Q' または 0) を付けるか , サフィックス (Q) を付けて記述します。プリ
フィックス (Q'), サフィックス (Q) は大文字でも小文字でもかまいません。
【例】
Q'377
0377
377Q
● 10 進定数
10 進法で表された整数定数です。
プリフィックス (D') を付けるか , サフィックス (D) を付けて記述します。
プリフィックス , サフィックスは 10 進定数のみ省略可能です。
プリフィックス (D'), サフィックス (D) は大文字でも小文字でもかまいません。
【例】
D'12345676
1234567
1234567D
● 16 進定数
16 進法で表された整数定数です。
プリフィックス (H' または 0x) を付けるか , サフィックス (H) を付けて記述します。
プリフィックス(H'または0x), サフィックス(H)は大文字でも小文字でもかまいません。
【例】
H'ff
202
0xFF
0FFH
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
文字定数
11.2.5
文字定数は文字の値を示します。
文字定数は文字定数要素をシングルクォート (') で囲って記述します。
アセンブルフェーズの文字定数と全く同じです。
■ 文字定数
文字定数は文字定数要素をシングルクォート (') で囲って記述します。
文字定数要素には , 文字 , 拡張表記 , 8 進表記 , 16 進表記があります。
文字定数要素は , 4 文字まで指定可能です。
文字定数は , 256 進法の扱いとなります。
■ 文字定数要素
● 文字
バックスラッシュ (\), シングルクォート (') を除くすべての文字と空白文字は単独で文
字定数要素となります。
【例】
'P'
[email protected]'
'0A"'
● 拡張表記
バックスラッシュ (\) の後に特定の文字を続けて文字定数要素とします。
これを拡張表記とよびます。
拡張表記を表 11.2-1 に示します。
表 11.2-1 拡張表記
文字
改行文字
水平タブ文字
後退文字
復帰文字
改ページ文字
バックスラッシュ
シングルクォート
ダブルクォート
警報文字
垂直タブ文字
疑問符
文字定数要素
値
\n
\t
\b
\r
\f
\\
\'
\”
\a
\v
\?
0x0A
0x09
0x08
0x0D
0x0C
0x5C
0x27
0x22
0x07
0x0B
0x3F
( 注意事項 ) 拡張表記として用いられる文字は , 小文字のみです。
【例】
'\n'
September 1, 2014, CM81-00208-5
'\''
'\"\\'
203
Su pp or t
So ft
Manu al
● 8 進表記
文字コードのビットパターンを直接表記して 1 バイトデータを表現します。
8 進表記は , バックスラッシュ (\) の後に 1 から 3 文字の 8 進数字を続けたものです。
【例】
文字定数要素
ビットパターン
'\0'
b'00000000
'\377'
b'11111111
'\53'
b'00101011
'\0123'
b'00001010 → '\012' と '3' に分かれます
● 16 進表記
文字コードのビットパターンを直接表記して 1 バイトデータを表現します。
16 進表記は , バックスラッシュ (\) の後に文字 x( 小文字 ) と 1 文字か 2 文字の 16 進文
字を続けたものです。
【例】
204
文字定数要素
ビットパターン
'\x0'
b'00000000
'\xff'
b'11111111
'\x2B'
b'00101011
'\x0A5'
b'00001010 → '\x0A' と '5' に分かれます
CM81-00208-5, September 1, 2014
Support
11.2.6
Soft
Ma nual
マクロ名
マクロ名は , テキストに出現するたびに定義されている定義文字の列に置き換えた
り , マクロ展開したりします。
なお , C 言語ではマクロ名を識別子とよぶ場合があります。
■ マクロ名の規則
• 255 文字以内です。
• 先頭文字は , 英字 , アンダスコア (_) です。
• 2 文字目以降は , 英字 , 数字 , アンダスコア (_) で構成されます。
• 大文字 , 小文字は区別されます。
【例】
A
Zabcde
ppTRUE
_123456789
■ マクロ名の種類
● デファインマクロ
#define 命令 , #set 命令で定義したマクロ名をいいます。
テキストのどの場所にも記述でき , マクロ名が出現するたびに , 定義されている文字に
置き換えます。
【例】
#define TRUE
1
#define FALSE
0
#define add(a, b)
(a)+(b)
/* この場合 , TREU, FALSE, add がマクロ名となります。*/
● マクロコール命令
#macro 命令で定義したマクロ名をいいます。
行の先頭からマクロコール命令の間には空白とコメントしか記述できません。
ただし , 行コメントの場合は行終端までコメント扱いとなります。
マクロコール命令は定義されているテキストをマクロ展開します。
【例】
#macro
max
a, b, c
:
#endm
/* この場合 , max がマクロ名となります。*/
September 1, 2014, CM81-00208-5
205
Su pp or t
11.2.7
So ft
Manu al
仮引数
仮引数は , マクロ定義 (#macro 命令 ) で定義され , マクロコール命令で引数を設定
できます。
■ 仮引数の名前の規則
仮引数の名前は , 「11.2.6 マクロ名」のマクロ名の規則に準じます。
■ 仮引数の置換規則
仮引数が置換できる場所は , マクロボディ内のみです。
仮引数は , マクロ展開が終了すると効力を失います。
【例】
#macro
mv
reg1 , reg2
MOV
R0, reg2
MOV
reg2 , reg1
mv
R1 , R2
MOV
R0 , R2
MOV
R2 , R1
MOV
reg1, R0
マクロボディ
#endm
/* マクロコール */
マクロ展開
/* ここはマクロボディ外なので,reg1は */
/* 仮引数とは認識されず置換されません。 */
206
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
ローカルシンボル
11.2.8
ローカルシンボルは , マクロ展開時に自動的にユニークな名前を生成します。
したがって , マクロボディ内でのジャンプシンボルなどをローカルシンボル定義し
ておけば , 何回マクロ展開されてもシンボルの 2 重定義になることはありません。
■ ローカルシンボルの名前規則
ローカルシンボルの名前は , 「11.2.6 マクロ名」のマクロ名の規則に準じます。
■ ローカルシンボルの置換規則
ローカルシンボルが置換できる場所は , マクロボディ内のみです。
ローカルシンボルは次の形式で試製されます。
__nnnnn ローカルシンボル
2 個のアンダスコア (_) で始まり 5 桁の数字が続きます。
この 5 桁の数値は , マクロコールされるたびに 1 つ値が増加され , 00001 ~ 65535 まで
の値を生成します。
次に , 5 桁の数値の後にユーザが指定したローカルシンボル名が続きます。
ローカルシンボルは , マクロ展開が終了すると効力を失います。
【例】
#macro
get _timer
#local
loop
addr, reg
#local命令で,loopをローカルシンボル
として定義
loop:
MOV
A,#addr
CMP
A,#0
BEQ
loop
MOV
reg, A
マクロボディ
#endm
get_timer
0x0100, R1
/* マクロコール */
__00001loop
MOV
A, 0x010
CMP
A, #0
BEQ
__00001loop
MOV
R1, A
BRA
loop /* ここはマクロボディ外なので,loopは */
マクロ展開
loopの部分が, __00001loopと置換
されています。
/* ローカルシンボルとは認識されず置換されません。 */
September 1, 2014, CM81-00208-5
207
Su pp or t
So ft
Manu al
11.3 プリプロセッサの式
プリプロセッサの式は , #if, #elif, #set, #repeat 命令で使用されます。
式の演算子などは , C 言語の定数式に準じています。
■ プリプロセッサの式
式に使用できる項を次に示します。
• 整数定数
• 文字定数
• マクロ名
• 仮引数 ( マクロボディのみ )
マクロ名 , 仮引数は , 置き換えられたものが項となります。
未定義のマクロ名があった場合 , 0 に置き換えられて評価されます。
式は定数式のみ記述できます。
アセンブルフェーズの相対シンボル , 絶対シンボル , EQU シンボル , セクションシンボ
ルなどは使用できません。
【例】
#if (MODE
& 0xff) + 1
> 3
:
#endif
■ プリプロセッサの式の演算精度
式の演算は , 32 ビットで行っております。したがって , 32 ビットを超える演算は保証
しておりませんので注意してください ( エラーにはなりません )。
関係式 , 等価式の場合は , 式の評価が真であれば 1, 偽であれば 0 となります。
208
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ プリプロセッサの演算子
演算子は , 式の中で使用されます。
式で使用できる演算子を次に示します。
● 単項演算子
!
論理 NOT
真 / 偽の判定
~
NOT
ビットの判定
+
正
-
負
● 2 項演算子
*
乗算
/
除算
%
剰余算
+
加算
-
減算
<<
左算術シフト
>>
右算術シフト
<
関係演算子
小なり
<=
関係演算子
小なりまたは等しい
>
関係演算子
大なり
>=
関係演算子
大なりまたは等しい
==
関係演算子
等しい
!=
関係演算子
等しくない
&
ビット AND
^
ビット XOR
|
ビット OR
&&
論理 AND
||
論理 OR
September 1, 2014, CM81-00208-5
209
Su pp or t
So ft
Manu al
■ プリプロセッサの演算子の優先順位
表 11.3-1 にプリプロセッサの演算子の優先順位を示します。
表 11.3-1 プリプロセッサの演算子の優先順位
優先順位
210
演算子
結合性
適用される式
1
( )
左
括弧
2
! ~ + -
右
単項式
3
* / %
左
乗法式
4
+ -
左
加法式
5
<<
左
シフト式
6
< <=
左
関係式
7
== !=
左
等価式
8
&
左
ビット AND 式
9
^
左
ビット XOR 式
10
|
左
ビット OR 式
11
&&
左
論理 AND 式
12
||
左
論理 OR 式
>>
> >=
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
11.4 マクロ定義
マクロ定義は , #macro 命令 , マクロボディ , #endm 命令で構成されています。
マクロコール時にはマクロ定義で定義されたマクロボディをマクロ展開します。
■ マクロ定義
【記述形式】
マクロ名 [ 仮引数 [, 仮引数 ]…]
マクロボディ
#macro
#endm
【説明】
マクロ定義は , #macro 命令 , マクロボディ , #endm 命令で構成されています。
#macro 命令から #endm 命令までのテキストをマクロボディといいます。
マクロボディは , マクロ名をキーワードとするマクロ定義体に登録され , マクロ名
を記述することで , マクロ名に対応したマクロボディが展開されます。
このキーワードとなったマクロ名を特にマクロコール命令といいます。
マクロボディの展開をマクロ展開といいます。
■ マクロ定義の規則
マクロボディ内でさらにマクロを定義できません。
マクロボディの大きさは最大約 60K バイトです。この大きさを超えるマクロボディは
登録できません。
【例】
#macro
mac
reg, data
MOVW
A, #data
MOV
A, @A
MOV
reg, A
mac
R2, label
MOVW
A, #label
MOV
A, @A
MOV
R2, A
マクロボディ
マクロ定義
#endm
September 1, 2014, CM81-00208-5
/* マクロコール命令 */
マクロ展開
211
Su pp or t
11.4.1
So ft
Manu al
#macro 命令
#macro 命令は , マクロ定義の開始を宣言し , マクロ名と仮引数の定義を行います。
■ #macro 命令
【記述形式】
#macro マクロ名 [ 仮引数 [, 仮引数 ]…]
【説明】
#macro 命令は , マクロ定義の開始を宣言し , マクロ名と仮引数の定義を行います。
#macro 命令で指定したマクロ名は , マクロコール命令として使用します。
マクロコール命令を使用すると , 定義されているマクロボディが展開されます。
■ #macro 命令の規則
• #macro 命令は , 必ず #endm 命令で定義を終了しなければなりません。
• #macro 命令で同じ名前の仮引数を 2 つ以上指定できません。
• ここで定義した仮引数は , このマクロボディ内でのみ有効です。
• 仮引数の置換は , 単語の区切りで区別され , 仮引数と同じ単語を見つけると直ちに
置換されます。
• マクロ名やローカルシンボルと仮引数の名前が同じ場合は , 仮引数の置換が優先さ
れます。
• 仮引数は , 1 つも指定しなくても構いません。
【例】
#macro
mac
r1, r2, data
MOV
A, data
MOV
r2, r1
MOV
r1, A
マクロボディ
#endm
212
mac
R2, R 7, label
MOV
A,label
MOV
R7, R2
MOV
R2, A
/* マクロコール命令 */
マクロ展開
CM81-00208-5, September 1, 2014
Support
11.4.2
Soft
Ma nual
#local 命令
#local 命令で生成されるシンボルをローカルシンボルといいます。
ローカルシンボルは , マクロコールがあるたびに自動的にユニークな名前を生成し
ます。
■ #local 命令
【記述形式】
#local ローカルシンボル [, ローカルシンボル ]…
【説明】
#local 命令は , ローカルシンボルの定義を行います。
#local 命令で生成されるシンボルをローカルシンボルといいます。
ローカルシンボルは , マクロコールがあるたびに自動的にユニークな名前を生成し
ます。
ローカルシンボルは 2 重定義とならないように単一な名前を生成します。
ローカルシンボルの生成規則は , 「11.2.8 ローカルシンボル」を参照してください。
■ #local 命令の規則
• #local 命令は , マクロボディ内でのみ記述できます。
• ローカルシンボルの定義はいくつも指定できます。
• 同じ名前のローカルシンボルを 2 つ以上指定できません。
• ここで定義したローカルシンボルは , このマクロボディ内でのみ有効です。
• ローカルシンボルの生成は , 単語の区切りで区別され , ローカルシンボルと同じ単
語を見つけると直ちにユニークな名前を生成します。
• マクロ名や仮引数とローカルシンボルの名前が同じ場合は , 仮引数の置換が優先し
ます。
September 1, 2014, CM81-00208-5
213
Su pp or t
So ft
Manu al
【例】
#macro
busyloop data
#local
label
MOVW
A, #data
DECW
A
BNE
label
マクロボディ
label:
#endm
busyloop 10
MOVW
/* マクロコール命令 */
A,#10
__00001loop
214
DECW
A
BNE
__00001loop
マクロ展開
CM81-00208-5, September 1, 2014
Support
11.4.3
Soft
Ma nual
#exitm 命令
#exitm 命令は , マクロ展開 , リピート展開に対して強制終了します。
■ #exitm 命令
【記述形式】
#exitm
【説明】
#exitm 命令は , マクロ展開 , リピート展開に対して強制終了します。
■ #exitm 命令の規則
• #exitm 命令は , マクロボディ内でのみ記述できます。
• #exitm 命令は , 条件付きアセンブル命令に対しては意味を持ちません。
• マクロ展開およびリピート展開がネストになっている場合は , #exitm 命令を囲む
もっとも内側の展開処理を終了します。すべての展開を終了するわけではありませ
ん。
• #exitm 命令は , マクロボディにいくつあっても構いません。
【例】
#macro
mac
cnt
NOP
#if
cnt >= 5
マクロボディ
#exitm
#endif
MOV
A,#cnt
mac
4
#endm
/* マクロコール命令 */
NOP
MOV
A, #4
mac
5
NOP
September 1, 2014, CM81-00208-5
マクロ展開
/* マクロコール命令 */
マクロ展開
215
Su pp or t
11.4.4
So ft
Manu al
#endm 命令
マクロ定義の終了を宣言します。
リピート展開も #endm 命令で展開部テキストを終了します。
■ #endm 命令
【記述形式】
#endm
【説明】
マクロ定義の終了を宣言します。
リピート展開も , #endm 命令で展開部テキストを終了します。
したがって , #endm 命令は , #macro 命令または #repeat 命令と常に対になっていなけ
ればなりません。
【例】
#macro
mac
a,b
.DATA
a,b
#endm
#repeat
3
NOP
#endm
NOP
NOP
リピート展開
NOP
216
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
11.5 マクロコール命令
#macro 命令で定義したマクロ名を記述することでマクロ展開を行います。
この機能をマクロコールといい , 特にこのマクロ名をマクロコール命令といいます。
■ マクロコール命令
【記述形式】
マクロコール命令 [ 引数 [, 引数 ]…]
【説明】
#macro 命令で定義したマクロ名を記述することでマクロ展開を行います。
この機能をマクロコールといい , 特にこのマクロ名をマクロコール命令といいま
す。
■ マクロコール命令の規則
• マクロコールするマクロ名を命令フィールドに記述します。
• マクロ命令は , 使用する前にマクロ定義されていなければなりません。
• 引数にカンマ(, )を含める場合は, 括弧()またはアングルブラケット < >で囲みます。
• () で囲んだ場合は , () 自体も引数に含まれます。
• < > で囲んだ場合は , < > 自体は引数に含まれません。
• マクロ定義とマクロコール命令の引数の数は , 一致する必要がありますが , マクロ
コール命令の引数が少ない場合は , 残りの仮引数に空文字が指定されたものとして
処理を行います。
• 引数に空文字を指定したい場合は , カンマ (, ) を続けて書くかアングルブラケットで
単に < > と書きます。
September 1, 2014, CM81-00208-5
217
Su pp or t
So ft
Manu al
11.6 リピート展開
リピート展開は , #repeat 命令と #endm 命令で構成されています。
展開部テキストには , 繰り返し展開したいテキストを記述します。
リピート展開は , #endm 命令の直後 , 繰り返し回数で指定された回数分だけ展開部
テキストを展開します。
■ リピート展開
【記述形式】
#repeat
繰返し回数
展開部テキスト
#endm
繰返し回数 : プリプロセッサ式
【説明】
リピート展開は , #repeat 命令と #endm 命令で構成されています。
展開部テキストには , 繰り返し展開したいテキストを記述します。
リピート展開は , #endm 命令の直後繰り返し回数で指定された回数分だけ展開部テ
キストを展開します。
#repeat 命令から #endm 命令まではマクロ定義と同じ扱いとなります。また , リピー
ト展開もマクロ展開と同じ扱いとなります。
したがって , リスト制御命令でマクロ定義部の出力制御を行うと , このリピート展
開に対しても同様の処理が行われます。
展開部テキストの大きさは最大約 60K バイトです。この大きさを超える展開部テキ
ストは登録できません。
展開部テキストには , #local 命令は記述できません。
【例】
#repeat
1+2
MOVW
A, @A
PUSHW
A
MOVW
A, @A
PUSHW
A
MOVW
A, @A
PUSHW
A
MOVW
A, @A
PUSHW
A
展開部テキスト
マクロ定義と同じ扱い
#endm
218
リピート展開(マクロ定義と同じ扱い)
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ #repeat 命令
【記述形式】
#repeat 繰返し回数
繰返し回数 : プリプロセッサ式
【説明】
#repeat 命令は , 展開部テキストの開始を宣言します。
繰返し回数で指定された回数分だけ展開部テキストを展開します。
■ #repeat 命令の規則
• #repeat 命令は , 必ず #endm 命令で定義を終了しなければなりません。
• 繰返し回数に 0 以下の数字が指定された場合は何も展開されません。
September 1, 2014, CM81-00208-5
219
Su pp or t
So ft
Manu al
11.7 条件付きアセンブル命令
条件によってアセンブルするテキストを選択します。
#if 命令 , #ifdef 命令または #ifndef 命令から , #endif 命令までを #if 節といい , 条件
アセンブルの対象テキストを示します。
■ 条件付きアセンブル命令
【記述形式】
#if 命令 |#ifdef 命令 |#ifndef 命令
テキスト
[#else 命令 |#elif 命令 ]
テキスト
#endif 命令
【説明】
#if 命令 , #ifdef 命令または #ifndef 命令から , #endif 命令までを if 節といい , 条件ア
センブルの対象テキストを示します。
if 節には , #else 命令 , #elif 命令を記述できます。
if 節中に , さらに if 節を記述できます。これを if 節のネストといいます。
条件付きアセンブル命令は次の 6 種類です。
- #if 命令
- #ifdef 命令
- #ifndef 命令
- #elif 命令
- #else 命令
- #endif 命令
220
CM81-00208-5, September 1, 2014
Support
11.7.1
Soft
Ma nual
#if 命令
if 節の開始を宣言します。
条件式が真であれば , 本命令から次の条件付きアセンブル命令までアセンブルされ
ます。
条件式が偽であれば , 本命令から対応する #else 命令 , #elif 命令または #endif 命令
までアセンブルされません。
■ #if 命令
【記述形式】
#if 条件式
条件式 : プリプロセッサ式
【説明】
if 節の開始を宣言します。
条件式は 0 が偽 , 0 以外が真です。
真であれば , 本命令から次の条件付きアセンブル命令までアセンブルされます。
偽であれば , 本命令から対応する #else 命令 , #elif 命令または #endif 命令までアセン
ブルされません。
#if 命令は , #endif 命令で終わります。したがって , #if 命令と #endif 命令は必ず対に
なっていなければなりません。
【例】
#define
ABC
1
#if
ABC == 1
.DATA 0
#endif
/* #if 命令の条件式が真であるため .DATA 0 はアセンブルされます。*/
#if
0
.DATA 100
#endif
/* #if 命令の条件式が偽であるため .DATA 100 はアセンブルされません。*/
September 1, 2014, CM81-00208-5
221
Su pp or t
11.7.2
So ft
Manu al
#ifdef 命令
if 節の開始を宣言します。
マクロ名が定義されていれば真 , 定義されていなければ偽となります。
真であれば , 本命令から次の条件付きアセンブル命令までアセンブルされます。
偽であれば , 本命令から対応する #else 命令 , #elif 命令または #endif 命令までアセ
ンブルされません。
■ #ifdef 命令
【記述形式】
#ifdef マクロ名
【説明】
if 節の開始を宣言します。
マクロ名が定義されていれば真 , 定義されていなければ偽となります。
真であれば , 本命令から次の条件付きアセンブル命令までアセンブルされます。
偽であれば , 本命令から対応する #else 命令 , #elif 命令または #endif 命令までアセン
ブルされません。
#ifdef 命令は , #endif 命令で終わります。したがって , #ifdef 命令と #endif 命令は必
ず対になっていなければなりません。
【例】
#define
ON
#ifdef
ON
.DATA
0
#endif
/* #ifdef 命令のマクロ名 (ON) が定義されているので .DATA 0 は ,
*/
/* アセンブルされます。
*/
#ifdef
OFF
.DATA
100
#endif
222
/* #ifdef 命令のマクロ名 (OFF) は定義されていないので .DATA 100 は ,
*/
/* アセンブルされません。
*/
CM81-00208-5, September 1, 2014
Support
11.7.3
Soft
Ma nual
#ifndef 命令
if 節の開始を宣言します。
マクロ名が定義されていれば偽 , 定義されていなければ真となります。
真であれば , 本命令から次の条件付きアセンブル命令までアセンブルされます。
偽であれば , 本命令から対応する #else 命令 , #elif 命令または #endif 命令までアセ
ンブルされません。
#ifndef 命令は , #ifdef 命令と判定が逆の命令です。
■ #ifndef 命令
【記述形式】
#ifndef マクロ名
【説明】
if 節の開始を宣言します。
マクロ名が定義されていれば偽 , 定義されていなければ真となります。
真であれば , 本命令から次の条件付きアセンブル命令までアセンブルされます。
偽であれば , 本命令から対応する #else 命令 , #elif 命令または #endif 命令までアセン
ブルされません。
#ifndef 命令は , #ifdef 命令と判定が逆の命令です。
#ifndef 命令は , #endif 命令で終わります。したがって , #ifndef 命令と #endif 命令は
必ず対になっていなければなりません。
【例】
#define
ON
#ifndef
ON
.DATA
0
#endif
/* #ifndef 命令のマクロ名 (ON) が定義されているので .DATA 0 は ,
*/
/* アセンブルされません。
*/
#ifndefOFF
.DATA
100
#endif
/* #ifndef 命令のマクロ名 (OFF) は定義されていないので .DATA 100 は , */
/* アセンブルされます。
September 1, 2014, CM81-00208-5
*/
223
Su pp or t
11.7.4
So ft
Manu al
#else 命令
#else 命令は , if 節の中に記述します。
#else 命令は , それまでのアセンブル条件を反転します。
■ #else 命令
【記述形式】
#else
【説明】
#else 命令は , if 節の中に記述します。
#else 命令は , それまでのアセンブル条件を反転します。
if 節開始命令 (#if, #ifdef, #ifndef) の条件が真であった場合 , 逆の偽となり本命令から
は , 対応する #endif 命令までアセンブルされません。
if 節開始命令 (#if, #ifdef, #ifndef) の条件が偽であった場合 , 逆の真となり本命令から
は , 対応する #endif 命令までアセンブルされます。
【例】
#define NUM
#if
3
NUM == 3
.SDATA
"ABC"
.SDATA
"DEF"
/* こちらがアセンブルされます。
*/
.SDATA
"==="
/* こちらがアセンブルされます。
*/
.SDATA
"***"
#else
#endif
#ifdef
NUM
#else
#endif
#ifndef
NUM
.SDATA
"NO"
.SDATA
"OK"
#else
/* こちらがアセンブルされます。
*/
#endif
224
CM81-00208-5, September 1, 2014
Support
11.7.5
Soft
Ma nual
#elif 命令
#elif 命令は , if 節の中に記述します。
#elif 命令は , #else 命令と #if 命令を連続して指定するのと同じ機能です。
したがって , 本命令までアセンブル条件が偽の場合のみ有効になります。
■ #elif 命令
#elif 命令は , if 節の中にいくつでも記述できます。
【記述形式】
#elif 条件式
条件式 : プリプロセッサ式
【説明】
#elif 命令は , if 節の中に記述します。
#elif 命令は , #else 命令と #if 命令を連続して指定するのと同じ機能です。
したがって , 本命令までのアセンブル条件が偽の場合のみ有効になります。
● 本命令までのアセンブル条件が真の場合
本命令から対応する #endif 命令までアセンブルされません。
● 本命令までのアセンブル条件が偽の場合
条件式を判定し再度アセンブル条件を決めます。
真の場合 , 本命令の次から条件付きアセンブル命令までアセンブルされます。
偽の場合 , 本命令から対応する #else 命令 , #elif 命令または #endif 命令までアセンブル
されません。
【例】
#define NUM
3
#if
NUM ==
1
.SDATA
"ABC"
NUM ==
2
.SDATA
"DEF"
NUM ==
3
.SDATA
"GHI"
/* こちらがアセンブルされます。
.SDATA
"==="
/* こちらがアセンブルされます。
NUM ==
3
.SDATA
"***"
#elif
#elif
*/
#endif
#ifdef
#elif
NUM
*/
#endif
September 1, 2014, CM81-00208-5
225
Su pp or t
So ft
Manu al
#ifndef NUM
#elif
.SDATA
"NO"
NUM ==
3
.SDATA
"OK"
/* こちらがアセンブルされます。
*/
#endif
/* 下のように条件が偽しかない場合は , 何もアセンブルされません。 */
#if
#elif
NUM ==
10
.SDATA
"??????"
NUM ==
20
.SDATA
"$$$$$$"
#endif
226
CM81-00208-5, September 1, 2014
Support
11.7.6
Soft
Ma nual
#endif 命令
#endif 命令は , 条件アセンブルの終了を示します。
条件アセンブルがネストしている場合は , もっとも内側の #if, #ifdef, #ifndef 命令に
対して終了します。
■ #endif 命令
【記述形式】
#endif
【説明】
#endif 命令は , 条件アセンブルの終了を示します。
条件アセンブルがネストしている場合は , もっとも内側の #if, #ifdef, #ifndef 命令に
対して終了します。
【例】
#ifndef
_IODEF_
#define
_IODEF_
#define
VER
2
#if
VER ==
1
#define
IOBUFNUM
#elif
VER ==
#define
IOBUFNUM
#elif
VER ==
#define
IOBUFNUM
22
#endif
/* #if VER ==
1 の終わり */
#ifdef
IOCH
#undef
IOCH
#endif
/* #ifdef IOCH の終わり */
#define
IOCH
#endif
/* #ifndef _IODEF_ の終わり */
September 1, 2014, CM81-00208-5
/* アセンブルされます */
/* アセンブルされます */
10
2
15
/* アセンブルされます */
3
4
/* アセンブルされます */
227
Su pp or t
So ft
Manu al
11.8 マクロ名の置換処理
#define 命令はマクロ名を定義します。マクロ名は出現するたびに定義されている文
字に置き換わります。
#set 命令はマクロ名に数値を定義します。式の評価結果が設定されます。
#undef 命令はマクロ名を取り消します。
■ マクロ名の置換処理
テキスト中にマクロ名が出現すると , そのマクロ名に定義されている定義文字の列に
置き換わります。これをマクロ置換といいます。
#define 命令 , #set 命令で定義されたマクロ名はすべてのテキストにおいてマクロ置換
ができます。
■ マクロ置換の規則
仮引数とローカルシンボルの置換処理もこの規則に従います。
次に示すところは , マクロ置換の対象にはなりません。
• プリプロセッサ命令の命令名の部分
• コメントの中の文字
• 文字列の中の文字
【例】
#define
ABC
define
#ABC
NUM
10
#define
MSG
any_string
/* #ABC は , #define とは置換されない */
/* MSG は , any_string とは置換されない
/* MSG */
.SDATA
*/
"MSG" /* .SDATA "MSG" は .SDATA "any_string" とは */
/* 置換されない
*/
• マクロ名はバックスラッシュ (\) を先頭に付けてマクロ名であることを明示できま
す。バックスラッシュ (\) は通常省略できます。
【例】
#define
MD
FPU
#define
SYM
start
.PROGRAM
MD
MD\SYM:
228
/* .PROGRAM FPU と置換
*/
と置換
*/
/* FPU start:
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
• マクロ置換によって置き換えられた文字の列の中にマクロ名が存在する場合は , 再
度マクロ置換を行います。最大 255 回までマクロの置換処理を行います。
【例】
#define
NUM
10
#define
ANUM
(NUM+2)
#define
BNUM
ANUM*3
.DATA
September 1, 2014, CM81-00208-5
BNUM
/* .DATA (10+2)*3 と置換 */
229
Su pp or t
11.8.1
So ft
Manu al
#define 命令
#define 命令は , マクロ名に任意の定義文字の列を定義します。
テキスト中にマクロ名を見つけると , 直ちに定義されている定義文字の列に置き換
えます。
#define 命令には , 引数なし #define 命令と引数付き #define 命令の 2 種類がありま
す。
■ 引数なし #define 命令
【記述形式】
#define マクロ名 定義文字の列
【説明】
引数なしのマクロ名を定義します。
マクロ名には定義文字の列が定義されます。
テキスト中にマクロ名を見つけると直ちに定義されている定義文字の列に置き換
えます。
定義文字の列を省略した場合は , 空文字が定義されます。
#define 命令は , マクロ名に対して一度定義した定義文字の列を変更できません。
【例】
#define
DB
.DATA.B
#define
DW
.DATA.W
DB
0, 2
DW
0xffffffff
■ 引数付き #define 命令
【記述形式】
#define マクロ名 ( 仮引数 [, 仮引数 ]…) 定義文字の列
【説明】
引数付きのマクロ名を定義します。
マクロ名の直後に左括弧 "(" があるとき , 引数付きとなります。マクロ名と左括弧
の間に空白やコメントがあってはなりません。
続いて , 仮引数を指定し最後に右括弧 ")" で閉じます。後は , 定義したい文字を記述
します。
テキスト中にマクロ名を見つけると , まず , 形式のチェックを行い , 仮引数に対応す
る引数に置き換えてからテキストへ展開します。
230
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
引数付きのマクロ置換の形式を次に示します。
マクロ名 ( 引数 , [ 引数 ]…)
引数と仮引数の数は同じでなければなりません。
定義文字の列を省略した場合は , 空文字が定義されます。
#define 命令は , マクロ名に対して一度定義した定義文字の列を変更できません。
【例】
#define
NUM
10
#define
eq(a, b)
a==b
#define
ne(a, b)
a!=b
.DATA
eq(NUM, 10)
/* .DATA (10==10) と置換
*/
.DATA
ne(5, NUM)
/* .DATA (5!=10) と置換
*/
.DATA
eq(ne(5, NUM), 1)
/* .DATA ((5!=10)==1) と置換
*/
September 1, 2014, CM81-00208-5
231
Su pp or t
11.8.2
So ft
Manu al
マクロ仮引数の文字列化 (# 演算子 )
仮引数に対応する引数文字が文字列に置き換わります。
■ マクロ仮引数の文字列化 (# 演算子 )
【記述形式】
# 仮引数
【説明】
# 演算子は , 引数付き #define 命令の定義文字列内でのみ適用されます。
仮引数に対応する引数文字が文字列に置き換わります。
引数文字の前後の空白は削除されて文字列化されます。
【例】
#define
MDL(name)
.SDATA
232
#name
MDL(test)
/* .SDATA "test"と置換*/
CM81-00208-5, September 1, 2014
Support
11.8.3
Soft
Ma nual
マクロ置換の文字の連結 (## 演算子 )
## 演算子は , 前後にある文字を連結します。
■ マクロ置換の文字の連結 (## 演算子 )
【記述形式】
文字 ## 文字
【説明】
## 演算子は , #define 命令の定義文字の列内でのみ適用されます。
マクロ置換において , 定義文字列の中で ## 演算子が記述されたとき , ## 演算子は削
除され ## 演算子の前後にある文字が連結されます。
引数付き #define 命令の場合において , 文字列の中で , 仮引数が ## 演算子の直前ま
たは直後にある場合は , 仮引数に対応する実引数に置き換わり実引数が連結されま
す。
## 演算子で連結された文字はマクロ置換の対象となります。
【例】
#define
abcd
10
#define
val
ab##cd
.DATA
val
val2(x)
x##cd
.DATA
val2(ab)
#define
September 1, 2014, CM81-00208-5
/* .DATA 10 と置換 */
/* .DATA 10 と置換 */
233
Su pp or t
11.8.4
So ft
Manu al
#set 命令
式を評価して , その結果をマクロ名に 10 進定数として定義します。
■ #set 命令
【記述形式】
#set マクロ名 式
式 : プリプロセッサ式
【説明】
式を評価して , その結果をマクロ名に 10 進定数として定義します。
#set 命令は , 同じマクロ名に対して何回でも再設定が可能です。
#define 命令との違いは , #set 命令はマクロ名を変数として利用できます。
【例】
#set
CNT
#repeat
3
#set
1
.DATA
CNT
CNT
CNT+1
.DATA
1
.DATA
2
.DATA
3
#endm
リピート展開
上の例で , #set 命令を #define 命令に置き換えると #define CNT CNT+1 となり , マク
ロ置換の段階で CNT がうまく置換できずエラーとなります。
234
CM81-00208-5, September 1, 2014
Support
11.8.5
Soft
Ma nual
#undef 命令
指定されたマクロ名を取り消します。
■ #undef 命令
【記述形式】
#undef マクロ名
【説明】
指定されたマクロ名を取り消します。
仮引数とローカルシンボルに対しては無効です。
取り消されたマクロ名は , #define 命令で再度定義が可能になります。
【例】
#define
ABC
100*2
.DATA
ABC
#undef
ABC
#define
ABC
"***ABC***"
.SDATA
ABC
September 1, 2014, CM81-00208-5
/* .DATA 100*2 と置換 */
/* .SDATA "***ABC***" と置換 */
235
Su pp or t
11.8.6
So ft
Manu al
#purge 命令
マクロ名を開放します。
■ #purge 命令
【記述形式】
#purge
【説明】
すべてのマクロ名を取り消します。
仮引数とローカルシンボルに対しては無効です。
取り消されたマクロ名は , #define 命令で再度定義が可能になります。
【例】
#define
ABC
100*2
#define
DEF
200*3
.DATA
ABC
/* .DATA 100*2 と置換 */
.DATA
DEF
/* .DATA 200*3 と置換 */
ABC
"***ABC***"
.SDATA
ABC
#purge
#define
236
/* .SDATA "***ABC***" と置換 */
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
11.9 #include 命令
指定されたファイルを読み込み , ソースプログラム内に取り込みます。
■ #include 命令
【記述形式】
#include < ファイル名 >
#include " ファイル名 "
#include ファイル名
【形式 1】
【形式 2】
【形式 3】
【説明】
指定されたファイルを読み込み , ソースプログラム内に取り込みます。
このように #include 命令で読み込まれたファイルをインクルードファイルといいま
す。
インクルードファイル内でさらに #include 命令でファイルを読み込むことができま
す。これをインクルードファイルのネストといいます。
ネストは最大 8 レベルまで可能です。
形式によって , ファイルを検索するディレクトリが違います。
<注意事項>
#include 命令のファイル指定が , 相対形式のファイル指定で記述されている場合は , 現在
のソースファイルのあるディレクトリを基準にファイルを検索します。
■ 形式 1 のファイル検索
形式 1 の場合 , 次の順序でファイルを検索します。
1. 起動時オプション (-I) で指定されたディレクトリを検索
2. 環境変数 "INC896" で指定されているディレクトリを検索
3. 開発環境内のインクルードディレクトリを検索
- %FETOOL%\LIB\896\INCLUDE を検索
September 1, 2014, CM81-00208-5
237
Su pp or t
So ft
Manu al
■ 形式 2 と形式 3 のファイル検索
形式 2 と計式 3 の場合 , 次の順序でファイルを検索します。
1. 記述されているファイル名をそのままアクセス
2. 起動時オプション (-I) で指定されたディレクトリを検索
3. 環境変数 "INC896" で指定されているディレクトリを検索
4. 開発環境内のインクルードディレクトリを検索
- %FETOOL%\LIB\896\INCLUDE を検索
【例】
238
#include
<stdio.h >
#include
"stype.h"
#include
stype.h
#include
<sys\iodef.h >
#include
"..\iodef.h"
#include
\usr\local\iodef.h
CM81-00208-5, September 1, 2014
Support
11.10
Soft
Ma nual
#line 命令
#line 命令は , 次の行の行番号を指定された行番号に変更します。
■ #line 命令
【記述形式】
#line 行番号 [ ファイル名 ]
ファイル名 : 文字列
【説明】
#line 命令は , 次の行の行番号を指定された行番号に変更します。
ファイル名が指定された場合は , ファイル名も変更します。
【例】
#line
1000
"test.asm"
この結果, #line命令の次の行番号は1000になり, ファイル名は"test.asm"になります。
September 1, 2014, CM81-00208-5
239
Su pp or t
11.11
So ft
Manu al
#error 命令
#error 命令は , 指定されたメッセージをエラーとして標準出力へ出力します。
#error 命令以降の処理は行いません。
■ #error 命令
【記述形式】
#error エラーメッセージ
【説明】
#error 命令は , 指定されたメッセージをエラーとして標準出力へ出力します。
#error 命令以降の処理は行いません。
【例】
#error
240
Test program miss!
CM81-00208-5, September 1, 2014
Support
11.12
Soft
Ma nual
#pragma 命令
#pragma 命令は , 何も処理を行いません。
■ #pragma 命令
【記述形式】
#pragma 文字の列
【説明】
#pragma 命令は , C 言語のプリプロセッサとの互換のために用意されています。
しかし , アセンブラには意味のない命令なので , アセンブラでは何も処理を行いま
せん。
September 1, 2014, CM81-00208-5
241
Su pp or t
11.13
So ft
Manu al
空命令
空命令は , 何も処理を行いません。
■ 空命令
【記述形式】
#
【説明】
"#" の後ろに改行のみある場合 , 空命令となります。
空命令は , 何も処理を行いません。
【例】
#
#
#
.SECTION
CODE
:
242
CM81-00208-5, September 1, 2014
Support
11.14
Soft
Ma nual
既定義マクロ名
あらかじめ予約されているマクロ名です。
既定義マクロ名は , #undef 命令で取り消すことはできません。
■ 既定義マクロ名
● __LINE__
現在のソース行の行番号の値を 10 進定数に置換します。
【例】現在のソース行が , 101 行目の場合
.DATA __LINE__
/* .DATA 101 と置換 */
● __FILE__
現在のソースファイル名を文字列に置換します。
【例】現在のソースファイル名が , "t1.asm" の場合
.SDATA __FILE__
/* .SDATA "t1.asm" と置換 */
● __DATE__
アセンブルされた日付を次の形式に置換します。
"Mmm dd yyyy"
Mmm は月名の省略形 , dd は日 , yyyy は西暦を示します。
【例】1966 年 8 月 7 日にアセンブルした場合
.SDATA __DATE__
/* .SDATA "Aug
7 1966" と置換 */
● __TIME__
アセンブルされた時刻を次の形式に置換します。
"hh:mm:ss"
hh は時 , mm は分 , ss は秒を示します。
【例】12 時 34 分 56 秒にアセンブルした場合
.SDATA __TIME__
/* .SDATA "12:34:56" と置換 */
● __FASM__
10 進定数 1 に置換します。
【例】
.DATA __FASM__
/* .DATA 1 と置換 */
● __CPU_8L__
10 進定数 1 に置換します。
F2MC-8L ファミリのみ有効です。
September 1, 2014, CM81-00208-5
243
Su pp or t
So ft
Manu al
● __CPU_8FX__
10 進定数 1 に置換します。
F2MC-8FX ファミリのみ有効です。
■ defined マクロ名
● defined( マクロ名 )
すでにマクロ名が定義されている場合は , 10 進定数の 1 に , 定義されていなければ , 10
進定数の 0 に置き換えます。
【例】
.DATA defined(ABC)
/* .DATA 0 と置換 */
#define ABC
.DATA defined(ABC)
244
/* .DATA 1 と置換 */
CM81-00208-5, September 1, 2014
Support
11.15
Soft
Ma nual
C 言語プリプロセッサとの違い
本アセンブラのプリプロセッサと C 言語プリプロセッサの違いについて説明します。
■ C 言語プリプロセッサとの違い
本アセンブラのプリプロセッサにあり , C 言語プリプロセッサにはない機能は次の 8 種
類です。
• #macro 命令
• #local 命令
• #exitm 命令
• #endm 命令
• #repeat 命令
• #set 命令
• #purge 命令
• __FASM__ 既定義マクロ
また , 本アセンブラのプリプロセッサと C 言語プリプロセッサで仕様の違う機能は次
の 1 種類です。
• #pragma 命令
- 本アセンブラのプリプロセッサ : 何も処理をしません。
- C 言語プリプロセッサ :『C 言語マニュアル』を参照してください。
September 1, 2014, CM81-00208-5
245
Su pp or t
246
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第 12 章
アセンブラ擬似機械命令
本アセンブラでは , アセンブラ擬似機械命令を記述
できます。
アセンブラ擬似機械命令とは , MCU の持つ命令を
組み合わせることによって , 1 つの機械命令のよう
に記述できる命令です。
この章では , アセンブラ擬似機械命令の各記述形式
とその機能について説明します。
12.1 F2MC-8L/8FX ファミリ用アセンブラ擬似機械命令
September 1, 2014, CM81-00208-5
247
Su pp or t
So ft
Manu al
12.1 F2MC-8L/8FX ファミリ用アセンブラ擬似機械命令
F2MC-8L/8FX ファミリ用アセンブラ擬似機械命令として , 3 種類の命令を記述でき
ます。
また , 分岐先までの距離を計算し最適なコードを配置する分岐命令として , 次の種類
の命令を記述できます。
■ F2MC-8L/8FX ファミリ用アセンブラ擬似機械命令
F2MC-8L/8FX ファミリ用アセンブラ擬似機械命令として , 次の種類の命令を記述でき
ます。
• 分岐系擬似機械命令
• 演算系擬似機械命令
• その他の擬似機械命令
また , 分岐先までの距離を計算して最適なコードを配置する分岐命令として , 次の種類
の命令を記述できます。
• 最適配置分岐擬似機械命令
248
CM81-00208-5, September 1, 2014
Support
12.1.1
Soft
Ma nual
分岐系擬似機械命令
分岐系擬似機械命令として , 次の命令を記述できます。
BV, BNV, BLE, BGT, BLS, BHI
■ 分岐系擬似機械命令
分岐系擬似機械命令として , 表 12.1-1 に示す命令を記述できます。
表 12.1-1 分岐系擬似機械命令
記述形式
条件
展開
備考
BV
label
V=1 で分岐
BN
BLT
JMP
BGE
$+7
label
$+5
label
次の命令のアドレスか
ら -128 ~ 122 バイト
の範囲で分岐可能
BNV
label
V=0 で分岐
BN
BGE
JMP
BLT
$+7
label
$+5
label
次の命令のアドレスか
ら -128 ~ 122 バイト
の範囲で分岐可能
BLE
label
(ZorNorV)=1で分岐
BEQ
BLT
label
label
次の命令のアドレスか
ら -128 ~ 125 バイト
の範囲で分岐可能
BGT
label
(ZorNorV)=0で分岐
BEQ
BGE
$+4
label
次の命令のアドレスか
ら -128 ~ 127 バイト
の範囲で分岐可能
BLS
label
(ZorN)=1 で分岐
BEQ
BLO
label
label
次の命令のアドレスか
ら -128 ~ 125 バイト
の範囲で分岐可能
BHI
label
(ZandN)=0
BEQ
BHS
$+4
label
次の命令のアドレスか
ら -128 ~ 127 バイト
の範囲で分岐可能
September 1, 2014, CM81-00208-5
249
Su pp or t
12.1.2
So ft
Manu al
演算系擬似機械命令
演算系擬似機械命令として , 次の命令を記述できます。
NOTA, TESTA
■ 演算系擬似機械命令
演算系擬似機械命令として , 表 12.1-2 に示す命令を記述できます。
表 12.1-2 演算系擬似機械命令
記述形式
250
フラグ変化
展開
備考
NOTA
Z, N
XOR A, #0FFH
A,T 動作は行われません
TESTA
Z, N, V, C
CMP A, #00H
アキュムレータの内容が
0 か判定します
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
その他の擬似機械命令
12.1.3
その他の擬似機械命令として , 次の命令を記述できます。
PUSHAT, POPAT, SETRP, SETRPA, SETDB, SETDBA
■ その他の擬似機械命令
その他の擬似機械命令として , 表 12.1-3 に示す命令を記述できます。
表 12.1-3 その他の擬似機械命令 (1 / 2)
記述形式
フラグ変化
展開
PUSHAT
PUSHW A
XCHW A, T
PUSHW A
POPAT
POPW
XCHW
POPW
SETRP
#imm
備考
この命令の実行後は A と T の内容
は入れ替わります
A
A, T
A
【F2MC-8L ファミリ】
MOVW A, PS
MOVW A, #07FFH
ANDW A
MOVW A, #(imm < <11)
ORW
A
MOVW PS, A
この命令では A と T の内容は保存
されません。
この命令は F2MC-8L ファミリと
F2MC-8FX ファミリで展開が異なり
ます。
【F2MC-8FX ファミリ】
MOV
A, 0x78
AND
A, #3
OR
A, #(imm < < 3)
MOV
0x78, A
September 1, 2014, CM81-00208-5
251
Su pp or t
So ft
Manu al
表 12.1-3 その他の擬似機械命令 (2 / 2)
記述形式
SETRPA
フラグ変化
展開
【F2MC-8L ファミリ】
MOVW A, #001FH
ANDW A
PUSHW A
MOVW A, PS
MOVW A, #07FFH
ANDW A
XCHW A, T
POPW A
CLRC
ROLC
A
ROLC
A
ROLC
A
SWAP
ORW
A
MOVW PS, A
備考
この命令では A と T の内容は保存
されません。
この命令は F2MC-8L ファミリと
F2MC-8FX ファミリで展開が異なり
ます。
【F2MC-8FX ファミリ】
CLRC
ROLC
A
ROLC
A
ROLC
A
MOV
A, 0x78
AND
A, #3
OR
A
MOV
0x78, A
252
SETDB #imm
MOV
AND
OR
MOV
A, 0x78
A, #0xF8
A, #(imm & 7)
0x78, A
この命令では A と T の内容は保存
されません。
この命令は F2MC-8FX ファミリで
のみ有効です。
SETDBA
AND
MOV
AND
OR
MOV
A, #7
A, 0x78
A, #0xF8
A
0x78, A
この命令では A と T の内容は保存
されません。
この命令は F2MC-8FX ファミリで
のみ有効です。
CM81-00208-5, September 1, 2014
Support
12.1.4
Soft
Ma nual
最適配置分岐擬似機械命令
最適配置分岐擬似機械命令は , 分岐先までの距離を計算し , 相対分岐が可能であるか
の判断を行い , 最適なコードを配置する擬似機械命令です。
最適配置分岐擬似機械命令として , 次の命令を記述できます。
Bcc16
■ 最適配置分岐擬似機械命令
最適配置分岐擬似機械命令は , 分岐先までの距離を計算し , 相対分岐が可能であるかの
判断を行い , 最適なコードを配置する擬似機械命令です。
最適配置分岐擬似機械命令として , 表 12.1-4 に示す命令を記述できます。
表 12.1-4 最適配置分岐擬似機械命令 (1 / 3)
分岐拡張命令
BZ16
BNZ16
BEQ16
BNE16
BC16
BNC16
BLO16
BHS16
September 1, 2014, CM81-00208-5
label
label
label
label
label
label
label
label
動作
(Z)=1 なら分岐
(Z)=0 なら分岐
(Z)=1 なら分岐
(Z)=0 なら分岐
(C)=1 なら分岐
(C)=0 なら分岐
(C)=1 なら分岐
(C)=0 なら分岐
距離
-128 ~ +127
生成される命令
BZ
label
その他
BNZ
JMP
$+5
label
-128 ~ +127
BNZ
label
その他
BZ
JMP
$+5
label
-128 ~ +127
BEQ
label
その他
BNE
JMP
$+5
label
-128 ~ +127
BNE
label
その他
BEQ
JMP
$+5
label
BC
label
その他
BNC
JMP
$+5
label
-128 ~ +127
BNC
label
その他
BC
JMP
$+5
label
-128 ~ +127
BLO
label
その他
BHS
JMP
$+5
label
-128 ~ +127
BHS
label
その他
BLO
JMP
$+5
label
-128 ~ +127
253
Su pp or t
So ft
Manu al
表 12.1-4 最適配置分岐擬似機械命令 (2 / 3)
分岐拡張命令
BN16
BP16
BLT16
BGE16
BBC16
BBS16
BV16
BNV16
BLE16
254
label
label
label
label
bit, label
bit, label
label
label
label
動作
(N)=1 なら分岐
(N)=0 なら分岐
(V)xor(N)=1 なら分岐
(V)xor(N)=0 なら分岐
(bit)=0 なら分岐
(bit)=1 なら分岐
(V)=1 なら分岐
(V)=0 なら分岐
(Z)or((N)or(V))=1
なら分岐
距離
生成される命令
-128 ~ +127
BN
label
その他
BP
JMP
$+5
label
BP
label
その他
BN
JMP
$+5
label
-128 ~ +127
BLT
label
その他
BGE
JMP
$+5
label
-128 ~ +127
BGE
label
その他
BLT
JMP
$+5
label
-128 ~ +127
BBC
label
その他
BBS
JMP
$+6
label
-128 ~ +127
BBS
label
その他
BBC
JMP
$+6
label
-128 ~ +122
BN
BLT
JMP
BGE
$+7
label
$+5
label
その他
BN
BGE
JMP
BLT
JMP
$+7
$+10
label
$+5
label
-128 ~ +122
BN
BGE
JMP
BLT
$+7
label
$+5
label
その他
BN
BLT
JMP
BGE
JMP
$+7
$+10
label
$+5
label
-128 ~ +125
BEQ
BLT
label
label
その他
BEQ
BGE
JMP
$+4
$+5
label
-128 ~ +127
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
表 12.1-4 最適配置分岐擬似機械命令 (3 / 3)
分岐拡張命令
BGT16
BLS16
BHI16
September 1, 2014, CM81-00208-5
label
label
label
動作
(Z)or((N)or(V))=0
なら分岐
(Z)or(C)=1 なら分岐
(Z)or(C)=0 なら分岐
距離
生成される命令
-128 ~ +127
BEQ
BGE
$+4
label
その他
BEQ
BLT
JMP
$+7
$+5
label
-128 ~ +125
BEQ
BLO
label
label
その他
BEQ
BHS
JMP
$+4
$+5
label
-128 ~ +127
BEQ
BHS
$+4
label
その他
BEQ
BLO
JMP
$+7
$+5
label
255
Su pp or t
256
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
第 13 章
構造化命令
構造化命令は , 構造化プログラミングを行うために
用意された命令です。
この章では , 構造化命令について説明します。
13.1 構造化命令の概要
13.2 構造化プログラム命令
13.3 式 ( 代入式 , 代入演算式 , インクリメント / デクリメン
ト式 )
September 1, 2014, CM81-00208-5
257
Su pp or t
So ft
Manu al
13.1 構造化命令の概要
構造化命令は , 構造化プログラミングを行うために用意された命令です。
■ 構造化命令の概要
構造化命令は , 構造化プログラミングを行うために用意された命令です。
【例】
.program
"Sample_for_8L"
.import
func
.import
para1
.section
segment1, code
.(R0 = #0)
// 代入式
func1:
.while (R0
<= #10)
.(para1 < <= #1)
CALL
// 構造化プログラム命令
// 代入演算式
func
.(R0++)
// インクリメント式
.endw
ret
.end
258
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
13.2 構造化プログラム命令
構造化プログラム命令には , 2 処理選択 , 多処理選択 , 計算型繰返し , 終了条件型繰
返し , および実行条件型繰返しの 5 つの制御構文命令と , ブレイク , コンティニュー
の 2 つの制御移行命令があります。
構造化プログラム命令の一覧を表 13.2-1 に示します。
■ 構造化プログラム命令の概要
構造化プログラム命令には , 2 処理選択 , 多処理選択 , 計算型繰返し , 終了条件型繰返し ,
および実行条件型繰返しの 5 つの制御構文命令と , ブレイク , コンティニューの 2 つの
制御移行命令があります。
構造化プログラム命令の一覧を表 13.2-1 に示します。
表 13.2-1 構造化プログラム命令一覧
構造化プログラム命令
用途
.if
.else
2 処理選択
.endif
.switch
.case
多処理選択
.default
.endsw
.for
計算型繰返し
.endf
.repeat
終了条件型繰返し
.until
.while
実行条件型繰返し
.endw
.break
ブレイク
.continue
コンティニュー
September 1, 2014, CM81-00208-5
259
Su pp or t
13.2.1
So ft
Manu al
構造化プログラム命令の条件式
構造化プログラム命令は , プログラム制御のための条件式が記述できます。
■ 構造化プログラム命令の条件式
条件式には , コンディションコード条件式 , 比較条件式 , ビット条件式の 3 つの条件式
が用意されています。
また , 前述の 3 つの条件式を最大 8 個まで組み合わせた複合条件式を記述できます。
● コンディションコード条件式
コンディションコード条件式は , CPU のコンディションを表すビットを基本にコン
ディションコードが用意されています。
コンディションコードは , 両端をアングルブラケット ( < >) で囲みます。
コンディションコード条件式で使用可能な条件式を表 13.2-2 に示します。
表 13.2-2 コンディションコード条件式で使用可能な条件式
Z(EQ)
Z==1
NZ(NE)
Z==0
C(LO)
C==1
NC(NS)
C==0
N
N==1
P
N==0
V
V==1
NV
V==0
LT
(VorN)==1
GE
(VorN)==0
LE
((VxorN)orZ)==1
GT
((VxorN)orZ)==0
LS
(CorZ)==1
HI
(CorZ)==0
【例】
.if ( <ne >)
mov
a, r1
.else
mov
a, r2
.endif
260
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
● 比較条件式
比較条件式は , 2 つのオペランドをもち , その比較結果により設定される CPU のコン
ディションを元に判定されます。
比較条件式で使用可能な条件式を表 13.2-3 に示します。
表 13.2-3 比較条件式で使用可能な条件式
==
等しい
!=
等しくない
<
小さい
<=
小さいか等しい
>
大きい
>=
大きいか等しい
<, <=, >, >= の比較条件で , 符号なし比較を行う場合には , 比較式に .u を付加します。
比較条件式のオペランドに記述可能な項を , 表 13.2-4 に示します。
表 13.2-4 比較条件式に記述可能なオペランド
左項
右項
A
[email protected][email protected]+off/Ri
@EP
@IX+off
#d8
Ri
【例】
.if (A <= #0)
call
func
.endif
● ビット条件式
ビット条件式は , オペランドのビット状態を判定に使用します。
ビット状態が 1 のときに条件が成立し , 0 のときには条件が不成立と判定します。
"!" を付加すると論理の反転を行います。
【例】
.while (bit_flag)
call
func
.endw
September 1, 2014, CM81-00208-5
261
Su pp or t
So ft
Manu al
● 複合条件式
複合条件式は , 前述の 3 つの条件式を最大 8 個まで組み合わせて , 論理和 (||) または論
理積 ( & &) を判定条件にします。
ビット条件式の後にコンディションコード条件式を用いる場合は , ビット条件式でゼ
ロフラグ (Z) が更新されるので , 注意が必要です。
複合条件式の複合条件は , 論理和と論理積の混在はできません。
複合条件式が使用可能な構造化プログラム命令は次の 3 つです。
• 2 処理選択構文 (.if 構文 )
• 終了条件型繰返し構文 (.repeat 構文 )
• 実行条件型繰返し構文 (.while 構文 )
【例】
.while (bit_flag1
call
& & bit_flag2)
func
.endw
262
CM81-00208-5, September 1, 2014
Support
13.2.2
Soft
Ma nual
構造化プログラム命令での生成規則
構造化プログラム命令で生成されるシンボルと命令文の生成規則について説明しま
す。
■ シンボルの生成規則
構造化プログラム命令では , 次のようにシンボルを生成します。
構造化プログラム命令
シンボル形式
2 処理選択 (.if)
__Innnnn
多処理選択 (.switch)
__Snnnnn
計算型繰返し (.for)
__Fnnnnn
終了条件型繰返し (.repeat)
__Rnnnnn
実行条件型繰返し (.while)
__Wnnnnn
2 個のアンダバー '__' で始まり 5 桁の数値 (10 進数 ) が続きます。
この 5 桁の数値は , シンボルが生成されるたびに 1 つ値が加算され , 00001 ~ 65535 ま
での値を生成します。
■ 命令文の生成規則
構造化プログラム命令により生成される機械命令は , 次に示すように , 構造化プログラ
ム命令のネストに関係なく 1 個のタブコードを前置して生成されます。
機械命令とオペランドの間にも 1 個のタブコードを出力します。
タブコード
機械命令
タブコード
オペランド
改行コード
シンボルを定義する場合には , シンボルにコロン ':' を付加し , シンボルだけを行の第 1
カラム目から生成します。
生成シンボル名 :
September 1, 2014, CM81-00208-5
263
Su pp or t
So ft
Manu al
構造化プログラム命令の記述形式
13.2.3
構造化プログラム命令の基本的な記述形式について説明します。
各構造化プログラム命令の詳細については , 「13.2.4 2 処理選択構文」~「13.2.9
制御移行命令」を参照してください。
■ 構造化プログラム命令の記述形式
【記述形式】
. 命令 ( 条件式 )
【説明】
● 命令
.if, .while などの構造化プログラム命令を記述します。
'. 命令 ' で 1 つの命令です。ピリオド (.) と命令を切り離して記述できません。
各構造化プログラム命令の詳細については , 「13.2.4 2 処理選択構文」~「13.2.9 制御
移行命令」を参照してください。
● 条件式
コンディションコード条件式 , 比較条件式およびビット条件式のいずれかを記述しま
す。
■ 条件式の記述形式
● コンディションコード条件式
( < コンディションコード >)
● 比較条件式
(op1 比較式 op2)
● ビット条件式
([!]op1)
"!" を付加すると , 論理の反転 (0 で条件成立 ) を行います。
264
CM81-00208-5, September 1, 2014
Support
13.2.4
Soft
Ma nual
2 処理選択構文
2 処理選択構文は , 条件式が真の場合には処理 1 が実行され , 条件式が偽の場合には
処理 2 が実行される命令を生成します。
条件式には , コンディションコード条件式 , 比較条件式およびビット条件式が記述で
きます。
■ 2 処理選択構文
【記述形式】
.if ( 条件式 )
処理 1
[.else]
処理 2
.endif
【説明】
2 処理選択構文は , 条件式が真の場合には処理 1 が実行され , 条件式が偽の場合には
処理 2 が実行される命令を生成します。
条件式には , コンディションコード条件式 , 比較条件式 , ビット条件式が記述できま
す。
【例】
.if
mov
( <ne >)
BEQ16
__I00001
a, r0
mov
a, r0
JMP
__I00002
.else
__I00001:
mov
.endif
September 1, 2014, CM81-00208-5
a, r1
mov
a, r1
__I00002:
265
Su pp or t
13.2.5
So ft
Manu al
多処理選択構文
多処理選択構文は , switch オペランドと case オペランドの比較を行い , 等しい場合
には該当する .case 以降に記述された処理を実行し , 異なる場合には次に記述され
ている .case 文の比較を行う命令を生成します。
.case 文は任意の回数記述可能です。
多処理選択構文から抜けるには .break 文を使用します。
■ 多処理選択構文
【記述形式】
.switch ( オペランド 1)
.case ( オペランド n)
処理
[.break]
[.default]
処理
.endsw
【説明】
多処理選択構文は , switch オペランド ( オペランド 1) と case オペランド ( オペラン
ド n) の比較を行い , 等しい場合には該当する .case 以降に記述された処理を実行し ,
異なる場合には次に記述されている .case 文の比較を行う命令を生成します。
.case 文は任意の回数記述可能です。
多処理選択構文から抜けるには , .break 文を使用します。
各オペランドに記述可能な項を表 13.2-5 に示します。
表 13.2-5 オペランドに記述可能な項
switch オペランド
case オペランド
A
[email protected][email protected]+off/Ri
dir
@EP
#d8
@IX+off
Ri
266
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
【例】
.switch (A)
.case (#0)
mov
a, r0
.break
.case (#1)
a, r1
.break
.default
BNE16
__S00002
mov
a, r0
JMP
__S00001
CMP
A, #1
BNE16
__S00003
mov
a, r1
JMP
__S00001
mov
a, r0
__S00003:
mov
September 1, 2014, CM81-00208-5
A, #0
__S00002:
mov
.endsw
CMP
a, r0
__S00001:
267
Su pp or t
13.2.6
So ft
Manu al
計算型繰返し構文
計算型繰返し構文は , 条件が成立する間 , 処理を繰り返し実行する命令を生成しま
す。
カウンタの増減方向は , op4 の符号により指定します。
最初から条件が成立していない場合 , 処理は実行されません。
条件は , op1 と op3 の比較で判定されます。
■ 計算型繰返し構文
【記述形式】
.for (op1=op2, 比較式 op3, [{+|-}]op4)
処理
.endf
【説明】
計算型繰返し構文は , 条件が成立する間 , 処理を繰り返し実行する命令を生成しま
す。
カウンタの増減方向は , op4 の符号により指定します。符号を省略すると増分方向
になります。
最初から条件が成立していない場合 , 処理は実行されません。
条件は , op1 と op3 の比較で判定されます。
各オペランドに記述可能な項を表 13.2-6 に示します。
表 13.2-6 オペランドに記述可能な項
op1
A
op2
op3
dir
#d8
@EP
@IX+off
Ri
@A
dir
#d8
@EP
@IX+off
Ri
#d8
#d8
dir
@EP
op4
dir
#d8
@EP
@IX+off
Ri
@IX+off
Ri
268
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
【例】
.for
(A=#0, <=.u #255, +1)
MOV
A, #0
JMP
__F00001
__F00002:
incw
.endf
ep
incw
ep
__F00003:
ADDC
A, #1
__F00001:
CMP
A, #255
BHI16
__F00001
__F00004:
September 1, 2014, CM81-00208-5
269
Su pp or t
13.2.7
So ft
Manu al
終了条件型繰返し構文
終了条件型繰返し構文は , 条件が成立するまで処理を繰り返し実行する命令を生成
します。
条件式には , コンディションコード条件式 , 比較条件式およびビット条件式が記述で
きます。
終了条件型繰返し構文では , 処理を実行後に条件の判定を行うため , 最初から条件が
成立する場合でも , 必ず 1 度は処理が実行されます。
■ 終了条件型繰返し構文
【記述形式】
.repeat
処理
.until ( 条件式 )
【説明】
終了条件型繰返し構文は , 条件が成立するまで処理を繰り返し実行する命令を生成
します。
条件式には , コンディションコード条件式 , 比較条件式およびビット条件式が記述
できます。
終了条件型繰返し構文では , 処理を実行後に条件の判定を行うため , 最初から条件
が成立する場合でも , 必ず 1 度は処理が実行されます。
【例】
.repeat
__R00001:
decw
.until ( <eq >)
ep
decw
ep
__R00002:
BNE16
__R00001
__R00003:
270
CM81-00208-5, September 1, 2014
Support
13.2.8
Soft
Ma nual
実行条件型繰返し構文
実行条件型繰返し構文は , 条件が成立する間 , 処理を繰り返し実行する命令を生成し
ます。
条件式には , コンディションコード条件式 , 比較条件式およびビット条件式が記述で
きます。
実行条件型繰返し構文では , 条件の判定後に処理の実行を行うため , 最初から条件が
成立しない場合は , 1 度も処理は実行されません。
■ 実行条件型繰返し構文
【記述形式】
.while ( 条件式 )
処理
.endw
【説明】
実行条件型繰返し構文は , 条件が成立する間 , 処理を繰り返し実行する命令を生成
します。
条件式には , コンディションコード条件式 , 比較条件式およびビット条件式が記述
できます。
実行条件型繰返し構文では , 条件の判定後に処理の実行を行うため , 最初から条件
が成立しない場合は , 1 度も処理は実行されません。
【例】
.while ( <le >)
JMP
_W00002
__W00001:
incw
.endw
ep
incw
ep
__W00002:
BLE16
_W00001
__W00003:
September 1, 2014, CM81-00208-5
271
Su pp or t
13.2.9
So ft
Manu al
制御移行命令
制御移行命令は , 構文から脱出したり , 繰返し構文の繰返し制御に移行する場合に使
用します。
.break 命令は , その記述が含まれる最も内側の構文から脱出します。
.continue 命令は , その記述が含まれる最も内側の繰返し構文の繰返しへ制御を移行
します。
■ .break 命令
【記述形式】
.break
【説明】
.break 命令は , その記述が含まれる最も内側の構文から脱出します。
多処理選択構文および各種繰返し構文で使用できます。
【例】
.while ( <le >)
JMP
__W00002
__W00001:
incw
incw
ep
.if ( <ne >)
BEQ16
__I00001
.break
JMP
__W00003
.endif
.endw
ep
__I00001:
__W00002:
BLE16
__W00001
__W00003:
272
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ .continue 命令
【記述形式】
.continue
【説明】
.continue 命令は , その記述が含まれる最も内側の繰返し構文の繰返し制御に移行し
ます。
各種繰返し構文で使用できます。
【例】
.while ( <le >)
JMP
__W00002
__W00001:
incw
ep
.if ( <ne >)
.continue
.else
incw
ep
BEQ16
__I00001
JMP
__W00002
JMP
__I00002
__I00001:
.break
.endif
.endw
JMP
__W00003
__I00002:
__W00002:
BLE16
__W00001
__W00003:
September 1, 2014, CM81-00208-5
273
Su pp or t
So ft
Manu al
13.3 式 ( 代入式 , 代入演算式 , インクリメント / デクリメント
式)
本アセンブラでは , 構造化プログラム命令に加えて , 式を使用できます。
式には , 代入式・代入演算式・インクリメント / デクリメント式があります。
■ 式の概要
本アセンブラでは , 構造化プログラム命令に加えて , 式を使用できます。
式の種類を表 13.3-1 に示します。
表 13.3-1 式の種類
代入式
右項を左項に代入する式です。
代入演算式
右項と左項で演算を行い , 結果を右項に代入する式です。
インクリメント /
デクリメント式
項の値に 1 を加算または減算し , 項の値とする式です。
使用可能な式の一覧を表 13.3-2 に示します。
表 13.3-2 式の一覧
式
用途
.(op1 = op2)
代入式
.(op1 += op2)
.(op1 -= op2)
.(op1 *= op2)
.(op1 /= op2)
.(op1 %= op2)
代入演算式
.(op1 &= op2)
.(op1 |= op2)
.(op1 ^= op2)
.(op1 < <= op2)
.(op1 > >= op2)
274
.(op++)
インクリメント式
.(op--)
デクリメント式
CM81-00208-5, September 1, 2014
Support
13.3.1
Soft
Ma nual
式の記述形式
式の基本的な記述形式について説明します。
各式の詳細については , 「13.3.2 代入式」~「13.3.4 インクリメント / デクリメン
ト式」を参照してください。
■ 式の記述形式
【記述形式】
.( 式 )
【説明】
式には , 代入式 , 代入演算式 , インクリメント式およびデクリメント式のいずれかを
記述します。
式は , 必ずピリオド (.)+ 括弧 '(' で始まり括弧 ')' で閉じられている必要があります。
各式の詳細については , 「13.3.2 代入式」から「13.3.4 インクリメント / デクリメ
ント式」を参照してください。
September 1, 2014, CM81-00208-5
275
Su pp or t
13.3.2
So ft
Manu al
代入式
代入式は , 右項から左項への代入を行う命令を生成します。
同じデータサイズで代入を行う場合には , 複数 ( 最大 8 個まで ) への代入処理が一度
に記述できます。この場合 , 16 ビット代入と 8 ビット代入の混在はできません。
16 ビットレジスタへ 8 ビット代入を行った場合 , 上位 8 ビットは不定です。
■ 代入式
【記述形式】
.(op1[. データサイズ ] = op2[. データサイズ ] = … = op9)
データサイズ :{b|w}
【説明】
代入式は , 右項から左項への代入を行う命令を生成します。
同じデータサイズで代入を行う場合には , 複数 ( 最大 8 個まで ) への代入処理が一
度に記述できます。
複数への代入処理を一度に記述した場合 , 16 ビット代入と 8 ビット代入の混在はで
きません。
16 ビットレジスタへ 8 ビット代入を行った場合 , 上位 8 ビットは不定です。
【例】
.(R0=R1=#0)
MOV
A, #0
MOV
R1, A
MOV
R0, A
■ デフォルトデータサイズ
代入を行う場合 , 代入先によりデフォルトのデータサイズが異なります。
代入先とデフォルトデータサイズの関係を表 13.3-3 に示します。
表 13.3-3 代入式の代入先とデフォルトデータサイズの関係
276
代入先
データサイズ
EP, IX, PS, SP
16 ビット
その他
8 ビット
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ 項に記述可能な種類
代入式の項には , アセンブラのオペランドに記述可能なレジスタやシンボルなど , ほと
んどのものが記述できます。
ただし , 代入先と代入元に同じものを記述できません。
記述できる項の種類を表 13.3-4 に示します。
表 13.3-4 代入式に記述可能な項
8 ビット代入
項
代入先
代入元
レジスタ
A, T, R0 ~ R7, EP, IX, PS, SP*
A, T, R0 ~ R7, EP, IX, PS, SP*
レジスタ間接
@A*, @IX+offset, @EP
@A*, @IX+offset, @EP
アドレス
シンボル , アドレス値
シンボル , アドレス値
即値
# 数値 , # シンボル
16 ビット代入
レジスタ
A, T, EP, IX, PS, SP*
A, T, EP, IX, PS, SP*
レジスタ間接
@A*, @IX+offset, @EP
@A*, @IX+offset, @EP
アドレス
シンボル , アドレス値
シンボル , アドレス値
即値
# 数値 , # シンボル
* 印のついているものは , 複数代入記述には使用できません。
September 1, 2014, CM81-00208-5
277
Su pp or t
13.3.3
So ft
Manu al
代入演算式
代入演算式は , 右項と左項の演算結果を左項への代入を行う命令を生成します。
■ 代入演算式
【記述形式】
.(op1[. データサイズ ] 代入演算記号 op2)
データサイズ :{b|w}
【説明】
代入演算式は , 右項と左項の演算結果を左項への代入を行う命令を生成します。
代入演算記号として記述できるものを表 13.3-5 に示します。
表 13.3-5 使用可能な代入演算子
演算子
算術演算
論理演算
8ビット代入演算
16ビット代入演算
+=
+=
-=
-=
*=
*=
符号なし演算です
/=
符号なし演算です
%=
符号なし演算です
&=
&=
|=
|=
^=
^=
< <=
右項は #1 ~ #7 の即値です
> >=
右項は #1 ~ #7 の即値です
シフト演算
278
備考
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ デフォルトデータサイズ
代入演算を行う場合 , 左項によりデフォルトのデータサイズが異なります。
左項とデフォルトデータサイズの関係を表 13.3-6 に示します。
表 13.3-6 代入演算式の左項とデフォルトデータサイズの関係
代入先
データサイズ
EP, IX
16 ビット
その他
8 ビット
■ 項に記述可能な種類
代入演算式の項には , アセンブラのオペランドに記述可能なレジスタやシンボルなど ,
ほとんどのものが記述できます。
記述できる項の種類を表 13.3-7 に示します。
表 13.3-7 代入演算式に記述可能な項
8 ビット代入
項
左項
右項
レジスタ
A, T, R0 ~ R7, EP, IX
A, T, R0 ~ R7, EP, IX
レジスタ間接
@A, @IX+offset, @EP
@A, @IX+offset, @EP
アドレス
シンボル , アドレス値
シンボル , アドレス値
即値
# 数値 , # シンボル
16 ビット代入
レジスタ
A, T, EP, IX
A, T, EP, IX
レジスタ間接
@A, @IX+offset, @EP
@A, @IX+offset, @EP
アドレス
シンボル , アドレス値
シンボル , アドレス値
即値
September 1, 2014, CM81-00208-5
# 数値 , # シンボル
279
Su pp or t
So ft
Manu al
■ 記述例
.(@IX-0 += @IX-1)
.(_sym -= _sym+1)
CLRC
MOV
A, @IX-0
ADDC
A, @IX-1
MOV
@IX-0, A
CLRC
MOV
A, _sym
MOV
A, _sym+1
SUBC
A
MOV
_sym, A
MOVW
A, EP
MOVW
A, #16
MULU
A
MOVW
EP, A
MOV
A, #7
MOVW
A, @EP
XCHW
A, T
DIVU
A
MOVW
@EP, A
MOV
A, #7
MOVW
A, @EP
XCHW
A, T
DIVU
A
XCHW
A, T
MOVW
@EP, A
AND
A, #0x80
.(A |= #0xF0)
OR
A, #0xF0
.(A ^= #0xFF)
XOR
A, #0xFF
.(R0
MOV
A, R0
ROLC
A
ROLC
A
AND
A, #0xFC
.(EP *= #16)
.(@EP /= #7)
.(@EP %= #7)
.(A
&= #0x80)
< <= #2)
CLRC
280
CM81-00208-5, September 1, 2014
Support
.(@A
Soft
> >= #3)
Ma nual
MOV
R0, A
MOV
A, @A
RORC
A
RORC
A
RORC
A
AND
A, #0x1F
CLRC
September 1, 2014, CM81-00208-5
XCH
A, T
MOV
@A, T
281
Su pp or t
13.3.4
So ft
Manu al
インクリメント / デクリメント式
項のインクリメントまたはデクリメントを行う命令を生成します。
8 ビットのインクリメントまたはデクリメントを行う場合 , R0 ~ R7 以外のものは
16 ビットで行われます。
■ インクリメント / デクリメント式
【記述形式】
.(op[. データサイズ ]{++|--})
データサイズ :{b|w}
【説明】
項のインクリメントまたはデクリメントを行う命令を生成します。
インクリメント式は '++' をデクリメント式は '--' を記述します。
8 ビットのインクリメントまたはデクリメントを行う場合 , R0 ~ R7 以外のものは
16 ビットで行われます。したがって , インクリメントまたはデクリメントを行った
結果 8 ビットを超えた場合にフラグは反映されません。
【例】
.(EP++)
INCW
EP
.(@EP--)
MOV
A, @EP
DECW
A
MOV
@EP, A
■ デフォルトデータサイズ
インクリメント / デクリメント式は , 項によりデフォルトのデータサイズが異なりま
す。
項とデフォルトデータサイズの関係を表 13.3-8 に示します。
表 13.3-8 インクリメント / デクリメント式の項デフォルトデータサイズの関係
282
代入先
データサイズ
EP, IX
16 ビット
その他
8 ビット
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ 項に記述可能な種類
インクリメント / デクリメント式の項には , アセンブラのオペランドに記述可能なレジ
スタやシンボルなど , ほとんどのものが記述できます。
記述できる項の種類を表 13.3-9 に示します。
表 13.3-9 インクリメント / デクリメント式に記述可能な項
項
8 ビット
16 ビット
レジスタ
A, T, R0 ~ R7, EP, IX
A, T, EP, IX
レジスタ間接
@A, @IX+offset, @EP
@A, @IX+offset, @EP
アドレス
シンボル , アドレス値
シンボル , アドレス値
September 1, 2014, CM81-00208-5
283
Su pp or t
284
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
付録
付録では , エラーメッセージの一覧 , 制限事項を掲
載します。
付録 A エラーメッセージ一覧
付録 B 制限事項
付録 C 拡張ダイレクトアクセス領域バンク番号の取得方法
付録 D SOFTUNE アセンブラと旧版アセンブラの仕様の差
異
付録 E 主な変更内容
September 1, 2014, CM81-00208-5
285
Su pp or t
付録 A
So ft
Manu al
エラーメッセージ一覧
本アセンブラで出力するエラーメッセージの一覧です。
■ エラーメッセージの見方
図 A-1 エラーメッセージの見方
xx101A
Expression too complex
式が複雑すぎて解析できません
エラー認識番号
エラーメッセージ
上段に英語,下段に日本語のメッセージを示します。
x x 1 0 1 A
ツール識別子 A:アセンブラ
エラー番号(3桁)
エラーレベル
W1:警告レベル
E4:文法エラー
F9:致命的エラー(アセンブル強制終了)
<注意事項>
エラーメッセージの枠の下に補足説明が付いている場合があります。
286
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ エラーメッセージ一覧
E4101A
Expression too complex
式が複雑すぎて解析できません
【プログラム処置】
式処理を中断します。
E4102A
Missing expression(s)
式の記述がありません
【プログラム処置】
式処理を中断します。
W1103A
Divide by zero
除数 0 の除算です
【プログラム処置】
式処理を中断します。
E4104A
No terms in parentheses
括弧中に項がありません
【プログラム処置】
式処理を中断します。
W1105A
Illegal term in expression
式に不正な項があります
【プログラム処置】
式処理を中断します。
E4106A
Unbalanced parentheses in expression
式の括弧の対応が合いません
【プログラム処置】
式処理を中断します。
September 1, 2014, CM81-00208-5
287
Su pp or t
E4107A
So ft
Manu al
Syntax error
文法に誤りがあります
【プログラム処置】
この命令を無効にします。
E4109A
Nothing macro-name
マクロ名の記述がありません
【プログラム処置】
この命令を無効にします。
E4110A
Nothing include file-name
インクルードファイル名の指定がありません
【プログラム処置】
この命令を無効にします。
E4111A
Cannot open include file
インクルードファイルがありません
【プログラム処置】
この命令を無効にします。
E4112A
Nested include file exceeds 8
インクルードファイルのネストが 8 を超えました
インクルードファイルのネストは 8 レベルまでです。
【プログラム処置】
この命令を無効にします。
288
CM81-00208-5, September 1, 2014
Support
E4114A
Soft
Ma nual
Nested macro-call exceeds 255
マクロコールのネストが 255 を超えました
マクロコールのネストは 255 レベルまでです。
【プログラム処置】
この命令を無効にします。
E4115A
Changed level exceeds 255
置換レベルが 255 を超えました
置換処理のネストは 255 レベルまでです。
【プログラム処置】
マクロ名を空文字に置換えます。
E4116A
Invalid value
不正な値です
整数定数の記述に誤りがあります
【プログラム処置】
不正な文字のみを無視します。
E4117A
Macro name duplicate definition
マクロ名が 2 重定義です
【プログラム処置】
この命令を無視します。
W1118A
Argument duplicate definition
引数が 2 重定義です
【プログラム処置】
この引数を無視します。
September 1, 2014, CM81-00208-5
289
Su pp or t
W1119A
So ft
Manu al
Local-symbol duplicate definition
ローカルシンボルが 2 重定義です
【プログラム処置】
このローカルシンボルを無視します。
W1120A
Too many arguments
引数が多すぎます
【プログラム処置】
多い引数を無視します。
W1121A
Not enough arguments
引数の数が足りません
【プログラム処置】
足りない引数を空文字とします。
E4122A
Missing '('
'(' がありません
【プログラム処置】
この命令を無視します。
E4123A
Unterminated macro-name ')'
マクロ命令の最後に ')' がありません
【プログラム処置】
この命令を無視します。
E4124A
Unterminated comment
コメントの終わりに '*/' がありません
【プログラム処置】
'*/' を補います。
290
CM81-00208-5, September 1, 2014
Support
W1125A
Soft
Ma nual
Unterminated '
文字定数の終わりに ' がありません
【プログラム処置】
行終端までを文字定数とします。
W1126A
Unterminated "
文字列の終わりに " がありません
【プログラム処置】
行終端までを文字列とします。
W1127A
Unterminated ' >'
インクルードファイル名の終わりに ' >' がありません
【プログラム処置】
' >' を補います。
W1128A
Value overflow
値がオーバフローです
32 ビットで表しきれない数が指定されています
【プログラム処置】
下位 32 ビットのみ有効とします。
W1129A
Name too long
名前が長すぎます
名前の文字数が 255 文字を超えています。
【プログラム処置】
超えた分の文字を無効にします。
September 1, 2014, CM81-00208-5
291
Su pp or t
W1130A
So ft
Manu al
String too long
文字列が長すぎます
文字列が 4095 文字を超えています。
【プログラム処置】
超えた分の文字を無効にします。
W1131A
Defined-string too long
定義文字列が長すぎます
定義文字列が 4095 文字を超えています。
【プログラム処置】
超えた分の文字を無効にします。
W1132A
Expanded-string too long
展開文字列が長すぎます
マクロ展開された文字列が 4095 文字を超えています。
【プログラム処置】
超えた分の文字を無効にします。
W1133A
Logical-lines too long
値がオーバフローです
継続行を含めた論理行が 4095 文字を超えています。
【プログラム処置】
超えた分の文字を無効にします。
W1134A
Meaningless description
不要な記述です
【プログラム処置】
この文字を無効にします。
292
CM81-00208-5, September 1, 2014
Support
E4135A
Soft
Ma nual
Has no #if-statement
対応する #if 文がありません
【プログラム処置】
この命令を無効にします。
E4136A
Has no #macro-statement
対応する #macro 文がありません
【プログラム処置】
この命令を無効にします。
W1137A
#endif expected
#endif 文がありません
【プログラム処置】
#endif 文があったものとします。
E4138A
#endm expected
#endm 文がありません
【プログラム処置】
#endm 文があったものとします。
E4140A
Not used macro-statement
この命令はここでは使用できません
【プログラム処置】
この命令を無効にします。
E4141A
Too long macro-body
マクロボディが大きすぎます
【プログラム処置】
このマクロ定義を無効にします。
September 1, 2014, CM81-00208-5
293
Su pp or t
W1142A
So ft
Manu al
Meaningless .CASE
.SWITCH 命令なしに , .CASE 命令が記述されています
【プログラム処置】
この記述を無視します。
W1143A
Meaningless .DEFAULT
.SWITCH 命令なしに , .DEFAULT 命令が記述されています
【プログラム処置】
この記述を無視します。
W1144A
.CASE statement not permitted here
.DEFAULT 命令の後ろに , .CASE 命令が記述されています
【プログラム処置】
この記述を無視します。
W1145A
.ENDSW without .CASE statement
.SWITCH 命令で .CASE 命令の記述がされないまま , .ENDSW 命令が
記述されました
【プログラム処置】
.CASE 命令はないものとして処理を続けます。
W1146A
#PURGE not permitted here
#PURGE 命令がマクロ定義体中で記述されています
【プログラム処置】
この記述を無視します。
W1147A
Data width is not permitted to indicate to last item. Ignored this suffix
最後の項にデータ幅の指定が行われています
【プログラム処置】
データ幅指定の記述を無視します。
294
CM81-00208-5, September 1, 2014
Support
E4148A
Soft
Ma nual
.BREAK not in structured block
構造化制御構文の外に .BREAK 命令が記述されています
【プログラム処置】
この記述を無視します。
E4149A
.CONTINUE not in structured block
構造化制御構文の外に .CONTINUE 命令が記述されています
【プログラム処置】
この記述を無視します。
E4150A
Missing angle bracket
アングルブラケット " <", " >" の対応がとれていません
【プログラム処置】
この記述を無視します。
E4151A
Conditional expression overflow
複合条件式の数が多すぎます
【プログラム処置】
この記述を無視します。
E4152A
& & and || conditional expression exist
複合条件式において論理積条件と論理和条件が混在しています
【プログラム処置】
この記述を無視します。
E4153A
Illegal structured block order
構造化制御命令の記述が正しくありません
【プログラム処置】
この記述を無視します。
September 1, 2014, CM81-00208-5
295
Su pp or t
E4154A
So ft
Manu al
Source item and destination item is the same
代入先と代入元に同じものが記述されています
【プログラム処置】
この記述を無視します。
E4155A
Number of item is overflowed
複数への代入の一括記述で , 代入先が多すぎます
【プログラム処置】
この記述を無視します。
E4501A
Missing expression(s)
式の記述がありません
【プログラム処置】
この命令を無効にします。
E4502A
Out of section
セクションがまだ定義されていません
【プログラム処置】
.SECTION CODE, CODE, ALIGN=1 のセクションを生成します。
E4503A
Invalid directive ( 命令名 )
不正な擬似命令名です ( 命令名 )
【プログラム処置】
この命令を無効にします。
E4504A
Invalid word ( 詳細情報 )
不正な単語です ( 詳細情報 )
【プログラム処置】
区切り記号まで無視します。
296
CM81-00208-5, September 1, 2014
Support
W1505A
Soft
Ma nual
Name too long
名前が長すぎます
名前の文字数が 255 文字を超えています。
【プログラム処置】
超えた分の文字を無効にします。
E4506A
Missing string terminator (")
文字列の終わりの (") がありません
【プログラム処置】
行終端までを文字列とします。
E4507A
Expression too complex
式が複雑すぎて解析不能です
【プログラム処置】
式処理を中断します。
E4510A
Value overflow ( 詳細情報 )
値がオーバフローです ( 詳細情報 )
32 ビットで表しきれない数が指定されています。
【プログラム処置】
下位 32 ビットのみ有効とします。
E4511A
Missing string terminator (')
文字定数の終わりの (') がありません
【プログラム処置】
行終端までを文字定数とします。
September 1, 2014, CM81-00208-5
297
Su pp or t
E4512A
So ft
Manu al
Divide by zero
除数 0 の除算です
【プログラム処置】
式の値を 0 とします。
E4513A
Expression too complex
式が複雑すぎて解析できません
【プログラム処置】
式処理を中断します。
E4514A
Register not permitted in expression ( レジスタ名 )
式にレジスタは指定できません ( レジスタ名 )
【プログラム処置】
式処理を中断します。
E4515A
No terms in parentheses
括弧中に項がありません
【プログラム処置】
式処理を中断します。
E4516A
Illegal term in expression ( 詳細情報 )
式に不正な項があります ( 詳細情報 )
【プログラム処置】
式処理を中断します。
E4517A
Unbalanced parentheses in expression
式の括弧の対応が合いません
【プログラム処置】
式処理を中断します。
298
CM81-00208-5, September 1, 2014
Support
E4518A
Soft
Ma nual
Cannot out this operator ( 詳細情報 )
この演算子はリロケーション情報に出ません ( 詳細情報 )
【プログラム処置】
式の値を 0 とします。
E4519A
Register list symbol not permitted in expression ( 詳細情報 )
式にレジスタリストシンボルは指定できません ( 詳細情報 )
【プログラム処置】
式処理を中断します。
E4520A
String too long
文字列が長すぎます
文字列が 4095 文字を超えています。
【プログラム処置】
超えた分の文字を無効にします。
E4521A
Structured definitions. Invalid directive
構造体定義中なので , この擬似命令は無効です。
【プログラム処置】
この擬似命令を無効にします。
E4522A
Structured definitions. Invalid instruction
構造体定義中なので , 機械命令は無効です。
【プログラム処置】
この機械命令を無効にします。
September 1, 2014, CM81-00208-5
299
Su pp or t
E4524A
So ft
Manu al
Duplicate declaration ( シンボル名 )
2 重宣言です ( シンボル名 )
.GLOBAL, .EXPORT, .IMPORT 命令で宣言されているシンボルです。
【プログラム処置】
宣言を無効にします。
E4525A
Duplicate definition ( シンボル名またはセクション名 )
2 重定義です ( シンボル名またはセクション名 )
【プログラム処置】
このシンボル定義を無効にします。
E4526A
Cannot declare ( シンボル名 )
宣言できません ( シンボル名 )
.GLOBAL, .EXPORT, .IMPORT 命令では宣言できない種類のシンボルです。
【プログラム処置】
宣言を無効にします。
W1527A
Undefined symbol : treats as an external reference symbol ( シンボル名 )
未定義シンボルです : 外部参照シンボルとして扱います ( シンボル名 )
【プログラム処置】
外部参照シンボルとして扱います。
E4528A
Terms other than the section symbol are described in the size operator ( シン
ボル名 )
サイズ演算子にセクションシンボル以外の項が記述されています ( シ
ンボル名 )
【プログラム処置】
式処理を中断します。
300
CM81-00208-5, September 1, 2014
Support
E4529A
Soft
Ma nual
External reference symbol is described in the size operator : Please make and
deal with an empty section by the name ( シンボル名 )
サイズ演算子に外部参照シンボルが記述されています : その名前で空
セクションを作成して対処してください ( シンボル名 )
【プログラム処置】
式処理を中断します。
E4530A
Invalid symbol field ( 詳細情報 )
シンボルの記述方法が不正です ( 詳細情報 )
【プログラム処置】
行終端まで無効にします。
E4531A
Not an absolute expression
式が絶対式でありません
式に外部参照シンボルまたは相対シンボルが記述されています。
【プログラム処置】
この命令を無効にします。
E4532A
Not complex relocatable expression
式が絶対式または単純相対式でありません
式に外部参照シンボルまたは相対シンボルが 2 個以上記述されています。
【プログラム処置】
この命令を無効にします。
E4533A
Forward reference symbol is described in expression
式に前方参照シンボルが記述されています
この命令の式には前方参照シンボルは記述できません。
【プログラム処置】
この命令を無効にします。
September 1, 2014, CM81-00208-5
301
Su pp or t
E4534A
So ft
Manu al
Syntax error in operand ( 詳細情報 )
オペランドの記述に誤りがあります ( 詳細情報 )
【プログラム処置】
この命令を無効にします。
W1535A
Meaningless description ( 詳細情報 )
不要な記述です ( 詳細情報 )
【プログラム処置】
不要な記述を無効にします。
E4536A
Duplicate directive ( 詳細情報 )
2 重指定できない擬似命令です ( 詳細情報 )
【プログラム処置】
最初に指定された命令を有効にします。
E4537A
Reserved word cannot define symbol ( 詳細情報 )
予約語はシンボル定義できません ( 詳細情報 )
【プログラム処置】
行終端まで無効にします。
E4538A
Reserved word cannot be used as a section name ( 詳細情報 )
予約語はセクション名として使用できません ( 詳細情報 )
【プログラム処置】
この命令を無効にします。
302
CM81-00208-5, September 1, 2014
Support
E4539A
Soft
Ma nual
Size operator is described in expression
式にサイズ演算子が記述されています
この命令の式には , サイズ演算子は記述できません。
【プログラム処置】
この命令を無効にします。
E4540A
Conflicting section attribute ( パラメータ名 )
セクション属性が矛盾しています ( パラメータ名 )
【プログラム処置】
この指定のみ無効にします。
W1541A
Value out of range
値が範囲外です
【プログラム処置】
オペランドに記述された式の演算結果 ( 値 ) をオペランドサイズに合わせてマスク
します ( 式については「7.11 式」を参照してください )。
アセンブラは , オブジェクトファイルを出力します。
【補足説明】
リストファイル出力指定オプション (-l) を指定していた場合 , アセンブラはリスト
ファイルを出力します。
リストファイルに出力されるオペランドのコードは , 演算結果をオペランドサイズ
に合わせてマスクした値になります。
本メッセージは, -OVFWオプション指定時にオペランドに記述された式の演算の結
果がそのオペランドサイズを超えた場合に出力されます。
詳細は , 「7.11.2 オペランド値の範囲」を参照してください。
September 1, 2014, CM81-00208-5
303
Su pp or t
E4541A
So ft
Manu al
Value out of range
値が範囲外です
【プログラム処置】
オペランドに記述された式の演算結果 ( 値 ) をオペランドサイズに合わせてマスク
します ( 式については , 「7.11 式」を参照してください )。
アセンブラは , オブジェクトファイルを出力しません。
【補足説明】
リストファイル出力指定オプション (-l) を指定していた場合 , アセンブラはリスト
ファイルを出力します。
リストファイルに出力されるオペランドのコードは , 演算結果をオペランドサイズ
に合わせてマスクした値になります。
本メッセージは , -XOVFW オプション指定時にオペランドに記述された式の演算の
結果がそのオペランドサイズを超えた場合に出力されます。
E4542A
Invalid keyword ( キーワード名 )
キーワード指定が不正です ( キーワード名 )
【プログラム処置】
このキーワード指定のみ無効にします。
E4543A
Invalid kind of register
レジスタの種類が不正です
【プログラム処置】
この命令を無効にします。
E4544A
Invalid register list ( 詳細情報 )
レジスタリスト記述が不正です ( 詳細情報 )
【プログラム処置】
この命令を無効にします。
304
CM81-00208-5, September 1, 2014
Support
W1545A
Soft
Ma nual
Meaningless symbol field ( 詳細情報 )
シンボル部は記述不要です ( 詳細情報 )
【プログラム処置】
シンボルフィールドの記述を無視します。
E4548A
Missing keyword
キーワード名が記述されていません
【プログラム処置】
この命令を無効にします。
E4550A
Location counter overflow
ロケーションカウンタがオーバフローしました
【プログラム処置】
そのまま処理を継続します。
W1551A
Missing .END directive
.END 擬似命令がありませんでした
【プログラム処置】
ファイル終端までをアセンブルの対象とします。
E4552A
Invalid value
不正な値です ( 異なるセクション内のシンボル値が含まれています )
【プログラム処置】
この命令を無効にします。
E4553A
Missing (=) behind keyword ( キーワード名 )
キーワード名の後ろに (=) が記述されていません ( キーワード名 )
【プログラム処置】
このキーワード指定のみ無効にします。
September 1, 2014, CM81-00208-5
305
Su pp or t
E4554A
So ft
Manu al
Duplicate keyword ( キーワード名 )
キーワード名が 2 重定義です ( キーワード名 )
【プログラム処置】
最初に指定されたキーワードを有効にします。
W1555A
Too long module-name
モジュール名が長すぎます
モジュール名が 255 文字を超えています。
【プログラム処置】
超えた分の文字を無効にします。
E4556A
Missing symbol field
シンボル記述がありません
【プログラム処置】
この命令を無効にします。
E4557A
Starting address out of section
開始アドレスがセクション範囲外です
【プログラム処置】
開始アドレスを無効にします。
W1558A
Starting address not in code section
開始アドレスのセクションがコード属性でありません
【プログラム処置】
ダミーセクションの場合のみ開始アドレスを無視します。他のセクションでは開始
アドレスはそのままセットされます。
306
CM81-00208-5, September 1, 2014
Support
E4559A
Soft
Ma nual
Conflicting Size-suffix ( 詳細情報 )
サイズ指定が矛盾しています ( 詳細情報 )
オペレーションサイズとオペランドサイズの指定が異なっています。
【プログラム処置】
オペレーションサイズを有効にします。
E4561A
Floating value underflow ( 詳細情報 )
浮動小数点定数がアンダフローです ( 詳細情報 )
【プログラム処置】
浮動小数点定数を +0 の値にします。
E4562A
Floating value overflow ( 詳細情報 )
浮動小数点定数がオーバフローです ( 詳細情報 )
【プログラム処置】
浮動小数点定数を指定された符号で , 値はこの精度で表すことができる最大の値に
します。
E4565A
Not a power of 2
2 のべき乗値でない値です。
【プログラム処置】
この指定を有効にします。
W1566A
Bigger than alignment size of .SECTION directive
.SECTION 命令の ALIGN 値より大きな値です。
【プログラム処置】
この指定を有効にします。
September 1, 2014, CM81-00208-5
307
Su pp or t
E4567A
So ft
Manu al
Not enough operands
オペランドの数が足りません
【プログラム処置】
この命令を無効にします。
W1568A
Invalid word in module name
モジュール名が不正です
モジュールの名前の規則に反しています。
【プログラム処置】
規則に反する文字を '_' に置き換えたモジュール名とします。
E4570A
Invalid section name ( セクション名 )
セクション名が不正です ( セクション名 )
【プログラム処置】
この命令を無効にします。
E4571A
Smaller value than beginning address set with LOCATE value of .SECTION
directive cannot be set
.SECTION 命令の LOCATE 値で設定されている開始アドレスより小さ
いアドレス値は設定できません
【プログラム処置】
この命令を無効にします。
E4572A
Bigger value than boundary value set with ALIGN value of .SECTION
directive cannot be set
.SECTION 命令の ALIGN 値で設定されている境界値より大きな値は設
定できません
【プログラム処置】
この命令を無効にします。
308
CM81-00208-5, September 1, 2014
Support
E4573A
Soft
Ma nual
Has no statement
対応する命令がありません
【プログラム処置】
この命令を無効にします。
W1574A
It cannot be guaranteed to arrange in a proper boundary. : Please set ALIGN
value of .SECTION directive in 2 or more
適正な境界に配置することを保証できません :.SECTION 命令の
ALIGN 値を 2 以上に設定してください。
【プログラム処置】
この命令を無効にします。
W1575A
It cannot be guaranteed to arrange in a proper boundary. : Please set ALIGN
value of .SECTION directive in 4 or more
適正な境界に配置することを保証できません :.SECTION 命令の
ALIGN 値を 4 以上に設定してください。
【プログラム処置】
この命令を無効にします。
W1576A
It cannot be guaranteed to arrange in a proper boundary. : Please set ALIGN
value of .SECTION directive in 8 or more
適正な境界に配置することを保証できません :.SECTION 命令の
ALIGN 値を 8 以上に設定してください。
【プログラム処置】
この命令を無効にします。
E4600A
Invalid operation mnemonic ( 命令名 )
不正な命令ニーモニック名です ( 命令名 )
【プログラム処置】
この命令を無効にして , NOP 命令を 1 個生成します。
September 1, 2014, CM81-00208-5
309
Su pp or t
E4605A
So ft
Manu al
Invalid Operation-suffix
命令オプションは指定できません
【プログラム処置】
以降のオペレーションフィールドを無視します。
E4606A
Invalid Option-suffix in operation field ( 詳細情報 )
不正な命令オプションです ( 詳細情報 )
【プログラム処置】
この指定のみを無視します。
W1608A
Conflicting Option-suffix in operation field ( 詳細情報 )
命令オプションの指定に矛盾があります ( 詳細情報 )
【プログラム処置】
最初に指定された命令オプションを有効にします。
E4616A
Not enough operands
オペランドの数が足りません
【プログラム処置】
この命令を無視して , NOP 命令を 1 個生成します。
E4617A
Too many operands ( 詳細情報 )
オペランドの数が多すぎます ( 詳細情報 )
【プログラム処置】
多い分のオペランドを無効にします。
E4619A
Unbalanced parentheses (in operand ( 番号 ))
括弧の対応がとれていません (in operand ( 番号 ))
【プログラム処置】
この命令を無視して , NOP 命令を 1 個生成します。
310
CM81-00208-5, September 1, 2014
Support
E4622A
Soft
Ma nual
Format-suffix not permitted ( 詳細情報 )
許されていないフォーマット指定です ( 詳細情報 )
【プログラム処置】
フォーマット指定を無効にします。
E4625A
Invalid Size-suffix ( 文字列 )
サイズ指定が不正です ( 文字列 )
【プログラム処置】
この指定を無効にします。
E4626A
Size-suffix not permitted
許されていないサイズ指定です
【プログラム処置】
サイズ指定を無効にします。
E4629A
Syntax error ( オペランド番号 , 詳細情報 )
構文に誤りがあります ( オペランド番号 , 詳細情報 )
【プログラム処置】
この命令を無効にして , NOP 命令を 1 個生成します。
E4639A
Addressing mode not permitted (in operand ( 番号 ))
許されていないアドレッシングモードです (in operand ( 番号 ))
【プログラム処置】
この命令を無効にして , NOP 命令を 1 個生成します。
E4651A
Floating point data too short (in operand ( 番号 ))
浮動小数点定数が短すぎる (in operand ( 番号 ))
【プログラム処置】
足りないデータ数を 0 で補います。
September 1, 2014, CM81-00208-5
311
Su pp or t
E4652A
So ft
Manu al
Floating point data too long (in operand ( 番号 ))
浮動小数点定数が長すぎる (in operand ( 番号 ))
【プログラム処置】
余分なデータを無視します。
E4654A
Illegal instruction start address ( 詳細情報 )
命令先頭アドレスが不正です ( 詳細情報 )
命令先頭のアドレスが奇数番地です。
【プログラム処置】
命令先頭のアドレスを偶数番地に配置します。
【特記事項】
命令の先頭を偶数番地に配置してください。
E4656A
Nothing operand ( 詳細情報 )
オペランドの記述がありません ( 詳細情報 )
【プログラム処置】
この命令を無効にして , NOP 命令を 1 個生成します。
E4698A
Number of include files exceeds 32766
インクルードファイル数が 32766 個を超えました
【プログラム処置】
アセンブル処理を中断します。
E4699A
Source-line exceeds 65535 lines
ソース行数が 65535 行を越えました
【プログラム処置】
ソース行数を 0 に戻してそのまま処理を続けます。オブジェクトは生成されません。
312
CM81-00208-5, September 1, 2014
Support
W1701A
Soft
Ma nual
Cannot optimize for insufficient memory
メモリ不足のため最適化ができません
【プログラム処置】
分岐命令の最適化は行いません。
E4703A
Cannot put machine-code
遅延スロットにこの命令はおけません
【プログラム処置】
そのまま処理を続行します。
W1704A
It is possible to optimize. : The back and forth instruction is replaced.
最適化できます : 前後の命令を入れ替えます
【プログラム処置】
前後の命令を入れ替えます。
W1705A
It is possible to optimize. : Changes to another instruction.
最適化できます : 別の命令に変更します
【プログラム処置】
別の命令に変更します。
W1706A
It is possible to optimize. : The instruction is deleted.
最適化できます : 命令を削除します
【プログラム処置】
命令を削除します。
W1707A
It is possible to optimize. : The instruction is newly generated.
最適化できます : 命令を新たに生成します
【プログラム処置】
命令を新たに生成します。
September 1, 2014, CM81-00208-5
313
Su pp or t
W1710A
So ft
Manu al
Instruction is written after .END
.END 命令以降に記述があります
【プログラム処置】
.END 命令以降の記述を無視します。
W1711A
Location address backed by .ORG
.ORG 命令でアドレスが戻っています
【プログラム処置】
指定されたアドレスで処理を続けます。
W1712A
This structure field cannot initialized
ストラクチャのこのフィールドは初期化できません
【プログラム処置】
この記述を無視します。
W1713A
Too many initialize data
ストラクチャの初期化データが多く与えられました
【プログラム処置】
この記述を無視します。
W1714A
Section type error
命令の持つアドレスの属性と異なった属性のシンボルを指定していま
す
【プログラム処置】
シンボルの属性を無視して命令を生成します。
314
CM81-00208-5, September 1, 2014
Support
E4715A
Soft
Ma nual
Section type error
命令の持つアドレスの属性と異なった属性のシンボルを指定していま
す
【プログラム処置】
この記述を無視します。
E4716A
.ENDS expected
.ENDS 命令がありません
【プログラム処置】
アセンブラは異常終了します。
W1717A
Mismatch .ENDS
.ENDS 命令と .STRUCT 命令の対応がとれていません
【プログラム処置】
この記述を無視します。
E4750A
Terms other than the bit symbol are described in the bit operator
ビット演算子にビットシンボル以外の項が記述されています
【プログラム処置】
この記述を無視します。
E4756A
Invalid address modifier
アドレス規定子を指定した命令に , 該当する命令がありません
【プログラム処置】
この記述を無視します。
E4758A
Input to @A can not be written in this expression
複数への代入の一括記述式で @A への代入を行っています
【プログラム処置】
この記述を無視します。
September 1, 2014, CM81-00208-5
315
Su pp or t
E4759A
So ft
Manu al
@EP and EP or @IX and IX exist in this expression
複数への代入の一括記述で , レジスタ (EP, IX) への代入が , レジスタ間
接 ( @ EP, @ IX) への代入よりも先に行われています。
【プログラム処置】
この記述を無視します。
W1800A
Not 2 bytes attribute
値が 2 バイト境界でありません
【プログラム処置】
値の下位 1 ビットを 0 にします。
W1801A
Not 4 bytes attribute
値が 4 バイト境界でありません
【プログラム処置】
値の下位 2 ビットを 0 にします。
E4802A
Invalid register
このレジスタは指定できません
【プログラム処置】
この命令を無効にして , NOP 命令を 1 個生成します。
E4803A
Fixed point of double precision is not supported
倍精度の固定小数点定数はサポートしていません
【プログラム処置】
この命令を無効にして , NOP 命令を 1 個生成します。
316
CM81-00208-5, September 1, 2014
Support
W1806A
Soft
Ma nual
DIVU is detected
DIVU 命令が検出されました
【プログラム処置】
そのまま処理を続行します。
【補足説明】
F2MC-8FX ファミリは DIVU 命令の動作が従来の F2MC-8L ファミリと異なるため
F2MC-8L ファミリ用アセンブラソースを F2MC-8FX ファミリ用に流用する場合 ,
DIVU 命令が使用されている箇所について問題がないか確認する必要があります。
本メッセージは , -div_check オプション指定時にアセンブラソース中に DIVU 命令
が検出された場合に出力されます。
本メッセージの出力が不要な場合は , -Xdiv_check オプションを指定してください。
-div_check オプションの詳細は , 「4.7.2 -div_check, -Xdiv_check」を参照してくださ
い。
F9860A
CPU information not found (CPU 名 )
CPU 情報がみつかりません (CPU 名 )
【プログラム処置】
アセンブル処理を中止します。
【特記事項】
-cpu オプションで指定された CPU の情報が , CPU 情報ファイルに登録されていな
い場合に発生します。
-cpu オプションにて指定された CPU の MB 番号を , 今一度ご確認ください。
この指定に誤りが無ければ , 営業部門へご連絡ください。
F9861A
Mismatch CPU information file version
CPU 情報ファイルのバージョンが適合しません
【プログラム処置】
アセンブル処理を中止します。
【特記事項】
読込んだ CPU 情報ファイルのバージョンが古く , 本アセンブラの必要とする情報を
含んでいない場合に発生します。
アセンブラパックを再インストールしてください。
September 1, 2014, CM81-00208-5
317
Su pp or t
F9901A
So ft
Manu al
Insufficient memory ( エラー ID)
メモリが足りません ( エラー ID)
【プログラム処置】
アセンブラは異常終了します。
【特記事項】
メモリを増設していただきますよう , お願いいたします。
F9902A
Internal error ( エラー ID)
内部エラー発生 ! ( エラー ID)
アセンブラの内部処理の矛盾によるエラーです。
【プログラム処置】
アセンブラは異常終了します。
【特記事項】
エラー ID のメモを取り , 開発元に連絡してください。
F9903A
File Write Error ( ファイル種別 )
ファイルの書き込みエラーです ( ファイル種別 )
【プログラム処置】
アセンブラは異常終了します。
【特記事項】
ディスクの容量不足 , または , 書込み禁止のファイルです。これらの事項について
確認してください。
F9904A
File read error ( ファイル種別 )
ファイルの読込みエラーです ( ファイル種別 )
ソースファイル , 作業ファイルのうち , 読込みができなくなったファイルがありま
す。
【プログラム処置】
アセンブラは異常終了します。
【特記事項】
アセンブル途中に , ソースファイルまたはワークファイルが強制的に削除されな
かったかどうか確認してください。
318
CM81-00208-5, September 1, 2014
Support
F9905A
Soft
Ma nual
Cannot open message file
メッセージファイルがオープンできません
【プログラム処置】
アセンブラは異常終了します。
【特記事項】
環境変数を設定するか , メッセージファイルがあるか確認してください。
F9907A
Structured nest level overflow
構造化制御のネストレベルが制限値を超えました
【プログラム処置】
アセンブラは異常終了します。
F9951A
Source filename not specified
ソースファイル名の指定がありません
【プログラム処置】
アセンブラは異常終了します。
F9952A
Cannot open file ( ファイル名 )
ファイルがオープンできません ( ファイル名 )
【プログラム処置】
アセンブラは異常終了します。
F9953A
Invalid option name ( オプション名 )
オプション名に誤りがあります ( オプション名 )
【プログラム処置】
アセンブラは異常終了します。
September 1, 2014, CM81-00208-5
319
Su pp or t
F9954A
So ft
Manu al
Invalid value ( オプション名 )
値が不正です ( オプション名 )
【プログラム処置】
アセンブラは異常終了します。
F9955A
Invalid sub-option name ( オプション名 )
サブオプション名に誤りがあります ( オプション名 )
【プログラム処置】
アセンブラは異常終了します。
F9956A
Invalid option description ( オプション名 )
オプションの指定形式に誤りがあります ( オプション名 )
【プログラム処置】
アセンブラは異常終了します。
F9959A
Nested option file exceeds 8 ( 詳細情報 )
オプションファイルのネストは 8 までです ( 詳細情報 )
【プログラム処置】
アセンブラは異常終了します。
F9960A
Too many file
ソースファイルの指定が多すぎます
複数のファイルはアセンブルできません。
【プログラム処置】
アセンブラは異常終了します。
320
CM81-00208-5, September 1, 2014
Support
F9961A
Soft
Ma nual
-cpu option not specified
-cpu オプションの指定がありません
【プログラム処置】
アセンブラは異常終了します。
September 1, 2014, CM81-00208-5
321
Su pp or t
付録 B
So ft
Manu al
制限事項
アセンブラを使用するときの制限事項を示します。
■ プリプロセッサ処理の制限
• インクルードファイルのネストレベルは最大 8 レベルです。
• 1 つのマクロボディの大きさは最大 64512 バイトです。
• マクロコールのネストレベルは最大 256 レベルです。
• マクロ定義で定義可能な仮引数の数は最大 32767 個です。
• 登録可能なマクロ名の数は無限です ( 使用可能メモリ領域に依存 )。
• 構造化制御構文のネストレベルは最大 40 レベルです。
• 構造化制御構文の複合条件式内の条件式は最大 8 個です。
• 構造化命令の複数への代入の一括記述の代入先は最大 8 個です。
■ アセンブル処理の制限
• アセンブル可能なソースファイルの行数は最大 65535 行です。
• 登録可能なシンボルの数は無限です ( 使用可能メモリ領域に依存 )。
• 1 行に記述可能な文字数は , 継続行も含めて最大 4095 文字です。
• .DATAB 命令 , .FDATAB 命令の式 1 の値は最大 1048575 です。
■ オプションファイルの制限
• オプションファイルの 1 行に記述可能な文字数は , 最大 4095 文字です。
• オプションファイルのネストレベルは最大 8 レベルです。
■ その他の制限
• ソースファイルの主ファイル名の文字数は , 最大 248 文字です。
• モジュール名に 2 バイト文字は使用できません。
322
CM81-00208-5, September 1, 2014
Support
付録 C
Soft
Ma nual
拡張ダイレクトアクセス領域バンク番号の取得方法
F2MC-8FX ファミリで利用可能な拡張ダイレクトアクセス領域のバンク番号の取得
方法について説明します。
■ 拡張ダイレクトアクセス領域バンク番号の取得方法
拡張ダイレクトアクセス領域に定義されたシンボルから , 拡張ダイレクトアクセス領
域バンク番号を取得するためには , 以下のヘッダファイルで定義されているマクロを
使用してください。
• ヘッダファイル :
%FETOOL%\LIB\896\INCLUDE\extdir.inc
• マクロ名 :
EDIRBANK()
【使用例】
#include
<extdir.inc >
:
.IMPORT
DIR0_a
:
.SECTION
CODE, CODE, ALIGN=1
SETDB
#EDIRBANK(DIR0_a)
MOV
A, X:DIR0_a
:
September 1, 2014, CM81-00208-5
323
Su pp or t
付録 D
So ft
Manu al
SOFTUNE アセンブラと旧版アセンブラの仕様の差異
SOFTUNE アセンブラ (FASM896S) と旧版アセンブラ (ASM96) の仕様の差異につい
て説明します。
D.1 アセンブラ言語の基本規則
D.2 式処理
D.3 擬似命令
D.4 マクロ処理
D.5 構造化制御命令
D.6 機械命令
D.7 コマンド行の差異
D.8 環境変数
D.9 オプション
D.10 制限事項の緩和
324
CM81-00208-5, September 1, 2014
Support
D.1
Soft
Ma nual
アセンブラ言語の基本規則
FASM896S と ASM96 のソース行シンタックスの差異について説明します。
■ 文の形式
アセンブラの 1 行は , 以下の形式で構成されます。
• 各フィールドは不要な場合 , 記述を省略できます。
• 各フィールドの区切りには , 1 文字以上の空白 , またはタブを記述します。
• コメントフィールド , 継続指示フィールドに差異があります。
【FASM896S の記述】
シンボル
フィールド
オペレーション
フィールド
オペランド
フィールド
コメント
フィールド
継続指示
フィールド
1 行の長さは最大 4095 文字
【ASM96 の記述】
シンボル
フィールド
オペレーション
フィールド
オペランド
フィールド
コメント
フィールド
1 行の長さは最大 127 文字
■ コメントフィールド
FASM896S
ASM96
セミコロン (;), または 2 個のスラッシュ
(//) でコメントが始まり , その行の終端ま
でをコメントとします。
セミコロン (;) でコメントが始まり , その
行の終端までをコメントとします。
C 言語風に /* */ で囲ったコメントの記述
も可能です。
■ 継続指示フィールド
FASM896S
改行の直前にバックスラッシュ (\) を記
述することにより , 行の内容を継続でき
ます。
September 1, 2014, CM81-00208-5
ASM96
継続行の記述はできません。
325
Su pp or t
So ft
Manu al
■ 文字セット
ソース記述時に使用できる文字を以下に示します。
このほかに , コメント部には漢字コードを含むすべての文字が記述可能です。
種別
文字
英文字 ( 大文字 )
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
英文字 ( 小文字 )
a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, y, v, w, x, y, z
数字
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
特殊文字
+ - * / ( ) ; : ' " , _ . @ # $ ! % & < > = | \ 空白タブ
また , 特殊文字として "~" および "^" は , FASM896S では使用できますが , ASM96 では
使用できません。
■ 名前 ( シンボル , ラベル )
名前を定義 / 記述する場合 , 以下の定義に従います。
FASM896S
名前の規則
英字 , またはアンダバー(_) から記述を開始し , 以降は英
字 , 数字 , アンダバーを使用して定義します。
最大文字列長
大文字 / 小文字の区別
ASM96
255 文字
区別する
31 文字
オプション指定により選
択可能
■ ロケーションカウンタシンボルの記述
使用する文字
326
FASM896S
ASM96
$
*
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ 整数定数の記述方法
FASM896S
ASM96
2 進数の記述
B' nnnnnnn
0nnnnnnnB
0Bnnnnnnn
B' nnnnnnn
0nnnnnnnB
8 進数の記述
Q' nnnnnnn
nnnnnnnQ
0nnnnnnn
Q' nnnnnnn
nnnnnnnQ
10 進数の記述
D' nnnnnnn
nnnnnnnD
nnnnnnn
D' nnnnnnn
nnnnnnnD
nnnnnnn
16 進数の記述
H' nnnnnnn
nnnnnnnH
0xnnnnnnn
H' nnnnnnn
nnnnnnnH
FASM896S
ASM96
シングルクォートで
文字を括る
ダブルクォートで
文字を括る
最大文字長
4
2
制御コードの記述
可
不可
拡張表記
\ 記号に続けて記述すること
により , 特殊文字を指定でき
ます。
ダブルクォートを記述する
場合は , 同じ文字を 2 個連続
して記述します。
その他
C 言語風の制御文字を指定で
きます (\n, \t, etc.) 。
数値情報は記述できません。
■ 文字定数
記述方法
September 1, 2014, CM81-00208-5
327
Su pp or t
So ft
Manu al
■ 文字列定数
FASM896S
記述方法
ASM96
ダブルクォートで文字を括る
制御コードの記述
可
不可
拡張表記
\ 記号に続けて記述すること
により , 特殊文字を指定でき
ます。
ダブルクォートを記述する
場合は , 同じ文字を 2 個連続
して記述します。
その他
C 言語風の制御文字を指定で
きます (\n, \t, etc.) 。
数値情報は記述できません。
FASM896S
ASM96
■ 浮動小数点数
記述形式
記述例
328
[0r][+|-]{.d|d[.[d]]}[e[[+|-]d]]
[F' ][+|-]{.d|d[.[d]]}[e[[+|-]d]]
H' h d は 10 進数
0xh h は 16 進数
記述不可
0r-1.34e-20
F' -2.5
-1.2e10
CM81-00208-5, September 1, 2014
Support
D.2
Soft
Ma nual
式処理
式に使用する演算子の種類および優先順位の差異について説明します。
■ 演算子一覧
機能
FASM896S
優先順位の変更
ASM96
()
論理地の否定
!
ビット反転
~
NOT
単項 +
+
単項 -
-
ビットアドレス抽出
bitadr
%
ビットポジション抽出
bitpos
!
セクションサイズ抽出
sizeof
Segsize
乗算
*
除算
/
剰余算
%
加算
+
減算
-
左シフト
<<
SHL
右シフト
>>
SHR
未満 ( 比較 )
<
LT
以下 ( 比較 )
<=
LE
大きい ( 比較 )
>
GT
以上 ( 比較 )
>=
GE
等しい ( 比較 )
==
EQ
不一致 ( 比較 )
!=
NE
ビット AND
&
AND
ビット XOR
^
XOR
ビット OR
|
OR
論理 AND
&&
論理 OR
September 1, 2014, CM81-00208-5
||
329
Su pp or t
So ft
Manu al
■ 演算子の優先順位の差異
機能
優先順位の変更
FASM896S
ASM96
1
1
論理値の否定
2
ビット反転
単項 +
単項 -
2
ビットアドレス抽出
2
ビットポジション抽出
セクションサイズ抽出
乗算
除算
3
3
4
4
5
5
6
6
7
7
ビット AND
8
8
ビット XOR
9
9
ビット OR
10
10
論理 AND
11
論理 OR
12
剰余算
加算
減算
左シフト
右シフト
未満 ( 比較 )
以下 ( 比較 )
大きい ( 比較 )
以上 ( 比較 )
等しい ( 比較 )
不一致 ( 比較 )
330
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
■ 注意事項
機能
演算精度
符号
型付データのサポート
September 1, 2014, CM81-00208-5
FASM896S
ASM96
32ビット長, 指定により符
号あり / なしで演算する。
16 ビット長 , 符号なし。
符合あり / なし
符号なし
あり
なし
331
Su pp or t
D.3
So ft
Manu al
擬似命令
擬似命令の差異について説明します。
■ 擬似命令の差異一覧
表 D.3-1 擬似命令の差異一覧 (1 / 2)
機能
FASM896S
ASM96
.PROGRAM
NAME
.END
END
外部参照シンボル宣言
.IMPORT
EXTRN/EXTERN
外部定義シンボル宣言
.EXPORT
PUBLIC
.SECTION CODE *1
CSEG
I/O 関連領域定義
.SECTION DIR *1
DIRSEG
データ領域定義
.SECTION DATA *1
DSEG
.SECTION STACK *1
SSEG
記述不要
ENDS
ビット単位データ定義
.DATA.I
DBIT
バイト単位データ定義
.DATA.B or .SDATA *2
DB
2 バイト単位データ定義
.DATA.H
DW
4 バイト単位データ定義
.DATA.L
-
ビット単位領域確保
.RES.I
-
バイト単位領域確保
.RES.B
RBIT
2 バイト単位領域確保
.RES.H
RB
4 バイト単位領域確保
.RES.L
RW
単精度浮動小数データ定義
.FDATA.S
-
倍精度浮動小数データ定義
.FDATA.D
-
単精度浮動小数領域確保
.FRES.S
-
倍精度浮動小数領域確保
.FRES.D
-
.STRUCT ~ .ENDS
STRUC ~ ENDS
シンボル定義
.EQU
EQU
シンボル定義
-
SET
オブジェクト名の設定
ソース記述終了宣言
命令領域定義
スタック領域定義
領域定義終了
構造体宣言
332
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
表 D.3-1 擬似命令の差異一覧 (2 / 2)
機能
FASM896S
ASM96
.ALIGN
-
ロケーション調整
.ORG
ORG
リスト書式制御
.LIST
LIST
リスト出力抑止
.LIST
LISTOFF
リスト出力指定
.LIST
LILSTON
リスト改ページ指定
.PAGE
PAGE
リストタイトル指定
.HEADING
TITLE
-
SUBTTL
境界整合
サブタイトル指定
*1 : 付加する属性 (ABS, WORD, COMMON, など ) により実際の対応関係は変化します。
*2 : 文字列データ定義か数値データ定義かによって , どちらかを選択します。
■ セクション ( セグメント ) の定義
FASM896S のセクション定義は , 「10.2.3 .SECTION 命令」に記述されている規則にし
たがって行います。
FASM896S と ASM96 のセクション定義の対応の詳細は以下のようになります。
機能
FASM896S
ASM96
コード部
定義
.SECTION セクション名 , CODE, ALIGN=1
セクション名 CSEG
.SECTION セクション名 , CODE, LOCATE=0
セクション名 CSEG ABS
データ部
定義
.SECTION セクション名 , DATA, ALIGN=1
セクション名 DSEG
.SECTION セクション名 , DATA, LOCATE=0
セクション名 DSEG ABS
.SECTION セクション名 , DATA, ALIGN=1
セクション名 DSEG BYTE
.SECTION セクション名 , CONST, ALIGN=1
セクション名 DSEG ROM
.SECTION セクション名 , COMMON, ALIGN=1
セクション名 DSEG COMMON
.SECTION セクション名 , DIR, ALIGN=1
セクション名 DIRSEG
.SECTION セクション名 , DIR, LOCATE=0
セクション名 DIRSEG ABS
.SECTION セクション名 , DIR, ALIGN=1
セクション名 DIRSEG BYTE
.SECTION セクション名 , DIRCOMMON, ALIGN=1
セクション名 DIRSEG COMMON
DIR部定義
スタック
領域定義
.SECTION セクション名 , STACK, ALIGN=1
SSEG
<注意事項>
ASM96 では , セクション名の記述を省略できます。
September 1, 2014, CM81-00208-5
333
Su pp or t
So ft
Manu al
■ 文字列データ定義
FASM896S
334
ASM96
.SDATA "ABS\n"
DB "ABC", H' 0d, H' 0a
.DATA.B D' 00, D' 05
.SDATA "ABCDE"
.DATA.B D' 00
DB D' 00, D' 05, "ABCDE", ' 00
CM81-00208-5, September 1, 2014
Support
D.4
Soft
Ma nual
マクロ処理
マクロ命令の差異について説明します。
■ マクロ名の差異
機能
FASM896S
ASM96
マクロ定義開始
#MACRO
&MACRO
ローカルシンボル設定
#LOCAL
&LOCAL
マクロシンボル設定
#SET
&SET
マクロシンボル解放
#PURGE
&PURGE
繰返しマクロ定義
#REPEAT
&REPEAT
#IF
&IF
条件マクロ
真
&THEN
偽
#ELSE
&ELSE
条件マクロ終了
#ENDIF
&ENDIF
マクロ定義終了
#ENDM
&ENDM
#INCLUDE
&INCLUDE
ファイルの読込み
September 1, 2014, CM81-00208-5
335
Su pp or t
D.5
So ft
Manu al
構造化制御命令
構造化制御命令の差異について説明します。
■ 構造化制御命令
FASM896S と ASM96 で使用できる構造化制御命令は同じです。
条件式に記述するコンディションコード条件式の記述方法も同じです。
条件式に記述する比較条件式は以下の差異があります。
ASM96
符号あり
336
FASM896S
符号なし
符号あり
符号なし
等しい
==
Z(EQ)
等しくない
!=
NZ(NE)
より小さい
<
<.U
LT
LO
以下
<=
<=.U
LE
LS
より大きい
>
>.U
GT
HI
以上
>=
>=.U
GE
CM81-00208-5, September 1, 2014
Support
D.6
Soft
Ma nual
機械命令
機械命令の記述方法は , ハードウェアマニュアルによって規定されるため , オペラン
ド部の記述方法以外の変更はありません。
■ 機械命令
機械命令の記述方法は , ハードウェアマニュアルによって規定されるため , オペランド
部の記述方法以外の変更はありません。
オペランド部の記述の際については ,「D.1 アセンブラ言語の基本規則」を参照してく
ださい。
September 1, 2014, CM81-00208-5
337
Su pp or t
D.7
So ft
Manu al
コマンド行の差異
コマンド行の差異について説明します。
■ 起動形式
FASM896S
ASM96
fasm896s [ オプション ]…[ ファイル名 ]
asm96 ファイル名 [ オプション ]…
asm96 @ オプションファイル
■ オプション指定
機能
オプション指定の位置
オプションファイルの指定
オプションファイルの複数指定
338
FASM896S
ASM96
どの位置でも可能
ファイル名指定の後
-f オプションファイル
@ オプションファイル
可
不可
CM81-00208-5, September 1, 2014
Support
D.8
Soft
Ma nual
環境変数
環境変数の差異について説明します。
■ 環境変数
FASM896S
ASM96
TMP
TMP
インクルードファイル
検索パス指定
INC896
INC96
インストールパス指定
FETOOL
-
表示文字コード指定
FELANG
-
デフォルトオプションファイル
格納パス指定
OPT896
-
作業用ディレクトリ指定
September 1, 2014, CM81-00208-5
339
Su pp or t
D.9
So ft
Manu al
オプション
オプションの差異について説明します。
■ オプション
表 D.9-1 オプション (1 / 2)
FASM896S
ASM96
-o
O
-Xo
NO
-g/-Xg
DEB, DBG, LO, HI/
NDB
環境変数指定
WD pathname
常に区別
CP/NCP
-W[0-3]
-
-name module
-
リストファイル出力
-l/-Xl
-lf filename
L [filename]
リストの 1 頁の行数
-pl [0|20-255]
PL [40-128]
リストの 1 行の文字数
-pw [80-255]
PW [80-136]
-pl 0
-
インフォメーションリスト出力
-linf [on|off]
-
ソースリスト出力
-lsrc [on|off]
-
セクションリスト出力
-lsec [on|off]
-
クロスリファレンスリスト出力
-lcros [on|off]
XR/NXR
インクルードファイルリスト出力制御
-linc [on|off]
ICL/NCL
マクロ if 文のリスト制御
-
CD/NCD
マクロ定義部のリスト制御
-
DEF/NDEF
マクロコール・構造化制御命令行のリスト制御
-
CL/NCL
構造化制御命令の展開部のリスト制御
-
STR/NSTR
-lexp [on|off]
EXP/NEXP
-p
-
-P/Pf filename
-
オブジェクトファイル名指定
オブジェクトファイル出力抑止
デバッグ情報出力
作業ディレクトリ指定
大文字小文字の区別指定
警告メッセージ出力レベル指定
モジュール名指定
リストの改ページ処理抑止
マクロ展開部のリスト出力制御
プリプロセッサ抑止
プリプロセッサのみ起動
340
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
表 D.9-1 オプション (2 / 2)
FASM896S
ASM96
-D name[=def]
-
-U name
-
インクルードパス表示
-H
-
プリプロセッサ出力へのコメント出力
-C
-
エラー情報ファイルの出力 / 抑止
-
-[NO]EP
ステータスコードのファイル出力
-
-RC
ヘルプの表示
-help
-
ターゲット CPU の指定
-cpu
-
-Xdof
-
-V/-XV
-
マクロ名指定
未定義マクロシンボルへの値付け
デフォルトオプションファイル入力抑止
起動メッセージの表示 / 非表示
September 1, 2014, CM81-00208-5
341
Su pp or t
So ft
Manu al
D.10 制限事項の緩和
制限事項 ( 処理限界 ) の差異について説明します。
■ 制限事項
FASM896S
ASM96
1 行文字数
4095 文字
128 文字
ソースファイル行数
65535 文字
32000 行
シンボル数
無制限
32000 個
名前の長さ
255 文字
31 文字
無制限
マクロ定義数は 512 個
ローカルシンボル数は 256 個
256 レベル
8 レベル
登録可能マクロ名数
マクロのネスト
342
CM81-00208-5, September 1, 2014
Support
付録 E
Soft
Ma nual
主な変更内容
ページ
場所
変更箇所
Revision 4.1
-
-
社名変更および記述フォーマットの変換
Revision 5.0
114
7.8 文字列
■ 文字列
例の社名部分を削除
228
11.8 マクロ名の置換処理
■ マクロ置換の規則
例の社名部分を変更
317
付録 A エラーメッセージ
一覧
エラーコード : F9860A
September 1, 2014, CM81-00208-5
【特記事項】の社名部分を変更
343
Su pp or t
344
So ft
Manu al
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
索引
Symbols
## 演算子
マクロ置換の文字の連結 (## 演算子 ) ...............233
#define 命令
引数付き #define 命令 ...........................................230
引数なし #define 命令 ...........................................230
#elif 命令
#elif 命令 ................................................................225
#else 命令
#else 命令 ...............................................................224
#endif 命令
#endif 命令 .............................................................227
#endm 命令
#endm 命令 .............................................................216
#error 命令
#error 命令 ..............................................................240
#exitm 命令
#exitm 命令 .............................................................215
#exitm 命令の規則 .................................................215
#ifdef 命令
#ifdef 命令 ..............................................................222
#ifndef 命令
#ifndef 命令 ............................................................223
#if 命令
#if 命令 ...................................................................221
#include 命令
#include 命令 ..........................................................237
#line 命令
#line 命令 ................................................................239
#local 命令
#local 命令 ..............................................................213
#local 命令の規則 ..................................................213
#macro 命令
#macro 命令 ............................................................212
#macro 命令の規則 ................................................212
#pragma 命令
#pragma 命令 ..........................................................241
#purge 命令
#purge 命令 .............................................................236
#repeat 命令
#repeat 命令 ............................................................219
#repeat 命令の規則 ................................................219
#set 命令
#set 命令 .................................................................234
#undef 命令
#undef 命令 .............................................................235
# 演算子
マクロ仮引数の文字列化 (# 演算子 ) .................232
.ALIGN
.ALIGN .....................................................................86
.ALIGN 命令
.ALIGN 命令 ..........................................................159
.ASCII
.ASCII .......................................................................93
.ASCII 命令
.ASCII 命令 ............................................................177
September 1, 2014, CM81-00208-5
.BIT
.BIT ........................................................................... 89
.BIT 命令
.BIT 命令 ................................................................ 169
.break 命令
.break 命令 .............................................................. 272
.BYTE
.BYTE ....................................................................... 89
.BYTE 命令
.BYTE 命令 ............................................................ 170
.continue 命令
.continue 命令 .........................................................273
.DATA
.DATA ......................................................................89
.DATAB
.DATAB .................................................................... 90
.DATAB 命令
.DATAB 命令 .........................................................171
.DATA 命令
.DATA 命令 ...........................................................169
.DEBUG
.DEBUG .................................................................... 94
.DEBUG 命令
.DEBUG 命令 .........................................................181
.DOUBLE
.DOUBLE .................................................................91
.DOUBLE 命令
.DOUBLE 命令 ......................................................173
.END
.END ......................................................................... 84
.ENDS 命令
.STRUCT 命令 ,.ENDS 命令 ................................. 179
.END 命令
.END 命令 .............................................................. 155
.EQU
.EQU ......................................................................... 88
.EQU 命令
.EQU 命令 .............................................................. 167
.EXPORT
.EXPORT .................................................................. 87
.EXPORT 命令
.EXPORT 命令 ....................................................... 163
.FDATA
.FDATA .................................................................... 91
.FDATAB
.FDATAB .................................................................91
.FDATAB 命令
.FDATAB 命令 ......................................................174
.FDATA 命令
.FDATA 命令 .........................................................172
.FLOAT
.FLOAT ..................................................................... 91
.FLOAT 命令
.FLOAT 命令 .......................................................... 172
.FORM
.FORM ......................................................................96
345
Su pp or t
.FORM 命令
.FORM 命令 ...........................................................185
.FRES
.FRES ........................................................................92
.FRES 命令
.FRES 命令 .............................................................176
.GLOBAL
.GLOBAL .................................................................87
.GLOBAL 命令
.GLOBAL 命令 ......................................................164
.HALF
.HALF .......................................................................89
.HALF 命令
.HALF 命令 ............................................................170
.HEADING
.HEADING ...............................................................97
.HEADING 命令
.HEADING 命令 ....................................................187
.IMPORT
.IMPORT ...................................................................87
.IMPORT 命令
.IMPORT 命令 ........................................................165
.LIBRARY
.LIBRARY ................................................................95
.LIBRARY 命令
.LIBRARY 命令 .....................................................183
.LIST
.LIST .........................................................................97
.LIST 命令
.LIST 命令 ..............................................................188
.LONG
.LONG .......................................................................90
.LONG 命令
.LONG 命令 ............................................................170
.ORG
.ORG .........................................................................86
.ORG 命令
.ORG 命令 ..............................................................160
.PAGE
.PAGE .......................................................................97
.PAGE 命令
.PAGE 命令 ............................................................190
.PROGRAM
.PROGRAM ..............................................................84
.PROGRAM 命令
.PROGRAM 命令 ...................................................154
.RES
.RES ..........................................................................92
.RES 命令
.RES 命令 ...............................................................175
.SDATA
.SDATA ....................................................................93
.SDATAB
.SDATAB ..................................................................93
.SDATAB 命令
.SDATAB 命令 .......................................................178
.SDATA 命令
.SDATA 命令 .........................................................177
.SECTION
.SECTION .................................................................85
.SECTION 命令
.SECTION 命令 ......................................................156
346
So ft
Manu al
.SKIP
.SKIP ......................................................................... 86
.SKIP 命令
.SKIP 命令 .............................................................. 161
.SPACE
.SPACE ..................................................................... 98
.SPACE 命令
.SPACE 命令 .......................................................... 191
.STRUCT 命令
.STRUCT 命令 ,.ENDS 命令 ................................. 179
.TITLE
.TITLE ......................................................................96
.TITLE 命令
.TITLE 命令 ...........................................................186
.WORD
.WORD ..................................................................... 90
.WORD 命令
.WORD 命令 .......................................................... 170
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
Numerics
B
10 進定数
10 進定数 ................................................................110
16 進定数
16 進定数 ................................................................110
2 処理選択構文
2 処理選択構文 ......................................................265
2 進定数
2 進定数 ..................................................................110
8 進定数
8 進定数 ..................................................................110
BITADR 演算子
ビットシンボルアドレス演算子
(BITADR 演算子 ) ...........................................128
BITPOS 演算子
ビットポジション番号演算子 (BITPOS 演算子 )
..........................................................................128
C
-C
-C .............................................................................. 48
-cif
-cif ............................................................................. 68
-cmsg
-cmsg ......................................................................... 59
-cpu
-cpu ........................................................................... 62
-cwno
-cwno ........................................................................60
C 言語プリプロセッサ
C 言語プリプロセッサとの違い .........................245
D
-D
-D .............................................................................. 45
defined マクロ名
defined マクロ名 ................................................... 244
F
-f
-f ................................................................................ 55
fasm896s
fasm896s コマンド行 .............................................. 18
FELANG
FELANG ................................................................... 11
FETOOL
FETOOL ................................................................... 10
G
-g
-g ...............................................................................34
H
-H
-H .............................................................................. 47
-help
-help ..........................................................................61
I
-I
-I ................................................................................ 46
INC896
INC896 ......................................................................13
September 1, 2014, CM81-00208-5
347
Su pp or t
K
S
-kanji
-kanji .........................................................................63
-sa
L
-l
-l ................................................................................36
-LBA
-LBA .........................................................................64
-lcros
-lcros ..........................................................................39
-lexp
-lexp ..........................................................................40
-lf
-lf ...............................................................................36
-linc
-linc ...........................................................................40
-linf
-linf ............................................................................38
-lsec
-lsec ...........................................................................39
-lsrc
-lsrc ............................................................................38
So ft
Manu al
-sa .............................................................................. 50
SIZEOF 演算子
セクションサイズ抽出 (SIZEOF 演算子 ) ......... 129
SOFTUNE
概要 (SOFTUNE アセンブラ ) ................................. 4
T
-tab
-tab ............................................................................41
TMP
TMP ..........................................................................12
U
-U
-U .............................................................................. 45
V
-V
-V .............................................................................. 58
N
W
-name
-name .........................................................................57
-w
-w .............................................................................. 56
O
X
-o
-o ...............................................................................33
OPT896
OPT896 .....................................................................14
-OVFW
-OVFW ......................................................................66
P
-P
-P ...............................................................................44
-p
-p ...............................................................................43
-Pf
-Pf ..............................................................................44
-pl
-pl ..............................................................................37
-pw
-pw ............................................................................37
R
-Xcmsg
-Xcmsg ......................................................................59
-Xcwno
-Xcwno ......................................................................60
-Xdof
-Xdof ......................................................................... 54
-Xg
-Xg ............................................................................34
-Xl
-Xl ............................................................................. 36
-XLBA
-XLBA ......................................................................64
-Xo
-Xo ............................................................................33
-XOVFW
-XOVFW .................................................................. 67
-Xsa
-Xsa ........................................................................... 50
-XV
-XV ........................................................................... 58
ROM 化セクション
ROM 化セクションの書き方 ..............................145
348
CM81-00208-5, September 1, 2014
Support
Soft
あ
アセンブラ
概要 (SOFTUNE アセンブラ ) .................................4
概要 ( アセンブラ文法 ) ...........................................6
アセンブラ擬似機械命令
F2MC-8L/8FX ファミリ用アセンブラ擬似機械命
令 ......................................................................248
アセンブル
アセンブル処理の制限 .........................................322
アセンブルフェーズ
アセンブルフェーズ .................................................4
アドレス規定子
アドレス規定子 .....................................................122
アドレス制御命令
アドレス制御命令 .................................................158
い
インクリメント
インクリメント / デクリメント式 .....................282
インクルードファイル
インクルードファイル ...........................................83
インフォメーションリスト
インフォメーションリスト .............................76, 78
え
エラー番号
エラー番号 W1551A ...............................................56
エラー番号 W1711A ...............................................56
エラー表示
エラー表示 ...............................................................82
エラーメッセージ
エラーメッセージ一覧 .........................................287
エラーメッセージの見方 .....................................286
演算系擬似機械命令
演算系擬似機械命令 .............................................250
演算子
演算子の優先順位 .................................................131
プリプロセッサの演算子 .....................................209
プリプロセッサの演算子の優先順位 .................210
演算精度
プリプロセッサの式の演算精度 .........................208
お
オブジェクト
オブジェクトおよびデバッグに関するオプション
............................................................................32
オプション
オブジェクトおよびデバッグに関するオプション
............................................................................32
起動時オプション一覧 ...........................................29
起動時オプションの規則 .......................................28
その他のオプション ...............................................53
ターゲット依存オプション ...................................49
プリプロセッサに関するオプション ...................42
リスティングに関するオプション .......................35
September 1, 2014, CM81-00208-5
Ma nual
オプションファイル
オプションファイル .............................................. 23
オプションファイルに記述できるコメント ...... 24
オプションファイルの制限 ................................322
オペランド
オペランドの順序 ................................................149
オペランドフィールド
オペランドフィールド ........................................ 105
オペランドフィールドの記述形式 .................... 149
オペレーションフィールド
オペレーションフィールド ................................104
か
開発環境
開発環境のディレクトリ構造 ..............................15
外部参照値
外部参照値 ............................................................ 121
概要
概要 (SOFTUNE アセンブラ ) ................................. 4
概要 ( アセンブラ文法 ) ...........................................6
空命令
空命令 ....................................................................242
仮引数
仮引数の置換規則 ................................................206
仮引数の名前の規則 ............................................ 206
関係演算子
関係演算子 ............................................................ 126
き
機械命令
機械命令の記述形式 ............................................ 148
擬似命令
擬似命令で扱う整数定数の範囲 ........................ 152
サイズ演算子を含む式が記述できない擬似命令
..........................................................................130
既定義マクロ名
既定義マクロ名 ....................................................243
起動時オプション
起動時オプション一覧 .......................................... 29
起動時オプションとの関係 ..74, 154, 182, 185, 189
起動時オプションの規則 ...................................... 28
行
行の継続 ................................................................ 201
共有結合
共有結合 ................................................................ 143
く
クロスリファレンスリスト
クロスリファレンスリスト ................................100
け
計算型繰返し構文
計算型繰返し構文 ................................................268
継続指示フィールド
継続指示フィールド ............................................ 105
349
Su pp or t
こ
項
項に記述可能な種類 .............................277, 279, 283
項の種類 .................................................................121
構造化プログラム命令
構造化プログラム命令の概要 .............................259
構造化プログラム命令の記述形式 .....................264
構造化プログラム命令の条件式 .........................260
構造化命令
構造化命令の概要 .................................................258
構造体
構造体のアクセス .................................................180
構造体の領域定義 .................................................179
後方参照シンボル
前方参照シンボルと後方参照シンボル .............109
コマンド行
fasm896s コマンド行 ..............................................18
コメント
オプションファイルに記述できるコメント .......24
コメント .........................................................132, 200
コメントフィールド
コメントフィールド .............................................105
さ
サイズ演算子
サイズ演算子について .........................................109
サイズ演算子を含む式が記述できない擬似命令 ...
130
最適化
分岐命令の最適化 ...................................................70
最適配置分岐擬似機械命令
最適配置分岐擬似機械命令 .................................253
算術演算子
算術演算子 .............................................................127
し
式
サイズ演算子を含む式が記述できない擬似命令
..........................................................................130
式の演算精度について .........................................120
式の概要 .................................................................274
式の記述形式 .........................................................275
式の構文 .................................................................119
式の種類 .................................................................120
プリプロセッサの式 .............................................208
プリプロセッサの式の演算精度 .........................208
実行条件型繰返し構文
実行条件型繰返し構文 .........................................271
終了コード
終了コード ...............................................................26
終了条件型繰返し構文
終了条件型繰返し構文 .........................................270
条件式
構造化プログラム命令の条件式 .........................260
条件式の記述形式 .................................................264
条件付きアセンブル命令
条件付きアセンブル命令 .....................................220
初期値データ
初期値データの転送 .............................................145
350
So ft
Manu al
シンボル
シンボルの生成規則 ............................................ 263
シンボル定義命令
シンボル定義命令 ................................................166
シンボルフィールド
シンボルフィールド ............................................ 104
せ
整数定数
擬似命令で扱う整数定数の範囲 ........................ 152
整数定数 ........................................................110, 202
セクション
セクションタイプ ........................................134, 156
セクションタイプと属性 .................................... 139
セクション値 ........................................................ 122
セクションの記述形式 ........................................ 134
セクションの結合方法 ........................................ 142
セクションのタイプについて ............................136
セクションの配置形式について ........................ 140
セクションの分割記述 ........................................ 144
セクション配置形式 ....................................135, 157
セクションサイズ
セクションサイズ抽出 (SIZEOF 演算子 ) ......... 129
他のモジュールにあるセクションサイズを得るに
は ......................................................................130
セクションリスト
セクションリスト ..................................................99
絶対値
絶対値 ....................................................................121
全体形式
全体形式 .................................................................. 74
前方参照シンボル
前方参照シンボルと後方参照シンボル ............109
そ
相対値
相対値 ....................................................................121
ソースリスト
ソースリスト .......................................................... 80
その他
その他のオプション .............................................. 53
その他の制限 ........................................................ 322
その他の擬似機械命令
その他の擬似機械命令 ........................................ 251
た
ターゲット依存
ターゲット依存オプション ..................................49
代入演算式
代入演算式 ............................................................ 278
代入式
代入式 ....................................................................276
多処理選択構文
多処理選択構文 ....................................................266
単精度
単精度と倍精度の指定 ........................................ 116
単精度浮動小数点定数
単精度浮動小数点定数のデータ形式 ................ 117
CM81-00208-5, September 1, 2014
Support
Soft
て
ディレクトリ
開発環境のディレクトリ構造 ...............................15
デクリメント
インクリメント / デクリメント式 .....................282
デバッグ
オブジェクトおよびデバッグに関するオプション
32
デバッグ情報出力制御命令
デバッグ情報出力制御命令 .................................181
デフォルトオプションファイル
デフォルトオプションファイル ...........................25
デフォルトデータサイズ
デフォルトデータサイズ .....................276, 279, 282
な
名前
名前から値を算出する演算子 .............................127
名前の規則 .............................................................107
名前の分類 .............................................................107
は
倍精度
単精度と倍精度の指定 .........................................116
倍精度浮動小数点定数
倍精度浮動小数点定数のデータ形式 .................117
Ma nual
プリプロセッサの演算子 .................................... 209
プリプロセッサの演算子の優先順位 ................ 210
プリプロセッサの式 ............................................ 208
プリプロセッサの式の演算精度 ........................ 208
プリプロセッサフェーズ
プリプロセッサフェーズ ........................................ 4
プリプロセッサ命令
プリプロセッサ命令の記述形式 ........................ 199
プログラム結合命令
プログラム結合命令 ............................................ 162
プログラム構造定義命令
プログラム構造定義命令 .................................... 153
分岐系擬似機械命令
分岐系擬似機械命令 ............................................ 249
分岐命令
分岐命令の最適化 ..................................................70
文の形式
文の形式 ................................................................ 104
文法
概要 ( アセンブラ文法 ) ...........................................6
へ
ヘッダ
ヘッダの形式 .......................................................... 77
ま
ビットアドレス
ビットアドレス .....................................................122
ビット演算子
ビット演算子 .........................................................126
ビットシンボルアドレス演算子
ビットシンボルアドレス演算子 (BITADR 演算子
) .........................................................................128
ビットポジション番号演算子
ビットポジション番号演算子 (BITPOS 演算子 )
..........................................................................128
マクロ置換
マクロ置換の規則 ................................................228
マクロ置換の文字の連結 (## 演算子 ) ............... 233
マクロ仮引数
マクロ仮引数の文字列化 (# 演算子 ) ................. 232
マクロコール命令
マクロコール命令 ................................................217
マクロコール命令の規則 .................................... 217
マクロ定義
マクロ定義 ............................................................ 211
マクロ定義の規則 ................................................211
マクロ名
マクロ名の規則 ....................................................205
マクロ名の種類 ....................................................205
マクロ名の置換処理 ............................................ 228
ふ
め
ファイル
ファイル指定 ...........................................................19
ファイル検索
形式 1 のファイル検索 .........................................237
形式 2 と形式 3 のファイル検索 .........................238
ファイル名
ファイル名の指定形式 ...........................................21
ファイル名の省略指定 ...........................................22
浮動小数点定数
浮動小数点定数の表記 .........................................115
浮動小数点定数の表現可能な範囲 .....................118
プリプロセッサ
プリプロセッサ .....................................................194
プリプロセッサ処理 ...............................................81
プリプロセッサ処理の制限 .................................322
プリプロセッサに関するオプション ...................42
命令文
命令文の生成規則 ................................................263
ひ
September 1, 2014, CM81-00208-5
も
文字定数
文字定数 ........................................................112, 203
文字定数要素 ........................................................ 203
文字セット
文字セット ............................................................ 106
文字列
文字列 ....................................................................114
351
Su pp or t
So ft
Manu al
よ
予約語
予約語 .....................................................................108
ら
ライブラリファイル指定命令
ライブラリファイル指定命令 .............................183
り
リスティング
リスティングに関するオプション .......................35
リスト出力制御命令
リスト出力制御命令 .............................................184
リピート展開
リピート展開 .........................................................218
領域定義命令
領域定義命令 .........................................................168
れ
連結結合
連結結合 .................................................................142
ろ
ローカルシンボル
ローカルシンボルの置換規則 .............................207
ローカルシンボルの名前規則 .............................207
ロケーションカウンタシンボル
ロケーションカウンタシンボル .........................111
論理演算子
論理演算子 .............................................................126
論理値
論理値 .....................................................................126
352
CM81-00208-5, September 1, 2014
Support
Soft
Ma nual
奥付
CM81-00208-5
Spansion • SUPPORT SOFT MANUAL
F2MC®-8L/8FX
8 ビット・マイクロコントローラ
SOFTUNE® アセンブラマニュアル V3 対応
2014 年 9 月 Rev. 5.0
発行
Spansion Inc.
編集
コーポレートコミュニケーション部
September 1, 2014, CM81-00208-5
353
Su pp or t
So ft
Manu al
免責事項
本資料に記載された製品は、通常の産業用 , 一般事務用 , パーソナル用 , 家庭用などの一般的用途 ( ただし、用途の限定はあ
りません ) に使用されることを意図して設計・製造されています。(1) 極めて高度な安全性が要求され、仮に当該安全性が
確保されない場合、社会的に重大な影響を与えかつ直接生命・身体に対する重大な危険性を伴う用途 ( 原子力施設における
核反応制御 , 航空機自動飛行制御 , 航空交通管制 , 大量輸送システムにおける運行制御 , 生命維持のための医療機器 , 兵器シ
ステムにおけるミサイル発射制御等をいう ) 、ならびに (2) 極めて高い信頼性が要求される用途 ( 海底中継器 , 宇宙衛星等を
いう ) に使用されるよう設計・製造されたものではありません。上記の製品の使用法によって惹起されたいかなる請求また
は損害についても、Spansion は、お客様または第三者、あるいはその両方に対して責任を一切負いません。半導体デバイス
はある確率で故障が発生します。当社半導体デバイスが故障しても、結果的に人身事故 , 火災事故 , 社会的な損害を生じさ
せないよう、お客様において、装置の冗長設計 , 延焼対策設計 , 過電流防止対策設計 , 誤動作防止設計などの安全設計をお
願いします。本資料に記載された製品が、外国為替及び外国貿易法、米国輸出管理関連法規などの規制に基づき規制され
ている製品または技術に該当する場合には、本製品の輸出に際して、同法に基づく許可が必要となります。
商標および注記
このドキュメントは、断りなく変更される場合があります。本資料には Spansion が開発中の Spansion 製品に関する情報が
記載されている場合があります。Spansion は、それらの製品に対し、予告なしに仕様を変更したり、開発を中止したりする
権利を有します。このドキュメントに含まれる情報は、現状のまま、保証なしに提供されるものであり、その正確性 , 完全
性 , 実施可能性および特定の目的に対する適合性やその市場性および他者の権利を侵害しない事を保証するものでなく、ま
た、明示 , 黙示または法定されているあらゆる保証をするものでもありません。Spansion は、このドキュメントに含まれる
情報を使用することにより発生したいかなる損害に対しても責任を一切負いません。
Copyright © 2004-2014 Spansion. All rights reserved.
商標:Spansion®, Spansion ロゴ ( 図形マーク ), MirrorBit®, MirrorBit® EclipseTM, ORNANDTM 及びこれらの組合せは、米国・
日本ほか諸外国における Spansion LLC の商標です。第三者の社名・製品名等の記載はここでは情報提供を目的として表記
したものであり、各権利者の商標もしくは登録商標となっている場合があります。
354
CM81-00208-5, September 1, 2014