Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instructions:mvr [2008/05/13 07:22] (current)
Line 1: Line 1:
 +====== Move Repeat (MVR)/OP=14 ======
  
 +==== Format ====
 +
 +^  OP  ^  AF  ^  BF  ^  A Syllable  ^  B Syllable  ^
 +
 +''OP = 14''
 +
 +**AF** is the length of the **A** field.  A value of __00__ is equal to a
 +length of 100 units (digits or characters as specified by the **A** address
 +controller).  **AF** may be indirect or may indicate that the //A Syllable//
 +is a literal.\\
 +**BF** is the number of repetitions.  A value of __00__ is equal to 100
 +repetitions.  **BF** may be indirect.
 +
 +The //A Syllable// is the address of the __source__ data field.   Address may be indexed, indirect or extended.
 +The final address controller data type should be **UN** or **UA**.  An **SN**
 +data type will be treated as **UN**.\\
 +The //B Syllable// is the address of the __destination__ data field.   Address may be indexed, indirect or extended.
 +The final address controller data type should be **UN** or **UA**.  An **SN**
 +data type will be treated as **UN**.
 +
 +==== Function ====
 +
 +The Move Repeat instruction moves **AF** number of digits or characters
 +depending on the address controllers from the __source__ field to the
 +__destination__ field such that there are **BF** consecutive copies of the
 +result in the __destination__ field.
 +
 +When both address controllers specify 8-bit format (**UA**), move each
 +character.
 +
 +When both address controllers specify unsigned 4-bit format (**UN**), move
 +each digit.
 +
 +When the **A** and **B** controllers specify **UA** and **UN** respectively,
 +only move the low order digit from each character in the __source__ data field
 +to the __destination__ data field.
 +
 +When the **A** and **B** controllers specify **UN** and **UA** respectively,
 +move each digit and set the zone (high order) digit of the character in the
 +__destination__ data field to the standard **EBCDIC** numeric subset code
 +(**F**).
 +
 +==== Comparison Flags ====
 +
 +The [[processor_state:comparison_flags|Comparison Flags]] are unchanged by
 +this instruction.
 +
 +==== Overlap ====
 +
 +**A** and **B** may totally overlap or may have matching type-address overlap (see **3.5.3**).
 +
 +Partial overlap of **A** and **B** other than matching type-address overlap may produce
 +incompatible results.  See [[compatibility_notes:a.15|Compatibility Notes A.15]].
 +
 +==== Examples ====
 +
 +=== Example (1) Repeat a 3 digit numeric field 4 times ===
 +
 +^  OP  ^  AFBF  ^  A Syllable  ^  B Syllable  ^
 +|  14  |  0304  |  A Field **UN**  |  B Field **UN**  |
 +
 +                      BEFORE              AFTER
 +     A Field            057             unchanged
 +     B Field       nnnnnnnnnnnn       057057057057
 +     Comparison Flags   nn              unchanged
 +     Overflow Flag      nn              unchanged
 +
 +=== Example (2) Repeat a 3 character alpha field twice in a numeric field ===
 +
 +^  OP  ^  AFBF  ^  A Syllable  ^  B Syllable  ^
 +|  l4  |  0302  |  A Field **UA**  |  B Field **UN**  |
 +
 +                      BEFORE              AFTER
 +     A Field          D4D5D6            unchanged
 +     B Field          nnnnnn             456456
 +     Comparison Flags   nn              unchanged
 +     Overflow Flag      nn              unchanged
instructions/mvr.txt ยท Last modified: 2008/05/13 07:22 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki