Program Counter

Download Report

Transcript Program Counter

GCSE Computing – the LMC

Candidates should be able to:

describe the characteristics of an assembler

© GCSE Computing Slide 1

What is the LMC?

      LMC stands for

Little Man Computer

.

The LMC is a CPU simulator that models a simple computer using the

von Neumann

architecture and memory use    

a central processing unit consisting of an arithmetic logic unit and registers a control unit containing an instruction register and program counter input and output mechanisms RAM to store both data and instructions

external secondary storage

The simulation uses the idea of a ‘Little Man’ inside the computer fetching instructions from RAM and executing them.

The LMC can be programmed directly by entering machine code (

but in decimal

) directly into RAM.

However, the LMC is usually programmed in

assembly code

.

An

assembler

then

translates

the assembly code into machine code (

but in decimal

) and loads it into RAM.

© GCSE Computing Slide 2

What are the components of the LMC?

      

RAM

consisting of 100 memory addresses (0-99). Each address can hold a decimal format number up to 999.

INPUT

using a 0-9 digit keypad.

OUTPUT

using a multi-line display.

A

PROGRAM COUNTER

that stores the address of the next instruction in RAM.

An

INSTRUCTION REGISTER

that stores the OPP CODE of the current instruction.

An

ADDRESS REGISTER

that stores the address part of the current instruction (

if it has one

).

An

ACCUMULATOR

that stores the results of any calculations.

© GCSE Computing Slide 3

Programming the LMC

 As the simulation runs the ‘Little Man’ inside the computer carries out the following steps: 1.

Check the

Program Counter

to find the RAM address with the program instruction to be fetched.

2.

3.

4.

Fetch the INSTRUCTION

from that RAM address.

Increment the Program Counter

(

so that it contains the RAM address of the next instruction

).

Decode

the instruction (

this might include finding the RAM address for

5.

6.

7.

the data it will work on

).

If necessary,

fetch the DATA

from the RAM address found in the previous step.

Execute

the instruction.

Repeat

the cycle or halt.

© GCSE Computing Slide 4

Parts of the LMC – before code is assembled

A program in ASSEMBLY LANGUAGE ready to be translated into machine code INPUT, allowing number data input OUTPUT, displaying number data output Memory addresses 0-99 An explanation of the instruction to be executed next © GCSE Computing Slide 5

Parts of the LMC – after code is assembled

The PROGRAM COUNTER The program in ASSEMBLY LANGUAGE without LABELS The INSTRUCTION REGISTER, containing the current INSTRUCTION CODE The contents of the ACCUMULATOR The ADDRESS REGISTER, containing the ADDRESS that the current instruction code refers to © GCSE Computing Slide 6

Parts of the LMC – after code is assembled

The program in ASSEMBLY LANGUAGE DATA stored in RAM MACHINE CODE instructions stored in RAM DATA © GCSE Computing Slide 7

The LMC – using labels with data

  Labels can be used to label a

memory address that contains DATA

. Being able to refer to the data as a label is much easier than having to refer to the address the data is stored at.

Example :  data1 DAT 

Explanation: The memory address where this data is stored is labelled data1. No data would initially be stored at this location. If this was the 7th line of assembly code to be compiled then the label would refer to memory address 6 (RAM addresses start at 0)

   data1 DAT 50 

Explanation: The memory address where this data is stored is labelled data1 and stores the data 50 . If this was the 7th line of assembly code to be compiled then the data 50 would be stored at memory address 6 (RAM addresses start at 0)

STA data1 

Explanation: The contents of the accumulator would be stored at memory address 6.

LDA data1 

Explanation: The data which is stored at memory address 6 would be loaded into the accumulator.

© GCSE Computing Slide 8

The LMC – using labels with branches

  Labels can be used to label a

memory address that contains an INSTRUCTION

. Being able to refer to the label rather than the address of the instruction makes it much easier when using BRANCH instructions such as BRA, BRP and BRZ.

Example:  loop1 INP 

Explanation: The memory address where this instruction is stored would be labelled loop1.

 BRZ loop1 

Explanation: If the contents of the accumulator were zero, the program would branch to the memory address labelled

loop1

instruction there.

and carry out the

To achieve this, the

Program Counter

would be set to the memory address labelled

loop1

.

If the contents of the accumulator were not zero then the Program Counter would simply be incremented by one.

© GCSE Computing Slide 9

The LMC – how labels are used

Labels used with BRANCH instructions Labels used with DATA © GCSE Computing Slide 10

Running a program using the LMC

2.

3.

4.

 1.

5.

6.

7.

After a program is assembled into machine code the

Program Counter

is always reset to memory address 0.

The ‘Little Man’ checks the Program Counter to find the RAM address with the

instruction

to be fetched (

in this case address 0

).

Here, the instruction

5 23

is fetched from RAM address 0.

The Program Counter is incremented

(

to RAM address 1

).

The instruction part (

5

) is loaded into the INSTRUCTION REGISTER and the address part (

23 , the RAM address for the data the instruction will work on

) is loaded into the ADDRESS REGISTER.

The instruction is then

decoded

.

The instruction is executed (

5 = LOAD into ACCUMULATOR so the 0 stored at RAM address 23 is loaded into the ACCUMULATOR

).

Back to step 1 to repeat the cycle until a HALT instruction is reached.

© GCSE Computing Slide 11

INPUT and OUTPUT using the LMC

  An instruction starting with a 9 an INPUT/OUTPUT command.

( 9 01 or 9 02 ) means the instruction is The ‘address’ part of the instruction ( 01 or 02 ) decides if the instruction is actually an INPUT or an OUTPUT.

 01 means

INPUT

- entered using the number keypad and stored in the ACCUMULATOR when the Enter key is pressed.

 02 means

OUTPUT

– the value stored in the ACCUMULATOR is passed to the OUTPUT box.

© GCSE Computing Slide 12

The LMC instruction set

Instruction Load Store Add Subtract Input Output End Branch always Branch if zero Branch if zero or positive Data storage Mnemonic LDA STA ADD SUB INP OUT HLT BRA BRZ BRP DAT Machine Code 5xx 3xx 1xx 2xx 901 902 000 6xx 7xx 8xx © GCSE Computing

NOTE

: xx represents a memory address between 0 and 99.

Slide 13