BMCnd

条件ビット転送

BMCnd

Bit Move Conditional


【構文】

BMCnd src, dest

 

【オペレーション】

(1)destがメモリの場合

unsigned char dest;

if ( Cnd )

dest |= ( 1 << ( src & 7 ));

else

dest &= ~( 1 << ( src & 7 ));

 

(2)destがレジスタの場合

register unsigned long dest;

if ( Cnd )

dest |= ( 1 << ( src & 31 ));

else

dest &= ~( 1 << ( src & 31 ));

 

【機能】

-

Cndで示す条件の真偽値をsrcで指定されたdestのビットに転送します。真の場合は“1”、偽の場合は“0”が転送されます。

-

BMCndには以下の種類があります。

BCnd

条件

BMGEU,

BMC

C == 1

等しいまたは大きい/

Cフラグが“1”

BMEQ,

BMZ

Z == 1

等しい/

Zフラグが“1”

=

BMGTU

C & ~Z == 1

大きい

<

BMPZ

S == 0

正またゼロ

0≦

BMGE

S ^ O == 0

等しい、または符号付きで大きい

BMGT

(S ^ O) |

Z == 0

符号付きで大きい

<

BMO

O == 1

Oフラグが“1”

 

BMLTU,

BMNC

C == 0

小さい/

Cフラグが“0”

>

BMNE,

BMNZ

Z == 0

等しくない/

Zフラグが“0”

BMLEU

C & ~Z == 0

等しいまたは小さい

BMN

S == 1

0 >

BMLE

(S ^ O) |

Z == 1

等しい、または符号付きで小さい

BMLT

S ^ O == 1

符号付きで小さい

>

BMNO

O == 0

Oフラグが“0”

 

srcのIMMの値はビット番号です。

IMM:3の範囲は、0≦IMM:3≦7です。

IMM:5の範囲は、0≦IMM:5≦31です。

 

【命令フォーマット】

構文

処理

サイズ

対象

コードサイズ

(バイト)

src

dest

BMCnd src, dest

B

#IMM:3

[Rd].B

3

B

#IMM:3

dsp:8[Rd].B

4

B

#IMM:3

dsp16[Rd].B

5

BMCnd src, dest

L

#IMM:5

Rd

3

 

【フラグ変化】

フラグ変換はありません。

 

【記述例】

BMC     #7, [R2]
BMZ     #31, R2