adf


条件付き加算を行います。(Add on Condition Flag)

[指定形式]

-

adf imm4, reg1, reg2, reg3

-

adfcnd 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”の形式に変換されます。

表 5.29

adfcnd命令

命令

フラグ状態

フラグ状態の意味

命令展開

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 : 指定された条件コードが不正です。