Last modified on 14 June 2014, at 22:20

360 Assembly/360 Instructions/MVC

MVC - SS - Opcode D2 - Move Character

The MVC instruction allows the movement of 1 to 256 characters from one location in memory to another. It is a six byte, SS (storage-to-storage) instruction.

Example usageEdit

       MVC  TARGET,SOURCE      MOVE SOURCE TO TARGET
       MVC  TARGET(40),SOURCE  MOVE 40 BYTES FROM SOURCE TO TARGET
       MVC  TARGET+10(20),SOURCE+3  MOVE 20 BYTES STARTING AT SOURCE+3 TO TARGET+10
       MVC  5(3,14),SOURCE     MOVE 3 BYTES FROM SOURCE TO THE ADDRESS BEGINNING AT
*                              REGISTER 14 PLUS 5

The following example is commonly used to clear out a print line:

       MVI TARGET,C' '           PUT A BLANK AT THE BEGINNING OF THE LINE
       MVC TARGET+1(132),TARGET  MOVES THE FIRST BLANK TO CHARACTER 2, WHICH MOVES TO CHAR. 3, THEN 4 AND SO ON

FormatEdit

MVC D1(L,B1),D2(B2)

Where

  • D1 is the displacement from base register B1, and is the target address
  • D2 is the displacement from base register B2, and is the source address
  • L is the number of bytes to move from source to target, valid values of 1 to 256.

OpcodeEdit

SS Instruction (6 bytes) in Hex
Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6
(8 bits) (8 bits) (First 4 Bits of Byte 3) (Second 4 Bits of Byte 3) (8 bits) (First 4 Bits of Byte 5) (Second 4 Bits of Byte 5) (8 bits)
Opcode
D2
L-1 B1 D1 (12 Bits) B2 D2 (12 Bits)

Because 1 byte can only hold the values 0 to 255, the length to be moved is one more than the actual L value in the opcode, or, the actual length to move is reduced by one when placing it in the length field in the instruction.

AvailabilityEdit

The MVC instruction is available on all models.

Purpose of InstructionEdit

The MVC instruction can be used to move from 1 to 256 bytes of data. The MVCL instruction is available on 370 and above machines for moving larger volumes of data.

Typical UsageEdit

When a program needs to move a string from one location to another. If the length is not specified, the assembler uses the specified length of the target field. The assembler will flag an error if the target length is over 256 bytes. The minimum length that can be moved is one byte.

OperationEdit

The string of characters in the address noted in the right operand is moved, for the specified length, to the address noted in the left operand. Bytes are moved one at a time.

Exceptions and FaultsEdit

  • Protection Exception - the source or the target is outside of the legal address range assigned to this task


Previous Instruction
MSTA
360 Assembly Instructions Next Instruction
MVCDK
Previous Opcode
D1
Next Opcode
D3
360 Assembly Language
360 Family Introduction · Basic FAQ · 360 Family · 360 Architecture · Comments
360 Instruction Set 360 Instructions · Branch Instructions · Data Transfer Instructions · Control Flow Instructions · Arithmetic Instructions · Logic Instructions · Shift and Rotate Instructions · Other Instructions
Syntaxes and Assemblers 360 Assemblers· Pseudo Instructions
Instruction Extensions Floating Point · High-Level Languages