test 100 # This is a test program for the stm assembler # It simulates the GCD loop where # (A,B) => (B, A%B) INPUT A LOA R15 TWO --- print prompt LOA R14 THREE LOA R13 PROMPT TRP LOA R15 ONE --- input trap LOA R14 ZERO --- integer I/O TRP LOA R1 R13 --- A = R1 INPUT B LOA R15 TWO --- print prompt LOA R14 THREE LOA R13 PROMPT TRP LOA R15 ONE --- input trap LOA R14 ZERO --- integer I/O TRP LOA R2 R13 --- B = R1 PREPARE FOR OUTPUT LOA R15 TWO --- output trap LOOP IFZ R2 EXIT --- if B == 0, exit DIV R1 R2 R3 R4 --- A / B CPR R1 R2 --- Move B into A CPR R2 R4 --- Move (A(old) % B) into B LOA R13 R1 TRP JMP LOOP --- Jump to top of loop EXIT LOA R13 R1 --- output the GCD(A,B) TRP --- Print GCD HALT LOA R15 ZERO --- Halt trap TRP PROMPT CON 62 < CON 58 : CON 32 space CON "hello"