演算子のタイプ
11
種類の演算子のいずれかを選択し、それによってソース値とターゲット値の処理方法を制御するこ
とができます。これらの演算子を使用する際には、次の制限事項について留意する必要があります。
Â
レジスタには、オーバーフローまたはアンダーフローフラグはありません。
Â
スクリプトによって格納される値が
0
より小さいか
65535
より大きい場合、エラーメッセージは生
成されず、その値はラップされます。たとえば、
3
から
7
を引くと通常は
–4
ですが、この減算を
スクリプトで行うと
65532
が格納されます。また、スクリプトで
6
を
65534
に足すと、
65540
で
はなく
4
が格納されます。
選択可能な演算子のタイプは次の通りです。
Â
mov:ソース値をターゲット場所に代入します。ターゲットの既存の値は上書きされます。
Â
swp:ソース値をターゲット値と交換します。ソース値がターゲット場所に書き込まれ、ターゲッ
ト値はソース場所に書き込まれます。これは、ソース場所に値を書き込める唯一の演算子です。
Â
add:ソース値 とターゲット値 を加算し、その結 果をターゲット場 所に書き込みま す。
Â
sub:ソース値をターゲット値から減算し、その結果をターゲット場所に書き込みます。
Â
mul:ソース値とターゲット値を乗算し、その結果をターゲット場所に書き込みます。
Â
div:ターゲット値 をソース値で除算 し、その結果を ターゲット場所に 書き込みます。
Â
mod:ターゲット値をソース値で除算し、その剰余(モジュロ)をターゲット場所に書き込みます。
Â
ran:
1
とソース値の間の乱数値を生成し、その結果をターゲット場所に書き込みます。
第
14
章
スクリプトを作成する
487
Â
and:ソースとターゲットそれぞれの
16
ビットの値について、相互に対応するビット間で「ビッ
ト単位の
AND
」演算を実行し、その結果をターゲット場所に書き込みます。双方のビットがオン
(
1
)に設定されている場合は、その値が保持されます。どちらか一方のビットがオフ(
0
)に設定
されている場合は、ターゲットのビットがリセットされます(つまり値は
0
)。
Â
or:ソースとターゲットそれぞれの
16
ビットの値について、相互に対応するビット間で「ビット
単位の
OR
」演算を実行し、その結果をターゲット場所に書き込みます。どちらか一方のビットが
オン(
1
)に設定されている場合は、その値が保 持されます。双方のビットがオフ(
0
)に設定さ
れている場合は、ターゲットのビットがリセットされます(値
0
)。
Â
xor:ソースとターゲットそれぞれの
16
ビットの値について、相互に対応するビット間で「ビット
単位の
XOR
」演算を実行し、その結果をターゲット場所に書き込みます。どちらか一方のビット
がオン(
1
)に設定されている場合は(ただし双方がオンの場合は除く)、その値が保持されます。
双方のビットが オンの場合、または双方のビット がオフの場合は、ターゲットの ビットがリセッ
トされます(値
0
)。