Insert Character

This instruction is similar to the L instruction in that takes an area of memory and places it in a register. The main difference is that a single byte of characters will be inserted in the register rather than a fullword.


Format:  label     IC    R,D(X,B)

A single byte specified by D(X,B) will be copied into the RIGHTMOST byte of the register specified by R.

The three LEFTMOST bytes of R are unchanged.

The condition code is not altered, and the only errors that can occur are protection and addressing exceptions.

Suppose FLAG  DC   C'F' and that register 5 has the value
00 34 00 56.  Execution of:

   IC   R5,FLAG

will change the contents of register 5 to 00 34 00 C6


While execution of:

   IC   R5,=X'03'

will change the contents of register 5 to 00 34 00 03.

Insert Characters under Mask

This instruction is similar to the IC instruction. The main difference is that 0 to 4 bytes will be inserted in the register rather than just a single character.


Format:  label     ICM   R,mask,D(B)

Zero to four bytes will be copied from the storage area starting at D(B) and placed into the register specified by R. The number of bytes that are moved is determined by the mask. The bytes are placed into the register depending on the mask. The bytes that are copied from D(B) are contiguous bytes starting from the left.

Suppose FIELD  DC   X'FFAABBCC' and that register 7 has the value
A0 92 36 70.  Execution of:

   ICM  R7,B'1001',FIELD

will change the contents of register 7 to FF 92 36 AA


While execution of:

   ICM  R7,B'0001',FIELD

will change the contents of register 7 to A0 92 36 FF. This
is the same function as the IC instruction.


While execution of:

   ICM  R7,B'1111',FIELD

will change the contents of register 7 to FF AA BB CC. This
behaves like a L instruction, but FIELD does not have to be
on a fullword boundary.

The condition code is set.


Code     Meaning
 0       All bytes inserted are 00 or the mask was 0
 1       The LEFTMOST bit of the LEFTMOST inserted byte was 1
 2       The LEFTMOST bit of the LEFTMOST inserted byte was 0
         (but not all bits of the inserted bytes were 0)

Store Character

This instruction is similar to the ST instruction in that takes a value in a register and places it in an area of memory. The main difference is that a single byte from the register will be placed in memory rather than a fullword.


Format:  label     STC   R,D(X,B)

The RIGHTMOST byte of the register specified by R will be stored starting at D(X,B).

Unlike the ST instruction, D(X,B) does not need to be on a fullword boundary.

The condition code is not altered, and the only errors that can occur are protection and addressing exceptions.

Suppose FLD1  DC   C'FLAG'.  Execution of:

   LA   R5,64           now R5 contains 00 00 00 40
   STC  R5,FLD1

will change the contents of FLD1 to 40 D3 C1 C7

Store Characters under Mask

This instruction is similar to the STC instruction. The main difference is that 0 to 4 bytes from the register will be placed in memory.


Format:  label     STCM   R,mask,D(B)

The bytes of the register specified by R designated by the mask will be stored started as contiguous bytes starting at D(B).

The condition code is not altered.

Suppose register 7 contains A0 92 36 7C and that
FLD1  DC   4X'FF'.  Execution of:

   STCM  R7,B'1011',FLD1

will change the contents of FLD1 to A0 36 7C FF


While execution of:

   STCM  R7,B'0001',FLD1

will change the contents of FLD1 to 7C FF FF FF.  This is
the same function as the STC instruction.


While execution of:

   STCM  R7,B'1111',FLD1

will change the contents of FLD1 to A0 92 36 7C.  This is
the same function as the ST instruction except that FLD1 does
not need to be on a fullword boundary.

Compare Logical under Mask

This instruction is similar to the C instruction. The main difference is that 0 to 4 bytes from the register will be compared against bytes in memory.


Format:  label     CLM   R,mask,D(B)

A logical comparison (treated as unsigned binary numbers) will be made between the bytes of the register designated by the mask and the same number of contiguous bytes starting at D(B).

The condition code is set.


Code     Meaning
 0       The selected bytes are equal or the mask was 0
 1       The register bytes are low
 2       The contiguous bytes at D(B) are low

Suppose register 4 contains 00 AC 2B 40 and that
FLD1  DC   X'9F013C2F'.  Execution of:

   CLM   R4,B'0000',FLD1

has a comparison length of 0 bytes.  The condition code is
set to 0 since the mask is 0.


While execution of:

   CLM   R4,B'1010',FLD1

has a comparison length of 2 bytes.  The condition code is
set to 1 since 002B from register 4 is less than 9F01 from FLD1.


While execution of:

   CLM   R4,B'0111',FLD1

has a comparison length of 3 bytes.  The condition code is
set to 2 since 9F013C from FLD1 is less than AC2B40 from register
4.