SHAR

算術シフト

SHAR

SHift Arithmetic Right


【構文】

(1)SHAR src, dest

(2)SHAR src, src2, dest

 

【オペレーション】

(1)dest = ( signed long ) dest >> ( src & 31 );

(2)dest = ( signed long ) src2 >> ( src & 31 );

 

【機能】

-

destをsrcで指定されたビット数分、算術右シフトし、その結果をdestに格納します。

-

LSBから溢れたビットはCフラグに転送します。

-

srcの値は符号なし整数です。srcの範囲は、0≦src≦31です。

-

srcがレジスタのとき、LSB側5ビットのみ有効です。

-

src2をdestに転送後、destをsrcで指定されたビット数分、算術右シフトし、その結果をdestに格納します。

-

LSBから溢れたビットはCフラグに転送します。

-

srcの値は符号なし整数です。srcの範囲は、0≦src≦31です。

 

【命令フォーマット】

構文

処理

サイズ

src

src2

dest

コードサイズ

(バイト)

(1)SHAR src, dest

L

#IMM:5

Rd

2

L

Rs

Rd

3

(1)SHAR src, src2, dest

L

#IMM:5

Rs

Rd

3

 

【フラグ変化】

フラグ

C

Z

S

O

変化

条件

C:シフトアウトしたビットが“1”のとき“1”、それ以外のとき“0”になります。ただし、srcが0のときは“0”になります。

Z:演算後のdestが0のとき“1”、それ以外のとき“0”になります。

S:演算後のdestのMSBが“1”のとき“1”、それ以外のとき“0”になります。

O:“0”になります。

 

【記述例】

SHAR    #3, R2
SHAR    R1, R2
SHAR    #3, R1, R2