Write an LMC program to let the user enter a number n.
The program should calculate the output n + (n-1) + (n-2) + … + 3 + 2 + 1.
For instance if the user enters the value 5. The program should output the number 15 because:
LMC Simulators
Solution
LMC Instruction Set
Note that in the following table “xx” refers to a memory address (aka mailbox) in the RAM. The online LMC simulator has 100 different mailboxes in the RAM ranging from 00 to 99.
Mnemonic | Name | Description | Op Code |
INP | INPUT | Retrieve user input and stores it in the accumulator. | 901 |
OUT | OUTPUT | Output the value stored in the accumulator. | 902 |
LDA | LOAD | Load the Accumulator with the contents of the memory address given. | 5xx |
STA | STORE | Store the value in the Accumulator in the memory address given. | 3xx |
ADD | ADD | Add the contents of the memory address to the Accumulator | 1xx |
SUB | SUBTRACT | Subtract the contents of the memory address from the Accumulator | 2xx |
BRP | BRANCH IF POSITIVE | Branch/Jump to the address given if the Accumulator is zero or positive. | 8xx |
BRZ | BRANCH IF ZERO | Branch/Jump to the address given if the Accumulator is zero. | 7xx |
BRA | BRANCH ALWAYS | Branch/Jump to the address given. | 6xx |
HLT | HALT | Stop the code | 000 |
DAT | DATA LOCATION | Used to associate a label to a free memory address. An optional value can also be used to be stored at the memory address. |