Create a lc3 program capable of evaluating postfix


Overview
Your task over MP2 and MP3 is to create a LC3 program capable of evaluating postfix expressions (a.k.a reverse polish notation) using a stack. A postfix expression is a sequence of numbers ('1','5', etc.) and operators ('+', 'x', '-', etc.) where every operator comes after its pair of operands. For example "3 + 2" would be represented as "3 2 + ­" in postfix. The expression "(3 - 4) + 5" with 2 operators would be "3 4 - 5 +" in postfix. Notice that a nice feature of postfix is that the parentheses are not necessary. This makes the expressions more compact.
This week you will work on developing code to handle the input typed in by the user at the keyboard. In MP3 you will develop the subroutines for evaluating the expressions.
This is not a collaborative MP.
Details
Your program should read in the input from the keyboard and echo it to the screen. Operators, operands will be separated by a space (x20) in the input. Operands will always be 0-9 and the input will not have any invalid characters. Stop reading the input once you encounter a new line character (xA).
While you are reading the input, you have to store it starting at x5000. Before storing the operands in memory, you must first convert them from their ASCII values to their numerical values. Operators should only have the negation of their ASCII values stored in memory (you are doing this because this way you cannot confuse between operator and operand values. Write the code for this conversion in the DECODE subroutine. For those of you doing the challenge the operand can take any two or three digit values and they could be the same as one of the operator ascii values.). For example the ASCII value of '+' is x2B, so store xFFD5. To mark the end of the entered expression store the negative of the newline character (xFFF6) in the last memory location. Depending on the system you use, the "enter" key could either be mapped to the "line feed (xA)" or "carriage return (xD)" ASCII values. For both just store the negation (2's complement) of the value. So xFFF3 is also valid at the last memory location.
So, for the the input "3 4 - 5 +", the memory at x5000 will look like this-
Address
Data
x5000 x0003
x5001 x0004
x5002 xFFD3
x5003 x0005
x5004
xFFD5
x5005 xFFF6

Request for Solution File

Ask an Expert for Answer!!
Basic Computer Science: Create a lc3 program capable of evaluating postfix
Reference No:- TGS0920636

Expected delivery within 24 Hours