Note that in the following table 'xx' refers to a memory address (aka mailbox) in the RAM. The LMC 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. |
Little Man Computer (LMC) Simulators
- QcO's LMC Simulator : Source code at GitHub
- LMC Simulator Applet
- Tiny-Dude : Source code at GitHub
- LMC Simulator Applet (offline)
To make your code more readable, you can use the following naming conventions:
- For instructions use All Caps
- For labels ,variables and constants use camelCase
- Prefix labels with lb e.g.
lbLoop INP
- Prefix variables with var e.g.
varSum DAT 0
- Prefix constants with val e.g.
valOne DAT 0
- Write a program that loads and outputs the value 10.
- Write a program that adds two inputs together and outputs the result.
- Write a program that adds three inputs together and outputs the result.
- Write a program that takes two inputs and subtracts the second from the first.
- A program that outputs the larger of two input values.
- A program that outputs the larger of three input values.
- A program that takes three inputs and Outputs them in ascending order.
- A program that takes two inputs and subtracts the second from the first. If the result is negative, the program should subtract the first input from the second.
- A program that counts down from any input value.
- A program that outputs the product of two input values.
- A program that outputs the quotient of two input values.
- A program that outputs the remainder of two input values.
-
Write a program to ...
-
Write a program to count the sum of descending numbers from an input down to 1. e.g.
$$f(n) = n + (n - 1) + (n - 2) + ... + 3 + 2 + 1\\\ f(5) = 5 + 4 + 3 + 2 + 1$$ -
Write a program to count the number of inputs. solution
Number | Exercise | Description | Solution |
---|---|---|---|
1 | Is Applicant Eligible for Garda | Write a program to check if a Guard is eligible to apply. | solution |
Copyright © 2024 Mark Crowe. All Rights Reserved.