LIS R1, #01 ; R1 = 1 LIS R2, #02 ; R2 = 2 LIL R3, #000003 ; (LIL is 2 halfwords) ; R3 = 3 MOVE R4, R1 ; R4 = R1 (R4 = 1) ADDSI R4, #03 ; R4 = R4 + 3 (R4 = 1 + 3 = 4) ADDI R5, R2, #0003 ; R5 = R2 + 3 (R5 = 2 + 3 = 5)
R1 | 1 |
R2 | 2 |
R3 | 3 |
R4 | 4 |
R5 | 5 |
CONFUSE
macro are:
0x0100 | 2 |
0x0104 | 1 |
0x0108 | 4 |
0x0112 | 3 |
CONFUSE
saves the PC (initial memory location)
in the variable confuse
. The the PC is incremented
(skips forward) by 1 word. A
is stored in this memory
location. The PC then goes back to the initial memory location
that was saved in confuse
. B
is stored in
this memory location. (The PC is incremented by 1 word automatically
in the store as part of the fetch-execute cycle, so is at the location
where A
was stored.) The PC is incremented by 1 word
so that it ends up at the memory location after A
.