.data answer: .asciiz "the answer = " times: .asciiz " x " newline: .asciiz "\n" .text main: # Notice the label "main:" addi $a0, $0, 7 # Print out " 7 x 13 " jal putint puts times addi $a0, $0, 13 jal putint puts newline # # call: multiply( 7, 13 ) # addi $a0, $0, 7 addi $a1, $0, 13 jal multtest # Move the function value to a temporary register add $t0, $0, $v0 # Print "the answer = _Returned value_ " puts answer # Move contents of $t0 to where we need them for printing add $a0, $0, $t0 jal putint # and move to the next line puts newline # -------------------------------------------------------- # Repeat with different numbers: addi $a0, $0, 37 jal putint puts times addi $a0, $0, 30 jal putint puts newline addi $a0, $0, 37 addi $a1, $0, 30 jal multtest add $t0, $0, $v0 puts answer add $a0, $0, $t0 jal putint puts newline # -------------------------------------------------------- # Again: addi $a0, $0, 125 jal putint puts times addi $a0, $0, 64 jal putint puts newline addi $a0, $0, 125 addi $a1, $0, 64 jal multtest add $t0, $0, $v0 puts answer add $a0, $0, $t0 jal putint puts newline # ------------------------------------------------------- # And again: addi $a0, $0, 3 jal putint puts times addi $a0, $0, 67 jal putint puts newline addi $a0, $0, 3 addi $a1, $0, 67 jal multtest add $t0, $0, $v0 puts answer add $a0, $0, $t0 jal putint puts newline # Finally, exit done putint: addi $sp, $sp, -8 # sw $ra, 0($sp) # sw $s0, 4($sp) # save the old value of $s0 rem $s0, $a0, 10 # value % 10 addi $s0, $s0, '0' # convert that to a digit div $a0, $a0, 10 # value / 10 beqz $a0, onedig # is it non-zero? jal putint # if so, print it onedig: putc $s0 # print the digit we built lw $s0, 4($sp) lw $ra, 0($sp) addi $sp, $sp, 8 jr $ra .end