The outputs from the four registers R1-R4 are controlled by tristate drivers (E1-E4); a 1 on these control signals will output the register value onto the appropriate bus. A special register "0" always outputs the value 0, and the tristate drivers for this register allow 0 to be output onto either operand bus. The registers have clock enables (L1-L4) which force the registers to load the value from the ALU output bus (BUSx) on the upcoming clock tick (clocks not shown). The output of the ALU is selected by a multiplexer (SS); a 0 on this control selects the result from an adder/subtracter unit (AS=0 chooses addition (BUSa+BUSb); AS=1 chooses subtraction (BUSa-BUSb)). When SS=1, the ALU output comes from a shift unit which takes the data on BUSb and shifts it left by 1 (putting 0 in the LSB); this is indicated using the notation <<1. Assume all arithmetic is performed on unsigned quantities; ignore any overflow conditions.
Show how the following instructions (operations) can be implemented using this CPU structure. Indicate the control signals which need to be applied. Some of these instructions require more than one cycle to execute. No register may be overwritten during the execution of any instruction, except (of course) the destination register for the operation.