Assignment: develop a calculator in MASM.
Text chapters covered: 1 through 4, 5.4, 5.5, 6.3, 7.4
You will develop a "calculator" algorithm in MASM using reverse-polish notation (RPN). RPN is an extremely useful technique to calculate algebraic expressions. It is used by many compilers to process algebraic statements. Your calculator will evaluate RPN expressions using INTEGER values only.
RPN is a postfix expression, meaning that the operation (add, subtract, etc.) follows the variables. Contrast this to an algebraic expression where the operations are situated between the variables (this is called infix notation). Here's an example of an RPN expression and its algebraic equivalent:
Algebraic equation: E(A+B)/C-D
RPN equivalent: AB+E*CD-/
To compute an RPN expression is a straightforward process using stacks. Assume that the RPN expression is always presented as a character string. The algorithm to do this is shown below.
1. If the character encountered is a variable, push the variable on the stack.
2. If the character encountered is a operator (+,-,*,/), pop the top two variables off the stack, perform the operation on them, then push the result back on the stack.
3. Continue steps 1 and 2 until the string is exhausted. The last value on the stack is the final result.