7. Using SID/Student ID: 104085021, solve the following. For this tutorial, plea
ID: 3877783 • Letter: 7
Question
7. Using SID/Student ID: 104085021, solve the following.
For this tutorial, please download the MARS (MIPS Assembler and Runtime Simulator) at nvo It is a Java application so it should run on any platform. There are a number of ways to launch the program; the simplest should be to “double click" on the “jar" file; see the website for more information. Once MARS has successfully started, you will see 3 window areas. The center one is the editing/assembling view, the right, the current register view, and on the bottom, the results view. To create a file, go to "File", "New" and start entering assembly code. Each of the questions below will detail what is necessary to move on in the assignment. Please create "SID_Assign2.doc" (where "SID is your student number), a document file which includes all your responses for questions which don't require a "SID_Assign2_X.s". Once the assignment is complete, ZIP all the files into "SID_Assign2.zip" and email them to the GA. Remember, comments help us evaluate your work. 1. Copy the following code into the editor in MARS. Save it as "SID_Assign2_1.s" # comment liberally! A: word 10 word 8 word o asciiz "The solutions is intext lw $t1,B add St2, $to, $tl 11 SvO,4 La Sao.massage 11 SvO,1 iw Sao,c 11 SvO, 10 Notice that there are two “directives" in the code. “.data" and ".text". The “.data" directive indicates that anything following it is pertaining to the data section in the software module where as anything following “.text" is pertaining to the code segment. This is done so that the “object" file will be partitioned correctly for proper run-time linking. Now, press F3 or “Run", “Assembler" and assuming you've entered the code correctly, the tab at the top of the editor will switch to “Execute" and you will see a listing of the assemblers results which shows all the opcodes generated. Now, press F5 or “Run", "Go" and the code will simulate. Since this code uses some specialized syscalls" (calls to the kernel, or in this case the simulator) we can produce some useful outputs with minimal work; this is shown at the bottom view (Run I/O).Explanation / Answer
Code:
# comment liberally!
.data
A: .word 10
B: .word 8
C: .word 0
message:
.asciiz "The solutions is "
.text
main:
jal addition #using jal instruction for branching
li $v0, 4 #print message
la $a0, message
syscall
li $v0, 1 #print number
lw $a0, C
syscall
li $v0, 10
syscall
#non-leaf addition branch
addition:
#saving return address on stack
addi $sp, $sp, -4 # change top of stack
sw $ra, 0($sp) # push return address onto stack
jal dummy #to test non-leaf functionality
#perform add operation
lw $t0, A
lw $t1, B
add $t2, $t0, $t1
sw $t2, C
#return to main loop using $ra register
# jr $ra #will not work because $ra is corrupted when branched to dummy
#need to pop ra out of stack
lw $ra, 0($sp) # pop element out of stack
addi $sp, $sp, 4 # change top of stack
jr $ra #return to main loop
dummy:
jr $ra #return to addition loop
Output:
The solutions is 18
-- program is finished running --
Hope this helps. Do Upvote! :)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.