式とは,シンボル注1,定数(数値定数注2,文字定数),前述の2つに演算子を付加したもの,または演算子で結合したものです。
| 
注 1. | 式の要素として指定可能なシンボルは,ネーム,ラベル,外部参照名のみです。ただし,SIZEOF演算子,およびSTARTOF演算子に対してはセクション名を指定可能です。 | 
| 
注 2. | デバイス・ファイル読み込み時には,式の中でSFR略号,および拡張SFR略号を定数と同様に扱うことができます。 | 
 
式を構成する演算子以外の要素を項といい,記述された左側から順に第1項,第2項,…と呼びます。項のリロケーション属性により,使用可能な演算子が限られます。
 
演算子には「表 5.4  演算子の種類」に示すものがあり,演算実行上の優先順位が「表 5.5  演算子の優先順位」のように決められています。
演算の順序を変更するには,かっこ“ ( ) ”を使用します。
 
上記の演算子は,単項演算子,特殊単項演算子,2項演算子に分けられます。
| 
単項演算子 | 
+符号,-符号,~,HIGH,LOW,HIGHW,LOWW,MIRHW,MIRLW,SMRLW,DATAPOS,BITPOS,STARTOF,SIZEOF | 
| 
2項演算子 | 
+,-,*,/,%,&,|,^,==,!=,>,>=,<,<=,&&,||,>>,<< | 
|  |  |  | 
|  |  | 
+符号,-符号,~,HIGH,LOW,HIGHW,LOWW,MIRHW,MIRLW,SMRLW,DATAPOS,BITPOS,STARTOF,SIZEOF | 
|  | 
*,/,%,>>,<< | 
|  | 
+,- | 
|  | 
&,|,^ | 
|  | 
==,!=,>,>=,<,<= | 
|  | 
&&,|| | 
 
式の演算は,次の規則に従います。
| 
- | 演算の順序は,演算子の優先順位に従います。同一順位の場合は,左から右に演算されます。単項演算子の場合は,右から左に演算されます。
 | 
| 
- | かっこ“ ( ) ”の中の演算は,かっこの外の演算に先立って行われます。 | 
| 
- | 式の演算は,32ビットで行います。式中に記述した定数,式の評価途中,および評価結果が32ビットを越えた場合は,下位32ビットを有効とします。その場合エラーは出力されません。
 ただし,.DB8疑似命令のオペランドに記述された式では,各々の項を64ビットとして扱います。
 | 
| 
- | 演算の各項は符号なし整数として扱われますが,以下の場合は符号付き整数として扱われます。 | 
乗算,除算,剰余算,論理シフトの第2項
| 
- | リロケータブル項のアセンブル時の評価値はゼロです(評価値はリンク時に決定されます)。 | 
|  |  | 
| 
5 + 8 - 6 * 2 / 4 | 
10 | 
| 
5 + (8 - 6) * 2 / 4 | 
6 | 
| 
(5 + 8 - 6)* 2 / 4 | 
3 | 
| 
2 * (0x0F - (0x0B & (0x0A | 0x0F))) | 
8 | 
| 
2 * 0x0F - 0x0B & 0x0A | 0x0F | 
0x0F | 
| 
HIGH(-1) | 
0xFF | 
| 
HIGH(0x0FFFF) | 
0xFF | 
| 
2 + 4 * 5 | 
22 | 
| 
(2 + 3) * 4 | 
20 | 
| 
10/4 | 
2 | 
| 
0 - 1 | 
0xFFFFFFFF | 
| 
-1 > 1 | 
1(真) | 
| 
EXT注 + 1 | 
0 |