MIPS assembly language Write a program that takes in, as a string, an expression
ID: 3777352 • Letter: M
Question
MIPS assembly language
Write a program that takes in, as a string, an expression in the Infix format and calculates its output. The program asks then the user for the next expression until the user hits the character ‘E’ which will terminate the program.
• Follow the stack implementation discussed in class: it is mandatory the explicit usage of the stack in your code.
• Make use of function calls whenever you see fit – functions must be present in your code.
• Numbers in expressions are multi-digit non-negative integers (but intermediate and final results can be negative integers); both numbers and the final result can all fit into a word.
• Operations can be +,-,* and /
Examples:
- Input: ((2-(8+9))*(1-4)) Output: 45
- Input: (7-(((6+2)–4)*8)) Output: -25
- Input: ((3*((205–102)+5))/(42–49)) Output: -46
Explanation / Answer
Solution:
.data
disp: .ascii " Program to calculate fully parenthesize."
Inread: .asciiZ "Enter the infix notation string."
bufexp: .space 200
.text
.global main
main:
LA $a0, disp
LI $vo, 4
syscall
LA $a0, Inread
LI $v0, 4
syscall
LI $t0, 0
SUBU $sp, $sp, 4
SW $t0, ($sp)
LI $t1, 0
LOOP:
LB $t0, bufexp($t1)
BEG $t0, 2, endofprg
BEG $t0, 8, negchk
BEG $t0, 9, num
BEG $t0, 1, calc
BRE $t0, 4, push
ADD $t1, $t1, 1
jal LOOP
endprog:
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.