TESTB (ビットのテスト)
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
TESTB | ビット番号 | 文字フィールド | OF | ON | EQ |
TESTB は、演算項目 2 で示されたビットを、結果フィールドとして指定さ れたフィールド内の対応するビットと比較します。結果フィールドは 1 桁の文 字フィールドでなければなりません。71 から 76 桁目の結果の 標識は、結果フィールドのビットの状況を反映します。 演算項目 2 は、常に結果フィールドの元となるビットです。
演算項目 2 には以下のものを入れることができます。
- ビット番号 0 から 7: 1 つの 命令で 1 から 8 ビットをテストすることができます。 テストされるビットは 0 から 7 の番号で識別されます (0 が左端ビットです)。 ビット番号はアポストロフィで囲まなければなりません。例えば、ビット 0、2、および 5 をテストするためには、 演算項目 2 に ‘025’ を入れます。
- フィールド名: 演算項目 2 に、1 桁の 文字フィールドの名前、テーブル名、または配列要素を指定することができます。 このフィールド、テーブル名、または配列要素でオンのビットが、 結果フィールドの対応するビットと比較されます。オフのビットは 対象外です。 配列のそれぞれの要素が 1 桁の文字フィールドである場合には、結果フィール ドに指定されるフィールドは配列要素とすることができます。
- 16 進数リテラルまたは名前のついた定数: 1 バイトの 16 進数リテラルまたは 16 進数の名前のついた定数を指定する ことができます。 演算項目 2 でオンのビットが、結果フィールドの対応するビットと比較されま す。オフのビットは対象外です。
図 1 に、TESTB 命令の使用法を示します。
71 から 76 桁目に割り当てられた標識は、結果フィールドのビットの状況を反映
します。 1 つの命令に少なくとも 1 つの標識を割り当てなければならず、最大
3 つまで割り当ていることができます。 TESTB 命令では、結果の標識は次のように設定されます。
- 71 桁目と 72 桁目: これらの桁の標識は、演算項目 2 に指定されたビット番号または演算項目 2 のフィールドでオンになっているそ れぞれのビットが結果フィールドでオフになっている場合にオンに設定され ます。 すなわち、指定されたすべてのビットがオフに等しくなります。
- 73 桁目と 74 桁目: これらの桁の標識は、演算項目 2
に指定されたビット番号または演算項目 2 のフィールドでオンになっているそ
れぞれのビットが、結果フィールドで混在する状況 (あるものはオンで、ある
ものはオフ) の場合にオンに設定されます。 すなわち、指定された少なくとも 1 つのビットがオンになります。
注: 1 つのビットだけをテストする場合には、これらの桁はブランクでなけ ればなりません。 フィールド名が演算項目 2 に指定されていて、1 つのビットだけがオンになっ ている場合には、73 桁目と 74 桁目の標識はオンに設定されません。
- 75 桁目と 76 桁目: これらの桁の標識は、演算項目 2
に指定されたビット番号または演算項目 2 のフィールドでオンになっているそ
れぞれのビットが結果フィールドでオンになっている場合にオンに設定され
ます。 すなわち、指定されたすべてのビットがオンに等しくなります。 注: 演算項目 2 のフィールドにオンのビットがない場合には、どの標識も オンに設定されません。
詳細については、ビット操作または テスト命令を参照してください。
図 1. TESTB 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* The field bit settings are FieldF = 00000001, and FieldG = 11110001.
*
* Indicator 16 is set on because bit 3 is off (0) in FieldF.
* Indicator 17 is set off.
C TESTB '3' FieldF 16 17
*
* Indicator 16 is set on because both bits 3 and 6 are off (0) in
* FieldF. Indicators 17 and 18 are set off.
C TESTB '36' FieldF 161718
*
* Indicator 17 is set on because bit 3 is off (0) and bit 7 is on
* (1) in FLDF. Indicators 16 and 18 are set off.
C TESTB '37' FieldF 161718
*
* Indicator 17 is set on because bit 7 is on (1) in FLDF.
* Indicator 16 is set off.
C TESTB '7' FieldF 16 17
*
* Indicator 17 is set on because bits 0,1,2, and 3 are off (0) and
* bit 7 is on (1). Indicators 16 and 18 are set off.
C TESTB FieldG FieldF 161718
*
* The hexadecimal literal X'88' (10001000) is used in factor 2.
* Indicator 17 is set on because at least one bit (bit 0) is on
* Indicators 16 and 18 are set off.
C TESTB X'88' FieldG 161718