一般的な MOVEA 命令
アプリケーション・プログラムに MOVEA 命令を使用する必要があって、
数値の MOVEA 命令に対する制約事項のために使用できない場合には、
文字の MOVEA 命令を使用できる場合があります。
数値配列がゾーン 10 進数形式の場合には次のようにしてください。
- 数値配列をデータ構造のサブフィールドとして定義します。
- データ構造の中の数値配列を文字配列として再定義します。
MOVEA で形象定数を指定した場合には、生成される定数の長さは、指定
した配列の部分に等しくなります。 数値配列の形象定数の場合には、それぞれの配列要素に入れられる符号を除い
て、要素の境界は無視されます。 例は次のようになります。
- MOVEA *BLANK ARR(X)
要素 X から始まり、ARR の残りの部分にはブランクが入ります。
- MOVEA *ALL‘XYZ’ ARR(X)
ARR には 4 バイトの文字要素があります。 文字の MOVEA の場合には常に要素の境界は無視されます。 要素 X から始まって、配列の残りには ‘XYZXYZXYZXYZ.. .’.
文字、図形、UCS-2、および数値の MOVEA 命令の場合には、命令拡張 P を指定して、結果に右から埋め込みを行うことができます。
MOVEA 命令の詳細については、移動命令を参照してください。
図 1. MOVEA 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA ARRX ARRY
* Array-to-array move. No indexing; different length array,
* same element length.

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA ARRX ARRY(3)
* Array-to-array move with index result field.

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA ARRX ARRY
* Array-to-array move, no indexing and different length array
* elements.

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA ARRX(4) ARRY
* Array-to-array move, index factor 2 with different length array
* elements.

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA FIELDA ARRY
* Field-to-array move, no indexing on array.

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* In the following example, N=3. Array-to-field move with variable
* indexing.
C MOVEA ARRX(N) FIELD
*

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA ARRB ARRZ
*
* An array-to-array move showing numeric elements.

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA(P) ARRX ARRY
* Array-to-array move with padding. No indexing; different length
* array with same element length.

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA(P) ARRB ARRZ
*
* An array-to-array move showing numeric elements with padding.

*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C MOVEA(P) ARRX(3) ARRY
* Array-to-array move with padding. No indexing; different length
* array with different element length.
