diff --git a/examples/B16.s b/examples/B16.s new file mode 100644 index 0000000000000000000000000000000000000000..fbac298d477d1d1db315188b054d6a4c1be106be --- /dev/null +++ b/examples/B16.s @@ -0,0 +1,17 @@ +MOV R3 12 ; N = 12 +MOV R2 1 ; + +;; local variables +;; R1 holds 'i', which is a counter from 0 .. N +;; R0 holds 'n', which is always equal to i! +MOV R1 0 ; i = 0; +MOV R0 1 ; n = 1; + +;; program body +;; loop invariant (see SWEN90010 next semester): n = i! +SUB R4 R3 R1 ; while(i != N) +JZ R4 4 ; { +ADD R1 R1 R2 ; i = i + 1; +MUL R0 R0 R1 ; n = n * i; +JMP -1 ; } +RET R0 ; return n;