Examples in the class


1)   sum 1...10   with straight line code

.code 0
  mv r1 #1
  add r1 r1 #2
  add r1 r1 #3
  add r1 r1 #4
  add r1 r1 #5
  add r1 r1 #6
  add r1 r1 #7
  add r1 r1 #8
  add r1 r1 #9
  add r1 r1 #10
  trap 0
.end

2)   sum 1..10 using while loop

;;  s = 0
;;  i = 1
;;  while i <= 10
;;    s = s + i
;;    i = i + 1

;; let r1 = i, r2 = s, r3 = test

.code 0
  mv r2 #0
  mv r1 #1
:loop
  le r3 r1 #10
  jf r3 exit
  add r2 r2 r1
  add r1 r1 #1
  jmp loop
:exit
  trap 0
.end

3)   sum  elements in an array 

;; sum array A[0..9]
;; i = 0
;; s = 0
;; while i < 10
;;    s = s + A[i]
;;    i = i + 1

;; let r1 = i, r2 = s, r3 = test, r4 = A[i]

.symbol
    A 50             ;; define A[.] at 50
.code 0
    mv r1 #0
    mv r2 #0
:loop   
    lt r3 r1 #10

    jf r3 exit
    ld r4 @A r1      ;; r4 = A[r1]
    add r2 r2 r4
    add r1 r1 #1
    jmp loop
:exit   
    trap 0

.data 50
    1 2 3 4 5 6 7 8 9 10
.end