Question: I need to convert the psudoinstruction ( the bolded code) to a simple mips code ____________________________________________________ .data num1: .word 0 num2: .word 0 answer: .asciiz
I need to convert the psudoinstruction ( the bolded code) to a simple mips code
____________________________________________________
.data num1: .word 0 num2: .word 0 answer: .asciiz "The product is " prompt: .asciiz " Enter a positive number : " #prompt for string # add other strings at this point as needed
.text .globl main
main:
jal getpos # get a positive number for the loop
addi $s0, $v0, 0 # save input value
repeat:
beq $s0, $0, end # while there are more repeats
lui $a0, 0x1001 # get address of first word
addiu $a1, $a0, 4 # get address of second word
jal getinput # call function to get input, store into addresses
lui $t0, 0x1001 # get address of first word
lw $a0, 0($t0) # get the first value from memory
lw $a1, 4($t0) # get the second value from memory
jal multiply # multiply the values, result in $v0
addi $a0, $v0, 0 # get value to print from $v0
lui $a1, 0x1001 # get start of data section
addi $a1, $a1, 8 # get start of the product output string
jal print # print results
addi $s0, $s0, -1 # decrement counter
j repeat # do it agin
end: ori $v0, $0, 10 # set command to stop program,
syscall # end program
getpos : #get position loop until user not enter positive number
loop : #loop for input li $v0, 4 la $a0, prompt #prompt for string syscall li $v0,5 syscall #ask user input move $t1,$v0 sgt $t3,$t1,$zero beqz $t3,Else #check if equal zero go to zero j endIf #jump to end if Else : j loop endIf : move $v0,$t1 jr $ra #return value
getinput: #get two input and set result to given locations move $t7,$ra #store return address in t7 move $t6,$a0 #store address of a0 to t6 jal getpos # get a positive number for the loop addi $s1, $v0, 0 # save input value sw $s1,0($t6) #store at t6 that is a0 location jal getpos # get a positive number for the loop addi $s2, $v0, 0 # save input value sw $s2,0($a1) #store at location a1 move $ra,$t7 #move address from t7 back to ra jr $ra #return value
multiply: #multiply and return result mul $a0,$a0,$a1 move $v0,$a0 jr $ra print: move $t1,$a0 li $v0,4 la $a0,0($a1) #it will print message from address syscall move $a0,$t1 #it will print integer li $v0,1 syscall jr $ra
Step by Step Solution
There are 3 Steps involved in it
To convert the pseudoinstructions the bolded code into simple MIPS instructions Ill show the simple and equivalent assembly code for each pseudoinstru... View full answer
Get step-by-step solutions from verified subject matter experts
