sbf


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

[指定形式]

-

sbf imm4, reg1, reg2, reg3

-

sbfcnd reg1, reg2, reg3

 

imm4に指定できるものを次に示します。

-

4ビット幅までの値を持つ絶対値式(0xDは指定できません)

[機能]

-

“sbf imm4, reg1, reg2, reg3”の形式

第1オペランドに指定した絶対値式の下位4ビットの値で示されるフラグ状態(「表 5.30 sbfcnd命令」を参照)と現在のフラグ状態を比較します。

値が一致した場合には,第3オペランドに指定したレジスタのワード・データから,第2オペランドに指定したレジスタのワード・データを減算し,さらに1を減算します。その結果を第4オペランドに指定したレジスタに格納します。

値が一致しなかった場合には,第3オペランドに指定したレジスタのワード・データから,第2オペランドに指定したレジスタのワード・データを減算します。その結果を第4オペランドに指定したレジスタに格納します。

-

“sbfcnd reg1, reg2, reg3”の形式

cnd部分の文字列で示されるフラグ状態と現在のフラグの状態を比較します。

値が一致した場合には,第2オペランドに指定したレジスタのワード・データから,第1オペランドに指定したレジスタのワード・データを減算し,さらに1を減算します。その結果を第3オペランドに指定したレジスタに格納します。

値が一致しなかった場合には,第2オペランドに指定したレジスタのワード・データから,第1オペランドに指定したレジスタのワード・データを減算します。その結果を第3オペランドに指定したレジスタに格納します。

[詳細説明]

-

sbf命令に対し,アセンブラでは,機械語命令のsbf命令が1つ生成されます。

-

sbfcnd命令に対し,アセンブラでは,対応するsbf命令が生成され(「表 5.30 sbfcnd命令」を参照),“sbf imm4, reg1, reg2, reg3”の形式に変換されます。

表 5.30

sbfcnd命令

命令

フラグ状態

フラグ状態の意味

命令展開

sbfgt

((S xor OV)or Z)= 0

Greater than(signed)

sbf 0xF
sbfge

(S xor OV)= 0

Greater than or equal(signed)

sbf 0xE
sbflt

(S xor OV)= 1

Less than(signed)

sbf 0x6
sbfle

((S xor OV)or Z)= 1

Less than or equal(signed)

sbf 0x7
sbfh

(CY or Z)= 0

Higher(Greater than)

sbf 0xB
sbfnl

CY = 0

Not lower(Greater than or equal)

sbf 0x9
sbfl

CY = 1

Lower(Less than)

sbf 0x1
sbfnh

(CY or Z)= 1

Not higher(Less than or equal)

sbf 0x3
sbfe

Z = 1

Equal

sbf 0x2
sbfne

Z = 0

Not equal

sbf 0xA
sbfv

OV = 1

Overflow

sbf 0x0
sbfnv

OV = 0

No overflow

sbf 0x8
sbfn

S = 1

Negative

sbf 0x4
sbfp

S = 0

Positive

sbf 0xC
sbfc

CY = 1

Carry

sbf 0x1
sbfnc

CY = 0

No carry

sbf 0x9
sbfz

Z = 1

Zero

sbf 0x2
sbfnz

Z = 0

Not zero

sbf 0xA
sbft

always 1

Always 1

sbf 0x5

 

[フラグ]

CY

MSB(Most Significant Bit)からのボローがあれば1,そうでない場合0

OV

オーバーフローが起こった場合1,そうでない場合0

S

演算結果が負の場合1,そうでない場合0

Z

演算結果が0の場合1,そうでない場合0

SAT

[注意事項]

-

sbf命令のimm4に4ビットの範囲を越える絶対値式を指定した場合,次のメッセージが出力され,指定された値の下位4ビットが用いられてアセンブルが続行されます。

W0550011 : イミーディエトの値が指定可能な値の範囲を越えています。

 

-

sbf命令のimm4に0xDを指定した場合,次のメッセージが出力され,アセンブルが中止されます。

E0550261 : 指定された条件コードが不正です。