go to previous page   go to home page   go to next page hear noise

Answer:

The exception handler service first converts the integer in $a0 from 32-bit two's complement representation into ASCII characters.


Example Program

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"

As is often the case, input and output dominate the program. The actual calculation is hard to find.


QUESTION 9:

The program prints "Pounds" and "Ounces" on separate lines. Change the program so that they are printed on one line.