# 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.

__Requirements:__

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. __

example:

14

100

__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—-//

ORG 100

INPUT

STORE OPERATOR

OUTPUT

IF LOAD OPERATOR

SUBT FOURTEEN

SKIPCOND 000

JUMP ENDIF1

LOAD OPERATOR

SUBT NINE

SKIPCOND 000

JUMP ENDIF1

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.

//——Ex4_4.mas———//

ORG 100

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.

Store Temp

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

//——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

ORG 100

INPUT

STORE a

## We've got everything to become your favourite writing service

### Money back guarantee

Your money is safe. Even if we fail to satisfy your expectations, you can always request a refund and get your money back.

### Confidentiality

We don’t share your private information with anyone. What happens on our website stays on our website.

### Our service is legit

We provide you with a sample paper on the topic you need, and this kind of academic assistance is perfectly legitimate.

### Get a plagiarism-free paper

We check every paper with our plagiarism-detection software, so you get a unique paper written for your particular purposes.

### We can help with urgent tasks

Need a paper tomorrow? We can write it even while you’re sleeping. Place an order now and get your paper in 8 hours.

### Pay a fair price

Our prices depend on urgency. If you want a cheap essay, place your order in advance. Our prices start from $11 per page.