sasf


論理左シフト付きフラグ条件の設定を行います。(Shift And Set Flag Condition)

[指定形式]

-

sasf imm4, reg

-

sasfcnd reg

 

imm4に指定可能なものを以下に示します。

-

4ビット幅までの値を持つ絶対値式

[機能]

-

“sasf imm4, reg”の形式

第1オペランドに指定した絶対値式の値の下位4ビットの値で示されるフラグ状態と,現在のフラグ状態を比較します。値が一致した場合は,第2オペランドで指定したレジスタの内容を左1ビット論理シフトした値と1とを論理和して,第2オペランドに指定したレジスタに格納し,一致しなかった場合は,第2オペランドで指定したレジスタの内容を左1ビット論理シフトして第2オペランドで指定したレジスタに格納します。

-

“sasfcnd reg”の形式

cnd部分の文字列で示されるフラグ状態と現在のフラグの状態を比較します。値が一致した場合は,第1オペランドで指定したレジスタの内容を左1ビット論理シフトした値と1とを論理和して第1オペランドで指定したレジスタに格納し,一致しなかった場合は,第1オペランドで指定したレジスタの内容を左1ビット論理シフトして第1オペランドで指定したレジスタに格納します。

[詳細説明]

-

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

-

sasfcnd命令に対し,アセンブラでは,対応するsasf命令が生成され(「表 5.33 sasfcnd命令」を参照),“sasf imm4, reg”の形式に展開されます。

表 5.33

sasfcnd命令

命令

フラグ状態

フラグ状態の意味

命令展開

sasfgt

((S xor OV)or Z)= 0

Greater than(signed)

sasf 0xF
sasfge

(S xor OV)= 0

Greater than or equal(signed)

sasf 0xE
sasflt

(S xor OV)= 1

Less than(signed)

sasf 0x6
sasfle

((S xor OV)or Z)= 1

Less than or equal(signed)

sasf 0x7
sasfh

(CY or Z)= 0

Higher(Greater than)

sasf 0xB
sasfnl

CY = 0

Not lower(Greater than or equal)

sasf 0x9
sasfl

CY = 1

Lower(Less than)

sasf 0x1
sasfnh

(CY or Z)= 1

Not higher(Less than or equal)

sasf 0x3
sasfe

Z = 1

Equal

sasf 0x2
sasfne

Z = 0

Not equal

sasf 0xA
sasfv

OV = 1

Overflow

sasf 0x0
sasfnv

OV = 0

No overflow

sasf 0x8
sasfn

S = 1

Negative

sasf 0x4
sasfp

S = 0

Positive

sasf 0xC
sasfc

CY = 1

Carry

sasf 0x1
sasfnc

CY = 0

No carry

sasf 0x9
sasfz

Z = 1

Zero

sasf 0x2
sasfnz

Z = 0

Not zero

sasf 0xA
sasft

always 1

Always 1

sasf 0x5
sasfsa

SAT = 1

Saturated

sasf 0xD

 

[フラグ]

CY

OV

S

Z

SAT

[注意事項]

-

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

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