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:
Online LMC Simulator
LOOP LDA TOTAL
TOTAL DAT 0
ONE DAT 1
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.
|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.|