# Example for CPS 104 # Program to add together list of numbers # Written by D. Ramm 9/9/93 with help from cc .data # Data list: .word 35, 16, 42, 19, 55, 91, 24, 61, 53 .data msg: .asciiz "The sum is " nln: .asciiz "\n" .text # Code .globl main main: # MAIN procedure subu $sp, 40 #\Ent- sw $31, 36($sp) # \ sw $19, 32($sp) # \ sw $18, 28($sp) # > Entry Housekeeping sw $17, 24($sp) # / save registers on stack sw $16, 20($sp) # / move $2, $0 #/ move $17, $0 #\ la $16, list # \ Initialization la $18, msg # / la $19, list+36 #/ again: # Begin main loop lw $14, 0($16) #\ addu $17, $17, $14 #/ Actual "work" li $v0, 4 #\ move $a0, $18 # \ syscall # \ li $v0, 1 # \ move $a0, $17 # > spim I/O syscall # / li $v0, 4 # / la $a0, nln # / syscall #/ addu $16, $16, 4 #\ index update and bne $16, $19, again #/ end of loop move $2, $0 #\ lw $16, 20($sp) # \ lw $17, 24($sp) # \ lw $18, 28($sp) # \ Closing Housekeeping lw $19, 32($sp) # / restore registers lw $31, 36($sp) # / addu $sp, 40 # / j $31 #/ .end main # end of program and identify start addr