diff --git a/examples/EC_8.s b/examples/EC_8.s new file mode 100644 index 0000000000000000000000000000000000000000..2db1cb18d0d7208f1870c535a310d2a7e614e2ed --- /dev/null +++ b/examples/EC_8.s @@ -0,0 +1,18 @@ + +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 0 ; } +RET R0 ; return n;