2022-08-20 12:30:04 +01:00
|
|
|
---
|
|
|
|
categories:
|
2022-08-21 11:00:04 +01:00
|
|
|
- Computer Architecture
|
2023-02-10 18:22:04 +00:00
|
|
|
tags: [CPU]
|
2022-08-20 12:30:04 +01:00
|
|
|
---
|
2023-02-10 18:22:04 +00:00
|
|
|
|
2022-08-08 08:00:04 +01:00
|
|
|
## The Little Man Computer
|
|
|
|
|
2024-02-17 11:57:44 +00:00
|
|
|
The [Little Man Computer]() is a simplified
|
2024-02-02 15:58:13 +00:00
|
|
|
computer that works on Von Neuman principles. It has all the CPU components we
|
|
|
|
have detailed above. It is programmed in machine code but for simplicity it uses
|
|
|
|
the denary rather than the binary number system.
|
2022-08-08 08:00:04 +01:00
|
|
|
|
2024-02-17 11:57:44 +00:00
|
|
|

|
2022-08-08 08:00:04 +01:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
On the left is the instruction set. Each number constitutes and execution
|
|
|
|
routine and the `xx` stand for the address in RAM that the execution will work
|
|
|
|
on.
|
2022-08-08 08:00:04 +01:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
Each row of the RAM has a denary address, 1 through to 99. Each address can hold
|
|
|
|
three digits.
|
2022-08-08 08:00:04 +01:00
|
|
|
|
2023-02-10 18:22:04 +00:00
|
|
|
- So the instruction `560` would mean _load the number at address 60._
|
|
|
|
- The instruction `340` would mean _store a datum at address 40_
|
2022-08-08 08:00:04 +01:00
|
|
|
|
|
|
|
### Working through a basic computation
|
|
|
|
|
|
|
|
We are going to add two numbers together as a basic example.
|
|
|
|
|
|
|
|
1. First we need to place the two numbers in RAM we are going to use `5` and `3`
|
2024-02-02 15:58:13 +00:00
|
|
|
- At address `60` we will put the number `5` and at address `61` we will put
|
|
|
|
the number `3`
|
2023-02-10 18:22:04 +00:00
|
|
|
- We are going to start at address `0` in the top left of the RAM grid
|
2024-02-02 15:58:13 +00:00
|
|
|
1. The first instruction will be _load address 60_ which in the assembly will be
|
|
|
|
`560` . We put this in address `0`, our starting point.
|
2022-08-08 08:00:04 +01:00
|
|
|
1. This first instruction is now stored in the accumulator.
|
2024-02-02 15:58:13 +00:00
|
|
|
1. Now we want to _add this number (in the accumulator) to the number in address
|
|
|
|
61_
|
2022-08-08 08:00:04 +01:00
|
|
|
1. This second instruction is `161` . We write this in address `1`
|
2024-02-02 15:58:13 +00:00
|
|
|
1. Finally we want to store the output of the calculation in the RAM, let's say
|
|
|
|
at address `62`
|
2022-08-08 08:00:04 +01:00
|
|
|
1. So we store the command `362` at address `2`
|