Instruction_1 of the following program copies the rightmost three bits (000) of 0000 from latch 0001 to latch 0010 for 1000. Notice that, because latch 0110 of instruction_1 holds 0111, the rightmost three 'to' bits are copied to.

Before Copy 000 to 0010 for 1000

               latch  bit
             address  values
                0000  0100  address of instruction
                0001  0000  from data
                0010  1111  to data                             
                0011  0000
instruction_1   0100  0001  from address 
                0101  0010  to address
                0110  0111  'to' bits to copy to
                0111  1000  instr.addr.and rot.amount
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 Copy 000 to 0010 for 1000

               latch  bit
             address  values
                0000  1000 <------| address of instruction
                0001  0000 ---|   | from data
                0010  1000 <--|   | to data
                0011  0000        |
instruction_1   0100  0001        | from address 
                0101  0010        | to address
                0110  0111        | 'to' bits to copy to
                0111  1000 -------| instr.addr.and rot.amount
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 one space to the left (for 0100) 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 01 in the rightmost two bits, the from data is rotated one bit to the left.

Before Rotate 0010 One Bit Left for 0100

               latch  bit
             address  values
                0000  0100  address of instruction
                0001  0010  from data
                0010  0000  to data                             
                0011  0000
instruction_1   0100  0001  from address 
                0101  0010  to address
                0110  1111  'to' bits to copy to
                0111  1001  instr.addr.and rot.amount
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. Latch 0000 now holds 1001. The right two bits in latch 0000 do not affect what instruction is executed next. The left two bits of 1001 (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 One Bit Left for 0100

               latch  bit
             address  values
                0000  1001 <------| address of instruction
                0001  0010 ---|   | from data
                0010  0100 <--|   | to data
                0011  0000        |
instruction_1   0100  0001        | from address 
                0101  0010        | to address
                0110  1111        | 'to' bits to copy to
                0111  1001 -------| instr.addr.and rot.amount
instruction_2   1000  0000  
                1001  0000
                1010  0000
                1011  1000  
                1100  0000  
                1101  0000  
                1110  0000  
                1111  0000


Page 15

Page 14 . . . Page 1 . . . Page 16