Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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: