assembly language expression data in register and memory array of integer branch and loop function call stack data in register a = b + c a -- r1, b -- r2, c -- r3 .code 0 mov r2 #20 mov r3 #30 add r1 r2 r3 trap r1 #1 ; print trap r0 #0 ; stop .end data in memory a = b + c a @100, b @101, c @102 use r1, r2, r3 .code 0 ld r2 101 ld r3 102 add r1 r2 r3 st r1 100 trap r0 #0 .data 100 0 22 33 ; set memory at 100...102 .end array of integer a[0] ... a[5] starts @100 add a[0]..a[2] use base -- r3, temp -- r4, sum -- r1 .code 0 mov r1 #0 mov r2 #0 mov r3 #100 ld r4 @0 r3 add r1 r1 r4 ; sum += a[0] ld r4 @1 r3 add r1 r1 r4 ; sum += a[1] ld r4 @2 r3 add r1 r1 r4 ; sum += a[2] trap r1 #1 ; print sum trap r0 #0 .data 100 11 22 33 0 0 0 .end branch and loop i = 0 while( i < 3 ) print(i) i += 1 use i -- r1, temp -- r2 .code 0 mov r1 #0 :while lt r2 r1 #3 ; boolean result in r2 jf r2 exit trap r2 #1 add r1 r1 #1 jmp while :exit trap r0 #0 .end if..then..else if a == 1 then c = 2 else c = 3 use a -- r1, c -- r2, temp -- r3 .code 0 mov r1 #1 eq r3 r1 #1 jf r3 else mov r2 #2 jmp exit :else mov r2 #3 :exit trap r2 #1 ; print c .end ... to be continued