START: LHB R1, 0xA5 LLB R1, 0xF3 //R1 contains 0xA5F3 LHB R2, 0xA5 LLB R2, 0x09 //R2 contains 0xA509 AND R3, R1, R2 //R3 contains 0xA501, R2 has data dependence XOR R4, R1, R2 //R4 contains 0x00FA OR R5, R3, R4 //R5 contains 0xA5FB, R4 has data dependence NOT R6, R2 //R6 contains 0x5AF6 LHB R14, 0x00 LLB R14, 0x06 //DS contains 0x0060 SW R6, 8 //Storing R6 (0x5AF6), we will read it back later ADD R7, R1, R4 //R7 contains 0xA6ED ADD R3, R2, R1 //R3 contains 0x4AFC and overflow = 1 SUB R8, R5, R4 //R8 contains 0xA501 LW R9, 8 //R9 contains 0x5AF6 VADD R10, R4, R5 //R10 contains 0xA5F5 since carry DOES NOT propagate SLL R11, R4, 4 //R11 contains 0x0FA0 SRA R12, R4, 4 //R12 contains 0x000F LHB R13, 0x00 LLB R13, 0x01 //R13 contains 0x0001 LOOP: SUB R12, R12, R13 //decrementing R12 by 1 B 100, LOOP //Loop until we hit zero (Z = 1) ENDLOOP: SW R13, 10 SW R12, 12 LW R7, 10 //R7 contains 0x0001 LW R8, 12 //R8 contains 0x0000 CALLTEST: ADD R10, R10, R7 //incremented so R10 contains 0xA5F6 CALL LSKIP ADD R10, R10, R7 //incremented so R10 contains 0xA5F7 B 111, LAST LSKIP: SW R10, 28 //address contains 0xA5F6 RET ADD R10, R10, R7 //should never be run, if R10 gets 0xA5F8, something is wrong. LAST: LW R10, 28 //R10 contains 0xA5F6 again.