# multi.asm
# Simple routine to multiply N integers to demo a loop.
# Author: R.N. Ciminero
# Revision date: 10-28-94 Original def.
# See Patterson & Hennessy pg. A-46 for system services.
.text
.globl main
main:
li $v0,4 # output msg1
la $a0, msg1
syscall
li $v0,5 # input N and save
syscall
move $t0,$v0
move $t3,$t0
li $t1, 1 # initialize counter (i)
li $t2, 1 # initialize product
loop:
mul $t2,$t2,$t1 # N = N*i
beq $t0, $t1, exit # if i < N, continue
addi $t1, $t1, 1 # N = N + 1
j loop
exit: li $v0, 4 # output msg2
la $a0, msg2
syscall
li $v0,1 # output sum
move $a0, $t2
syscall
li $v0,4 # output lf
la $a0, lf
syscall
li $v0,10 # exit
syscall
.data
msg1: .asciiz "\nEnter (N)? "
msg2: .asciiz "\nN! = "
lf: .asciiz "\n"