Question
QT Spim question. Program and answer already given please explaine it.

Please explain the reason why each instruction was used throughout the program step by step given the prompt, what is its purpose to achive the goal asked in the prompt, why is written in that order.

Please not just write to the side what each instruction means in words like load $t0 to $t1. I want to understand the program thoroughly.

Thanks in advance

The preceding program was rather long, because we did not use a loop to make it more compact. Using the same data: numl: .wor
# Reversing the order of a string # of numbers using the stack and # two simple loops. main: loop: .text li $t2,4 la $t1, num
Help Text Data Data User data segment [10000000]..[10040000] [1000000 Console 68577 User Stad 12953 [7ffff538 98564 [7ffff54d

Previous information needed to solve problem asked. answe in console is the same for both problems.

• Declare the following four numbers in your data declaration (use“.word). num1: .word 34527 num2: .word 98564 num3: .word 1
# Reversing the order of a string # of numbers using the stack main: .text lw $t0, numi sub $sp,$sp,4 sw $t0,0 ($sp) lw $t0,
0 0
Add a comment Improve this question Transcribed image text
Answer #1

Program 2 :-

Explanation :-

On whole if I say, the program is first pushing the elements in order into stack. And, then retrieving it one by one from stack in printing it. So, accordingly, the first element which is pushed into stack is the last one to pop out of the stack. So, if we print the elements one by one by popping out of stack then it will result in printing the elements in reverse order

More detailed Explanation :-
First, we will divide the program into 2 parts :-

1) we will push the elements into stack one by one :-


lw $t0, num1
sub $sp, $sp, 4
sw $t0, 0($sp)

This segment is used to push the word element from memory into stack.
sub $sp, $sp, 4 - is used to create space in stack for 1 word element i.e 4 bytes

So, accordingly we will do the same for all 4 elements.

2) we will pop elements from stack one by one and will print it :-

So, as after push in stack, the order in stack would be :-
bottom->num1->num2->num3->num4->top

So, now the stack pointer will point to num4 first; then num3 then num2 and finally num1

lw $a0,0($sp)
addi $sp,$sp,4
li $v0,1
syscall

This segment is used to pop the word element from stack and print it.
add $sp, $sp, 4 is used to free word space in stack and point to next element.

So, subsequently it is done for each element which will result in printing the elements in reverse order

Program 1 :-

Explanation :-

The process is also same as program 2. Only difference is that it uses loop. In program 2, for are writing the same set of statements 4 times. But, here we take the first memory address of num1 and do the stack operation and then we repeat the same statements for next word address i.e by the adding the memory address with 4. As, it is a word size element. So, each word element takes 4 bytes. So, accordingly, we will add 4 and do the operation in loop

Add a comment
Know the answer?
Add Answer to:
QT Spim question. Program and answer already given please explaine it. Please explain the reason why...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • Refer the program in the next page: Assume the starting address of data segment: 0x10010000. What...

    Refer the program in the next page: Assume the starting address of data segment: 0x10010000. What is the address of label num3? _______________________________ Write the common syscall code to print string for the blank marked as #Question 2 _________________________________ Write proper comments for the lines marked as #Question 3 ________________________________________________________ Write the machine code for the line marked as #Question 4 in both binary and hex. Binary:_______________________________________ Hex:___________________ Write the machine code for the line marked as #Question 5 in...

  • The task will be to write a program in assembler to enter a number and calculate...

    The task will be to write a program in assembler to enter a number and calculate its associated Fibonacci number using a procedure (subroutine) that is called recursively. Factorial and Fibonacci(outline Programs) # MIPS assembly assembly assemblyassemblycode .data n: .word 4 .text main: la $s0,n lw $a0, 0($s0) jal factorial # move what ever is returned into $a0 move $a0, $v0 li $v0,1 syscall b finished factorial: add $sp , $sp , -8 # make room sw $a0, 4($sp )...

  • .data prompt: .asciiz "Input an integer x:\n" result: .asciiz "Fact(x) = " .text main: # show prompt li $v0, 4 la $a0, prompt syscall # read x li $v0, 5 syscall # function call move $a...

    .data prompt: .asciiz "Input an integer x:\n" result: .asciiz "Fact(x) = " .text main: # show prompt li $v0, 4 la $a0, prompt syscall # read x li $v0, 5 syscall # function call move $a0, $v0 jal factorial # jump factorial and save position to $ra move $t0, $v0 # $t0 = $v0 # show prompt li $v0, 4 la $a0, result syscall # print the result li $v0, 1 # system call #1 - print int move $a0,...

  • MIPS Insertion program.........I could really use some help ASAP

    I have this MIPS program and I'm having trouble with it. This program is user inputs numbers until zero and sorts and print the numbers in order. Please soove this issue. You can use any sorting algorithm except bubble sort.  Need it as soon as possible. Here is the code:.datanum: .word 0space: .byte ' ' .text main:  # la $t0, val # loads val into a register  # li $t1, 0      #keeps track of how many numbers entered  la $a0,...

  • ASSEMBLY LANGUAGE (Mars MIPS) Starting code: Factorial: #Factorial Recursive function subu $sp, $sp, 4 sw $ra,...

    ASSEMBLY LANGUAGE (Mars MIPS) Starting code: Factorial: #Factorial Recursive function subu $sp, $sp, 4 sw $ra, 4($sp) # save the return address on stack beqz $a0, terminate # test for termination subu $sp, $sp, 4 # do not terminate yet sw $a0, 4($sp) # save the parameter sub $a0, $a0, 1 # will call with a smaller argument jal Factorial # after the termination condition is reached these lines # will be executed lw $t0, 4($sp) # the argument I...

  • WRITE THE FOLLOWING CODE IN FLOATING POINT NUMBERS IN ASSEMBLY LANGUAGE USING MIPS IN MARS .data...

    WRITE THE FOLLOWING CODE IN FLOATING POINT NUMBERS IN ASSEMBLY LANGUAGE USING MIPS IN MARS .data prompt: .asciiz "\nMaximum number is : " prompt1: .asciiz "\nMinimum number is : " prompt2: .asciiz "\nRange of the array is : " size: .word 10 #load array array: .word 23, -12, 45, -32, 52, -72, 8, 13,22,876 .text #load address of array and size la $s4,array #load address of A lw $t0,size #load i to t0 jal getArrayRange li $v0, 4    la...

  • im trying to complete mips program code about a calculator program that can calculate integer addition...

    im trying to complete mips program code about a calculator program that can calculate integer addition / subtraction written using the MIPS assembler. im having hard times to debug this. The input is given to the array of Formula char (base address $ s0) in the form of a formula. The null character (\ 0, ASCII code 0) is placed at the end. The calculation result is given to the register $ s1 and the overflow is ignored. For example,...

  • (USING THE PROGRAM MARS) Using the MemoryAccess program we wrote in class as a starting point,...

    (USING THE PROGRAM MARS) Using the MemoryAccess program we wrote in class as a starting point, write a program called LoadStore # Title : Memory access.asm #Desc: Practice initially memory, #in val1 = 0x0a; #int val2 = 0x0b; #int result; #string resultstring = " final answer : "; #string returnchar = "\n"; #void main() { #   result = val1 + val2; #   cout<<< resultstring << returnchar; #} .data val1: .word 0x0a   #store 0xa into variable val1 val2: .word 0x0b   #store...

  • It's a MIPS question. Can anyone explain what's happened in the loop? Thank you. I need...

    It's a MIPS question. Can anyone explain what's happened in the loop? Thank you. I need a deep explanation. Ma1n SvO, 4 $a0, stri1 # print string upper case 14 syscall $v0, 4 $a0, string 16 # print string "ABCDEFG. 18 syscall v0, 4 $a0, str2 19 # print string lower case 21 syscall 23 1oo 24 25 26 $t1, string($tO) beq $t1, $zero, exit blt $t1, A', continue bgt $t1, 2', conti addi $t1, $t1, 0x20 sb #t0 to...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT