See below.
## poly.asm -- complete program
##
## evaluate 5x^2 -12x + 97
##
## Register Use:
##
## $10 base register, address of x
## $11 x
## $12 value of the polynomial
## $13 temporary
.text
.globl main
main:
lui $10,0x1000 # Init base register
lw $11,0($10) # Load x
ori $12,$0,97 # Initialize the accumulator
# during the "load delay slot"
ori $13,$0,12 # evaluate second term
mult $11,$13 # 12x
mflo $13 # assume 32 bit result
subu $12,$12,$13 # accumulator = -12x +97
# evaluate third term
mult $11,$11 # x^2
mflo $11 # assume 32 bit result
ori $13,$0,5 # 5
mult $11,$13 # 5x^2
mflo $13 #
addu $12,$12,$13 # accumulator = 5x^2-12x+97
sw $12,4($10) # Store result in poly
.data
x: .word 17 # Edit this line to change the value of x
poly: .word 0 # Result is placed here.
## End of file
Here is the complete program. You may wish to copy it to the clipboard and paste it into your text editor. Now you can save it to a file and run it with SPIM.
Of course, the program should be tested with a
careful selection of
values for x.
A production quality program would document the
upper and lower bounds for x.
Suggest three values for x
for use in testing.