The trap handler service first converts the integer in $a0
from 32-bit two's complement
representation into ascii characters.
The following example program reads in an integer, presumed to be a number of ounces, then writes out the equivalent number of pounds and ounces.
# ounces.asm # # Convert ounces to pounds and ounces. .text .globl main main: li $v0,4 # print prompt la $a0,prompt # syscall li $v0,5 # read in ounces syscall li $t1,16 # 16 oz. per pound divu $v0,$t1 # lo = pound; hi = oz. mflo $a0 li $v0,1 # print syscall # pounds li $v0,4 # print "pounds" la $a0,pout syscall mfhi $a0 # print li $v0,1 # ounces syscall # li $v0,4 # print la $a0,ozout # "ounces" syscall li $v0,10 # exit syscall .data prompt: .asciiz "Enter ounces: " pout: .asciiz " Pounds\n" ozout: .asciiz " Ounces\n" # end of file
As is often the case, input and output dominate the program. The actual calculation is hard to find.