Either submit the source code files on Ecampus under the "Submit Homework" menu option, or demo the programs to the instructor during lab.


Using x86 assembly language, write a program that reads in a string of various parentheses, brackets, and braces.  Output whether or not the parentheses, brackets, and braces are balanced.

The algorithm below can be used to check if parenthesis, brackets, and braces are balanced in an equation.
Balanced input strings:  
(a) (([{}]))     (b) (()[]{[]})     (c) {([]([{({{}})([()])[][]}])[](()){()})}
Unbalanced input strings:  
(a) )(     (b) [(])     (c) (([]{})

Loop - Step through each character (token) of the input string
{
     if token is an opening (, [, or {, then push it to the stack.

     else if token is a closing ), ], or }, AND the stack is empty, then it's not balanced (false)

     else if token is a ), then pop from the stack.  If it isn't a (, then
it's not balanced (false)

     else if token is a ], then pop from the stack.  If it isn't a [, then
it's not balanced (false)

     else if token is a }, then pop from the stack.  If it isn't a {, then
it's not balanced (false)
}
if the stack is empty, equation is balanced (true)
else equation is not balanced (false)


Example output
This program checks if the parentheses, brackets, and braces are balanced.
Please enter a string:
(()[]{[]})
This string is balanced.


This program checks if the parentheses, brackets, and braces are balanced.
Please enter a string:
{[])[()]}
This string is not balanced.