# Program for Laboratory 13: Exception Handling # This program generates exception number 7 by referring to an address # which is out of range # Implements: # sum = 0; # i = 9; # do { # sum = sum + A[9-i] # B[9-i] = sum; # i--; # until (i == 0) .globl main main: addu $s7, $zero, $ra add $t2, $0, $0 # sum = 0 (sum is in $t2) add $t1, $0, $0 # Set $t1 to point to beginning of data lw $t4, 84($t1) # Constant 4 stored in $t4 lw $t0, 88($t1) # Constant 9 stored in $t0 (i) lw $t5, 92($t1) # Constant -1 stored in $t5 add $t1, $t1,$t4 # A starts at 4 (move $t1 to point to A) loop: lw $t3, 0($t1) # $t3 has A[i] add $t2, $t2, $t3 # sum = sum + A[i] sw $t2, 40($t1) # B[i] = sum add $t1, $t1, $t4 # update address pointer add $t0, $t0, $t5 # i-- beq $t0, $0, done # if i > 0 go to loop j loop done: add $t1, $0,$0 # Set $t1 to point to beginning of data sw $t2, 0($t1) # sum is stored li $v0, 4 # print_str la $a0, message syscall li $v0, 1 # print_int lw $a0, sum syscall addu $s7, $zero, $ra jr $ra # return to the main program .data sum: .word 0 A: .word 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 B: .word 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13 Four: .word 4 Nine: .word 9 Minus1: .word -1 message: .asciiz "\nThe value of sum is: "