Computer Organization and Architecture
This is for MARIE ASSEMBLY LANGUAGE . You will need to implement a simple calculator using assembly programming with the MARIE architecture model. Please make sure you read through and follow EXACTLY the requirements given below.
1. The calculator can perform any of the following operations between two integers: addition, subtraction, multiplication and division.
2. To reduce the complexity, assume that both integers are positive and of single digit. So you are only using 1-9 for the calculations.
3. At the beginning, your program should wait for inputs to be provided through the input window/register of the simulator. To do so, you need to use the instruction “Input”.
To provide the input values, you need to first set your input data format (or input mode) to “Dec” (i.e., decimal), by using the drop-down menu associated with the input window of the simulator.
The input should follow the format below:
a. Addition: 10 num1 num2
Here, “10” tells the program to perform addition, “num1” and “num2” will be the two numbers to be added. The three numbers will be provided through the input window to the program one by one.
b. Subtraction: 11 num1 num2
c. Multiplication: 12 num1 num2
d. Division: 13 num1 num2
The calculator program always shows immediately the input value it receives in the output window of the simulator. To do so, you need to set your output data format to “Dec” (i.e., decimal), by using the drop-down menu associated with the output window of the simulator.
If an input number is invalid, in addition to showing the invalid input number, the program should also show a specific number, 100, in the output to indicate the invalidity.
When this happens, the program will continue to check the next provided number, till a valid number is identified. To be valid, the first input should be a number in the range of 10-13, and num1 and num2 have to be a number in the range of 1-9.
//—–Sample of the beginning of the Code—-//
IF LOAD OPERATOR
THEN INPUT …….
///——–End of Sample of the Beginning of Code—////
4. Once the three inputs have all been accepted, the program will perform the specified operation on the provided integers. You need to implement four different SUBROUTINES, each for one of the four operations. For a particular operation, your program will need to call the corresponding subroutine to perform the operation. You can use “Ex4_4.mas” in the MARIE simulation package as your reference for implementing a subroutine.
Load X / Load the first number to be doubled.
Store Temp / Use Temp as a parameter to pass value to Subr.
JnS Subr / Store the return address, and jump to the procedure.
Store X / Store the first number, doubled
Load Y / Load the second number to be doubled.
JnS Subr / Store the return address and jump to the procedure.
Loop, Store Y / Store the second number doubled.
Halt / End program.
X, DEC 20
Y, DEC 48
Temp, DEC 0
Subr, HEX 0 / Store return address here.
Load Temp / Actual subroutine to double numbers.
Add Temp / AC now holds double the value of Temp.
JumpI Subr / Return to calling code.
//——End of Ex4_4.mas———//
5. You can implement a multiplication using addition. For example, 5 x 3 is equivalent to 5 + 5 + 5.
6. You can implement a division using subtraction. The results should include both the quotient and the remainder. There are three different cases here:
a. Case 1: the dividend is smaller than the divisor, where the quotient is 0 and the remainder is the dividend. E.g., 4 / 7 yields: quotient = 0, remainder = 4.
b. Case 2: the dividend can be divided exactly by the divisor, where the remainder is 0. E.g., 8 / 4 (which can be implemented as 8 – 4 – 4) yields: quotient = 2, remainder = 0.
c. Case 3: the dividend is greater than the divisor, and the dividend cannot be divided exactly by the divisor, where the remainder is non-zero. E.g., 8 / 5 (which can be implemented as 8 – 5) yields: quotient = 1, remainder = 3.
7. Once the calculation is complete, show the result in the output window. For division, show the quotient first, followed by the remainder (even if the remainder is zero). Then the program should go back to its initial state, waiting for inputs for the next round of calculation.
8. The calculator won’t stop by itself. You can exit the program by stopping running the program in the simulator or closing the simulator.
——————————————————————-END OF DOCUMENT——————————————————–
This is what I have so far BELOW, but don’t know how to join the subr with loops and jumps, or if the code for the math is right at all for the quotient and remainder. If you could PLEASE help me I really would appreciate it. I have been at this for 4 days straight and can’t get it. If what i have so far isn’t right then I dont mind it being scrapped for something better. Please answer fully. This is the last time i’ll be able to take this class, or I flunk out as a senior in College, which i desperately dont want. The requirements are in the document above the dotted line.
What I have so far