Instruction_1 of the following program rotates the bits (0010) of latch 0001 two spaces to the left (for 1000) and copies all four rotated bits to latch 0010. Notice that, because latch 0110 of instruction_1 holds 1111, all four bits are copied to. Also notice that, because latch 0111 has 10 in the rightmost two bits, the from data is rotated two bits to the left.

## Before Rotate 0010 Two Bits Left for 1000

latch  bit
0001  0010  from data
0010  0000  to data
0011  0000
0110  1111  'to' bits to copy to
instruction_2   1000  0000
1001  0000
1010  0000
1011  1000
1100  0000
1101  0000
1110  0000
1111  0000

After instruction_1 is executed, the memory has the following values. Again, the right two bits in latch 0000 do not affect what instruction is executed next. The left two bits of 1010 (in latch 0000) are 10, so the next instruction to be executed will be instruction_2, in latches 1000, 1001, 1010, and 1011

## After Rotate 0010 Two Bits Left for 1000

latch  bit
0000  1010 <------| address of instruction
0001  0010 ---|   | from data
0010  1000 <--|   | to data
0011  0000        |
instruction_1   0100  0001        | from address
0110  1111        | 'to' bits to copy to
instruction_2   1000  0000
1001  0000
1010  0000
1011  1000
1100  0000
1101  0000
1110  0000
1111  0000

Instruction_1 of the following program rotates the bits (0010) of latch 0001 three spaces to the left (for 0001) and copies all four rotated bits to latch 0010. Notice that, because latch 0110 of instruction_1 holds 1111, all four bits are copied to. Also notice that, because latch 0111 has 11 in the rightmost two bits, the from data is rotated three bits to the left. Notice also that rotating three bits to the left is the same as rotating one bit to the right.

## Before Rotate 0010 Three Bits Left for 0001

latch  bit
0001  0010  from data
0010  0000  to data
0011  0000
0110  1111  'to' bits to copy to
instruction_2   1000  0000
1001  0000
1010  0000
1011  1000
1100  0000
1101  0000
1110  0000
1111  0000

After instruction_1 is executed, the memory has the following values.

## After Rotate 0010 Three Bits Left for 0001

latch  bit
0000  1011 <------| address of instruction
0001  0010 ---|   | from data
0010  0001 <--|   | to data
0011  0000        |
instruction_1   0100  0001        | from address
0110  1111        | 'to' bits to copy to
instruction_2   1000  0000
1001  0000
1010  0000
1011  1000
1100  0000
1101  0000
1110  0000
1111  0000

The right two bits of the last word (four bits here) of an instruction indicate how many bits to rotate to the left according to the following table:

rotate
bit      left
values      amount

00      0
01      1
10      2
11      3

If the rightmost bit value is 1, then there is 1 bit of rotation left. If the left bit value is 1, then there is an additional two bits of rotation left. The following table shows how rotation works with the four bits of a word labeled 'A,' 'B,' 'C,' and 'D.'

rotate              rotate    rotate
bit      four       left     right
values    bits      amount    amount

00      ABCD         0        0
01      BCDA         1        3
10      CDAB         2        2
11      DABC         3        1

Notice again that rotating 3 bits left is the same as rotating 1 bit right. Similarly, 1 bit left is 3 bits right and 2 bits left is 2 bits right.

Page 16

Page 15 . . . Page 1 . . . Page 17