(SRCTools Version 3.1.1) HexLoc DecLoc MachWord Label Instruction Comment ; ; CPE 221 Assembly Example ; ; This program adds a scalar value to all the elements in one ; array and stores that in another array. ; ; ; .org 200 000000c8 0000000200 0000000a size: .dc 10 000000cc 0000000204 00000064 array1: .dc 100, 3, -1, 2, 4, 4, 2, -1, 3, 100 000000d0 0000000208 00000003 000000d4 0000000212 ffffffff 000000d8 0000000216 00000002 000000dc 0000000220 00000004 000000e0 0000000224 00000004 000000e4 0000000228 00000002 000000e8 0000000232 ffffffff 000000ec 0000000236 00000003 000000f0 0000000240 00000064 000000f4 0000000244 ffffffcb array2: .dc -53, 247, 95, -7, 481, 91, -33, 1500, 29, -83 000000f8 0000000248 000000f7 000000fc 0000000252 0000005f 00000100 0000000256 fffffff9 00000104 0000000260 000001e1 00000108 0000000264 0000005b 0000010c 0000000268 ffffffdf 00000110 0000000272 000005dc 00000114 0000000276 0000001d 00000118 0000000280 ffffffad 0000011c 0000000284 array3: .dw 10 00000144 0000000324 00000000 i: .dc 0 orig: .org 1000 000003e8 0000001000 2f400404 la r29, loop 000003ec 0000001004 2f000430 la r28, done 000003f0 0000001008 2a8000cc la r10, array1 ; pointer to first element of array1 000003f4 0000001012 2ac000f4 la r11, array2 ; pointer to first element of array2 000003f8 0000001016 2b00011c la r12, array3 ; pointer to first element of array3 000003fc 0000001020 084000c8 ld r1, size ; holds size of arrays 00000400 0000001024 08800144 ld r2, i ; holds loop counter 00000404 0000001028 70c41000 loop: sub r3, r2, r1 ; compute i - size 00000408 0000001032 40383004 brpl r28, r3 ; if i - size >= 0, done 0000040c 0000001036 08d40000 ld r3, 0(r10) ; r3 = array1[i] 00000410 0000001040 09160000 ld r4, 0(r11) ; r4 = array2[i] 00000414 0000001044 61083000 add r4, r4, r3 ; r4 = array1[i] + array2[i] 00000418 0000001048 19180000 st r4, 0(r12) ; Store result in array3. 0000041c 0000001052 6a940004 addi r10, r10, 4 ; update r10 to point to next element of array1 00000420 0000001056 6ad60004 addi r11, r11, 4 ; update r11 to point to next element of array2 00000424 0000001060 6b180004 addi r12, r12, 4 ; update r12 to poitn to next element of array3 00000428 0000001064 68840001 addi r2, r2, 1 ; i++ 0000042c 0000001068 403a0001 br r29 00000430 0000001072 f8000000 done: stop --- Symbol Table --- done: 1072 loop: 1028 i: 324 size: 200 array3: 284 array2: 244 array1: 204 orig: 1000