論理左シフト付きフラグ条件の設定を行います。(Shift And Set Flag Condition)
[指定形式]
imm4に指定可能なものを以下に示します。
[機能]
第1オペランドに指定した絶対値式の値の下位4ビットの値で示されるフラグ状態と,現在のフラグ状態を比較します。値が一致した場合は,第2オペランドで指定したレジスタの内容を左1ビット論理シフトした値と1とを論理和して,第2オペランドに指定したレジスタに格納し,一致しなかった場合は,第2オペランドで指定したレジスタの内容を左1ビット論理シフトして第2オペランドで指定したレジスタに格納します。
cnd部分の文字列で示されるフラグ状態と現在のフラグの状態を比較します。値が一致した場合は,第1オペランドで指定したレジスタの内容を左1ビット論理シフトした値と1とを論理和して第1オペランドで指定したレジスタに格納し,一致しなかった場合は,第1オペランドで指定したレジスタの内容を左1ビット論理シフトして第1オペランドで指定したレジスタに格納します。
[詳細説明]
- | sasf命令に対し,アセンブラでは,機械語命令のsasf命令が1つ生成されます。 |
- | sasfcnd命令に対し,アセンブラでは,対応するsasf命令が生成され(「表 5.33 sasfcnd命令」を参照),“sasf imm4, reg”の形式に展開されます。 |
|
|
|
|
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
|
[フラグ]
[注意事項]
- | sasf命令のimm4に4ビットの範囲を越える絶対値式を指定した場合,次のメッセージが出力され,指定された値の下位4ビットが用いられてアセンブルが続行されます。 |
W0550011 : イミーディエトの値が指定可能な値の範囲を越えています。
|