In the above tutorial on macros, a simple for loop has been implemented using macros. As you can see, it is a powerful tool to simulate code that looks like a statement in a high-level language. The for loop in the tutorial prints a range of consecutive numbers. Copy the code from the tutorial to Mars and make it execute. The macro call: for ($t0, 1, 10, body) will lead to printing numbers from 1 to 10, one each in a new line. Your task is to modify the code to pass another argument (an interval) to the macro so that the numbers are printed with the given interval in the same line where a space separates the numbers. Your program will also print a string (“Here is the output: ”) before the series of numbers using the print_str macro. For example, Macro call: for ($t0, 1, 20, 3, body) will produce the following output: Here is the output: 1 4 7 10 13 16 19 Submission Instructions Submit the complete program (.asm file), and a screenshot of the execution of the program that shows the output for the following macro call: for ($t0, 10, 40, 4, body)
COIS 2300H
Winter 2023
Lab 6
Introduction to Macros in Mars
Read about macros here:
https://courses.missouristate.edu/kenvollmar/mars/help/MacrosHelp.html
Lab Tasks
In the above tutorial on macros, a simple for loop has been implemented using macros. As you can see, it is a powerful tool to simulate code that looks like a statement in a high-level language. The for loop in the tutorial prints a range of consecutive numbers. Copy the code from the tutorial to Mars and make it execute. The macro call: for ($t0, 1, 10, body) will lead to printing numbers from 1 to 10, one each in a new line. Your task is to modify the code to pass another argument (an interval) to the macro so that the numbers are printed with the given interval in the same line where a space separates the numbers. Your
Macro call: for ($t0, 1, 20, 3, body) will produce the following output:
Here is the output: 1 4 7 10 13 16 19
Submission Instructions
Submit the complete program (.asm file), and a screenshot of the execution of the program that shows the output for the following macro call:
for ($t0, 10, 40, 4, body)
below is the code, but it has errors. pls help me fix it
# Define macros
.macro print_str str
li $v0, 4
la $a0, str
syscall
.end_macro
.macro for index, start, end, interval, body
li index, start
Loop:
blt index, end, Exit
body
addi index, index, interval
j Loop
Exit:
.end_macro
# Main program
.data
msg: .asciiz "Here is the output: "
space: .asciiz " "
newline: .asciiz "\n"
.text
.globl main
main:
# Print string
print_str msg
# Call macro with interval argument
for $t0, 10, 40, 4,
# Print current number
li $v0, 1
move $a0, $t0
syscall
# Print space if not last number
blt $t0, 38, PrintSpace
j ExitLoop
PrintSpace:
li $v0, 4
la $a0, space
syscall
j ExitLoop
ExitLoop:
# Print newline
li $v0, 4
la $a0, newline
syscall
# Exit program
li $v0, 10
syscall
Trending now
This is a popular solution!
Step by step
Solved in 3 steps