This program computes and displays the sum of integers from 1 up to n,
where n is entered by the user.
It illustrates the basic structure of a MAL program, a simple loop, and
the use of the syscall
instruction for input, output, and
terminating the program.
The sums.s program can be viewed as a text file by clicking here. After the file appears in a new tab or window it can be saved using your browser's file menu.
# This program computes and displays the sum of integers from 1 up to n, # where n is entered by the user. # .globl main .data # program output text constants prompt: .asciiz "Please enter a positive integer: " result1: .asciiz "The sum of the first " result2: .asciiz " integers is " newline: .asciiz "\n"
.text # main program # # program variables # n: $s0 # sum: $s1 # i: $s2 # main: li $v0, 4 # issue prompt la $a0, prompt syscall li $v0, 5 # get n from user syscall move $s0, $v0 li $s1, 0 # sum = 0 li $s2, 0 # i = 0 for: blt $s0, $s2, endf # exit loop if n < i add $s1, $s1, $s2 # sum += i add $s2, $s2, 1 # i++ b for # continue loop endf:
li $v0, 4 # print "The sum of the first " la $a0, result1 syscall li $v0, 1 # print n move $a0, $s0 syscall li $v0, 4 # print " integers is " la $a0, result2 syscall li $v0, 1 # print sum move $a0, $s1 syscall li $v0, 4 # print two newlines la $a0, newline syscall li $v0, 4 la $a0, newline syscall li $v0, 10 # terminate the program syscall