条件付き加算を行います。(Add on Condition Flag)
[指定形式]
- | adf imm4, reg1, reg2, reg3 |
imm4に指定できるものを次に示します。
- | 4ビット幅までの値を持つ絶対値式(0xDは指定できません) |
[機能]
- | “adf imm4, reg1, reg2, reg3”の形式 |
第1オペランドに指定した絶対値式の下位4ビットの値で示されるフラグ状態(「表 5.29 adfcnd命令」を参照)と現在のフラグ状態を比較します。
値が一致した場合には,第3オペランドに指定したレジスタのワード・データに,第2オペランドに指定したレジスタのワード・データを加算し,さらに1を加算します。結果を第4オペランドに指定したレジスタに格納します。
値が一致しなかった場合には,第3オペランドに指定したレジスタのワード・データに,第2オペランドに指定したレジスタのワード・データを加算します。その結果を第4オペランドに指定したレジスタに格納します。
- | “adfcnd reg1, reg2, reg3”の形式 |
cnd部分の文字列で示されるフラグ状態と現在のフラグの状態を比較します。
値が一致した場合に第2オペランドに指定したレジスタのワード・データに,第1オペランドに指定したレジスタのワード・データを加算し,さらに1を加算します。その結果を第3オペランドに指定したレジスタに格納します。
値が一致しなかった場合には,第2オペランドに指定したレジスタのワード・データに,第1オペランドに指定したレジスタのワード・データを加算します。その結果を第3オペランドに指定したレジスタに格納します。
[詳細説明]
- | adf命令に対し,アセンブラでは,機械語命令のadf命令が1つ生成されます。 |
- | adfcnd命令に対し,アセンブラでは,対応するadf命令が生成され(「表 5.29 adfcnd命令」を参照),“adf imm4, reg1, reg2, reg3”の形式に変換されます。 |
|
|
|
|
adfgt
|
((S xor OV)or Z)= 0
|
Greater than(signed)
|
adf 0xF
|
adfge
|
(S xor OV)= 0
|
Greater than or equal(signed)
|
adf 0xE
|
adflt
|
(S xor OV)= 1
|
Less than(signed)
|
adf 0x6
|
adfle
|
((S xor OV)or Z)= 1
|
Less than or equal(signed)
|
adf 0x7
|
adfh
|
(CY or Z)= 0
|
Higher(Greater than)
|
adf 0xB
|
adfnl
|
CY = 0
|
Not lower(Greater than or equal)
|
adf 0x9
|
adfl
|
CY = 1
|
Lower(Less than)
|
adf 0x1
|
adfnh
|
(CY or Z)= 1
|
Not higher(Less than or equal)
|
adf 0x3
|
adfe
|
Z = 1
|
Equal
|
adf 0x2
|
adfne
|
Z = 0
|
Not equal
|
adf 0xA
|
adfv
|
OV = 1
|
Overflow
|
adf 0x0
|
adfnv
|
OV = 0
|
No overflow
|
adf 0x8
|
adfn
|
S = 1
|
Negative
|
adf 0x4
|
adfp
|
S = 0
|
Positive
|
adf 0xC
|
adfc
|
CY = 1
|
Carry
|
adf 0x1
|
adfnc
|
CY = 0
|
No carry
|
adf 0x9
|
adfz
|
Z = 1
|
Zero
|
adf 0x2
|
adfnz
|
Z = 0
|
Not zero
|
adf 0xA
|
adft
|
always 1
|
Always 1
|
adf 0x5
|
[フラグ]
CY
|
MSB(Most Significant Bit)からのキャリーがあれば1,そうでない場合0
|
OV
|
オーバーフローが起こった場合1,そうでない場合0
|
S
|
演算結果が負の場合1,そうでない場合0
|
Z
|
演算結果が0の場合1,そうでない場合0
|
SAT
|
−
|
[注意事項]
- | adf命令のimm4に4ビットの範囲を越える絶対値式を指定した場合,次のメッセージが出力され,指定された値の下位4ビットが用いられてアセンブルが続行されます。 |
W0550011 : イミーディエトの値が指定可能な値の範囲を越えています。
|
- | adf命令のimm4に0xDを指定した場合,次のメッセージが出力され,アセンブルが中止されます。 |
E0550261 : 指定された条件コードが不正です。
|