In: Computer Science
Im having issues with this project, I keep geting errors and idk why. here are the instructions for the project: "Create "simple integer calculator using the MARIE computer. The program should execute as follows: Using the INPUT instruction wait for the user to enter a decimal number. Using the INPUT instruction wait for the user to enter a second decimal number. Using the INPUT instruction wait for the user to enter the character +, - or *. Perform the desired addition, subtraction or multiplication operation. Store the result in a variable in memory. Display the result via the OUTPUT instruction. The multiply can be done by repeated additions. For example, 12 * 3 would be calculated as 12 + 12 + 12." What I have so far: INPUT Store X INPUT Store Y INPUT Store c Subt 43 / Skipcond can be used here if c<0 then its Multiplication , if c=0 then its Addition , if c>0 then its substraction loop,Load num Add X Store num Load Y Subt one Store Y Skipcond 400 Jump loop /no Load num Output Halt/Declarelabelshere X, DEC 0 Y, DEC 0 one, DEC 1 num, DEC 0 c, DEC 0 A, DEC 42 B, DEC 43 C, DEC 45 what I get when I run: Assembly listing for: Calc project.mas Assembled: Tue Oct 13 17:14:46 CDT 2020 000 5000 | INPUT 001 2012 | STORE X 002 5000 | INPUT 003 2013 | STORE Y 004 5000 | INPUT 005 2016 | STORE c 006 4043 | SUBT 043 | / Skipcond can be used here if c0 then its Multiplication , if c=0 then its Addition , if c>0 then its substraction 007 ???? | loop NUM **** Instruction not recognized. **** Missing operand. 008 3012 | ADD X 009 2015 | STORE num 00A 1013 | LOAD Y 00B 4014 | SUBT one 00C 2013 | STORE Y 00D 8400 | SKIPCOND 400 00E 9007 | JUMP loop /no 00F 1015 | LOAD num 010 6000 | OUTPUT 011 7000 | HALT /Declarelabelshere 012 0000 | X DEC 0 013 0000 | Y DEC 0 014 0001 | one DEC 1 015 0000 | num DEC 0 016 0000 | c DEC 0 017 002A | A DEC 42 018 002B | B DEC 43 019 002D | C DEC 45 2 errors found. Assembly unsuccessful. SYMBOL TABLE -------------------------------------------------- Symbol | Defined | References --------+---------+------------------------------- A | 017 | B | 018 | C | 019 | X | 012 | 001, 008 Y | 013 | 003, 00A, 00C c | 016 | 005 loop | 007 | 00E num | 015 | 009, 00F one | 014 | 00B
Greetings!!
Code:
INPUT /READ X
STORE X /STORE X
INPUT /READ Y
STORE Y /STORE Y
INPUT /READ DECIMAL VALUE OF OPERATOR
STORE C /STORE OPERATOR
SUBT OP /SUBTRACT 43
SKIPCOND 800 /CHECK AC>0, THEN MUL
JUMP ADSUB /ELSE ADSUB
JUMP MUL
ADSUB, SKIPCOND 000/AC<0, THEN SUB
JUMP ADD /ELSE ADD
JUMP SUB
ADD, LOAD X /ADDITION
ADD Y
STORE ANS /STORE ANSWER
JUMP OUT /DISPLAY
SUB, LOAD X /SUBTRACTION
SUBT Y
STORE ANS /STORE ANSWER
JUMP OUT /DISPLAY
MUL, LOAD Y /LOAD MULTIPLIER
SUBT ONE /MULTIPLIER - 1
STORE Y /SAVE
LOAD ANS /LOAD ANS
ADD X /REPEATED ADDITION
STORE ANS
LOAD Y /LOAD MULTIPLIER
SKIPCOND 400 /IF MULTIPLIER IS 0,THEN LOAD ANSWER
JUMP MUL /ELSE REPEAT ADDITION
LOAD ANS /LOAD ANS OR DISPLAY
OUT, OUTPUT
HALT
X, DEC 0
Y, DEC 0
C, DEC 0
OP, DEC 43
ONE, DEC 1
ANS, DEC 0
Output screenshots:
Addition:34+45=79
Subtraction: 78-67=11
Multiplication: 23 x 15 = 345
Hope this helps