TITLE "mp2.a by Douglas Jones" USE "hawk.h" USE "monitor.h" ARSIZE = 4 INT MAIN S MAIN MAIN: ; entry point STORES R1,R2 ADDI R2,R2,ARSIZE ; --- begin aplication code --- LIS R8,25 ; i = 25 LOOP: ; loop { CMPI R8,1 BEQ LOOPQT ; if (i == 1) break BITTST R8,0 BBR ELSE ; if (i is odd) { ADDSL R8,R8,1 ADDSI R8,1 ; i = 3*i + 1 BR ENDIF ELSE: ; } else { -- i is even SRU R8,1 ; i = i/2 ENDIF: ; } MOVE R3,R8 LIS R4,4 LIL R1,PUTDECU JSRS R1,R1 ; putdecu(i,4) BR LOOP ; } LOOPQT: ; --- end aplication code --- ADDI R2,R2,-ARSIZE LOADS R1,R2 JUMPS R1 ; return END