78 lines
1.4 KiB
Plaintext
78 lines
1.4 KiB
Plaintext
# little person computer
|
|
|
|
the little person computer is a model to learn about {computer architecture}
|
|
|
|
# architecture
|
|
|
|
is uses the decimal system, with words of three-digits each.
|
|
|
|
it has ten instructions and 100 memory addresses.
|
|
|
|
# example programs
|
|
|
|
written in the corresponding assembly language.
|
|
|
|
as part of the {s-camino} practice.
|
|
|
|
## multiplication of two numbers
|
|
|
|
### no labels
|
|
|
|
pure assembler version, no labels.
|
|
|
|
* 15 is the address for the result
|
|
* 16 is the address for 'a'
|
|
* 17 is the addres for 'b'
|
|
|
|
```
|
|
INP
|
|
STA 16
|
|
INP
|
|
STA 17
|
|
BRZ 11
|
|
LDA 16
|
|
ADD 15
|
|
STA 15
|
|
LDA 17
|
|
SUB 14
|
|
BRA 3
|
|
LDA 15
|
|
OUT
|
|
HLT
|
|
DAT 1
|
|
DAT 0
|
|
DAT 0
|
|
DAT 0
|
|
```
|
|
|
|
### with labels
|
|
|
|
the same behavior as above, but using labels for easier programming and reading
|
|
|
|
```
|
|
inputs INP
|
|
STA a
|
|
INP
|
|
loop STA b
|
|
BRZ print // finish if b is 0
|
|
LDA a
|
|
ADD result
|
|
STA result
|
|
LDA b
|
|
SUB one
|
|
BRA loop
|
|
print LDA result
|
|
OUT
|
|
HLT
|
|
one DAT 1
|
|
result DAT 0
|
|
a DAT 0
|
|
b DAT 0
|
|
```
|
|
|
|
# external links
|
|
|
|
=> https://teachcomputerscience.com/little-man-computer/ little man computer
|
|
=> https://teachcomputerscience.com/lmc-instruction-set/ the lmc instruction set
|
|
=> https://www.peterhigginson.co.uk/lmc/ little man computer - cpu simulator
|