mov ax , [1] - University Of Worcester

Download Report

Transcript mov ax , [1] - University Of Worcester

COMP 1321
Digital Infrastructure
Richard Henson
University of Worcester
October 2013
Week 3: The Fetch-Execute
Cycle
Explain the instruction set of a typical
CPU
 Understand the sequential way a CPU
works, using its instruction set
 Understand how registers and memory
addresses are used to process a CPU
instruction and store the results

CPUs and the SAM

SAM is a CPU simulator
designed to allow you to watch what
happens when a CPU works
CPU very, very, very fast
 Processes one instruction at a time
 Instructions can require several cycles

What is “Processing”?

Usually calculations:
need data input
» from register
» from external memory
need to store output
» from register
» from external memory

Could also be a command without data
CPU types

Most frequently used:
Intel 8086 family
Motorola (esp. 68000 family)
ARM (many mobile phones)

We’ll focus on Intel 8086 family
dates back to original IBM PC…
Registers

A series of memory stores inside the
CPU
usually containing one word of memory
» 1, 2, 4 bytes i.e. very very small!

CPU reads/writes data very very
quickly to/from the registers
Registers (from last week…)
Registers:
high-speed memory on the
CPU chip
Parking places for data on the
move
AX and BX registers are used
for ALU operations
MAR is memory address
register, 4 in eg.
Result, 6+8=14, will go into
memory cell address 4
AX
6
BX
8
0
6
1
8
MAR
R
4
4
8086 CPU family registers

8086 chip always used a 16-bit word
SAM simulates an 8-bit word
» popular for most early microcomputers

Typical 8086 registers:
general purpose data: AX, BX, CX, DX
specific use e.g.
» program counter: instruction address in memory
» stack pointer…
Data and Addressing

A general purpose register could
contain
data
A memory address that points to data

Convention:
data written as hexadecimal equivalent
» e.g. 4A
memory location has square brackets
» e.g. [4A]
Instructions
Used to tell the CPU what to do…
 MOV is for moving data around…

MOV AX, 4A – move “4A” into AX register
MOV AX, [4A] – move data contained in
address 4A into AX
register

Other instructions for different
operations…
collectively known as an instruction set
8086 in practice

Four 16-bit General Purpose registers
each gen register split into upper byte &
lower byte:
upper byte
lower byte
AX
AH
AL
BX
BH
BL
CX
CH
CL
DX
DH
DL
Another 8086 Instruction: ADD
Takes values from two registers
 Adds them together
 Deposits results back in one of the
registers
 Which one?

the register that appears first in the
instruction
Fetch-Execute Cycle
(Organization and Control)
1. Fetch instruction
from memory
5. Write back results
to registers
ax <- ALU
add ax , bx
2. Decode the instruction
and read any registers
ALU <- ax
ALU <- bx
4. Do any Memory
Access
(Data cache)
None needed
3. Do any ALU operations
ax + bx
(execute units)
Fetch-Exec : State 1
Instruction Fetch
add ax , bx
add ax bx
AX
BX
3
1
add ax,bx
0
3
1
8
2
7
3
1
4
9
Fetch-Exec : State 2
Decode, Register
Operations
add ax , bx
add ax bx
AX
BX
3
1
3
1
add ax,bx
0
3
1
8
2
7
3
1
4
9
Fetch-Exec : State 3
ALU Operation
add ax , bx
add ax bx
AX
BX
add ax,bx
1
3
4
0
3
1
8
2
7
3
1
4
9
Fetch-Exec : State 4
Memory Access
add ax , bx
add ax bx
AX
BX
add ax,bx
1
3
4
0
3
1
8
2
7
3
1
4
9
Fetch-Exec : State 5
Register Write
add ax , bx
add ax bx
BX
add ax,bx
0
3
1
8
2
7
3
1
4
9
4
1
3
4
Fetch-Execute Cycle
(Organization and Control)
1. Fetch instruction
from memory
Data into ax
mov ax , [1]
2. Decode the instruction
and read any registers
Read the ‘1’
5. Write back results
to registers
4. Do any Memory
Access
Read memory
at addr ‘1’
3. Do any ALU operations
Put ‘1’ into MAR
(execute units)
Fetch-Exec : State 1
Instruction Fetch
mov ax , [1]
mov ax , [1]
mov ax
1
0
3
1
8
2
7
3
1
4
9
Fetch-Exec : State 2
Decode, Register
Operations
mov ax , [1]
mov ax , [1]
mov ax
1
0
3
1
8
2
7
3
1
4
9
Fetch-Exec : State 3
ALU Operation
mov ax , [1]
mov ax , [1]
mov ax
1
1
0
3
1
8
2
7
3
1
4
9
Fetch-Exec : State 4
Memory Access
mov ax , [1]
mov ax , [1]
mov ax
1
8
1
0
3
1
8
2
7
3
1
4
9
Fetch-Exec : State 5
Register Write
mov ax , [1]
mov ax , [1]
mov ax
1
8
8
1
0
3
1
8
2
7
3
1
4
9
8088: Brains of the IBM PC
address bus
Inside the 8088
address adder
External
buses
gen registers
ALU
Pentium
1
2
(same
family)
1.
2.
3.
4.
5.
Fetch
Decode
ALU
Mem Ops
Reg Write
3
4
5
Programming a CPU
CPU programming code written as
assembly language
 Each family has its own instruction set
 Programming syntax will depend on the
instructions & how they should be used
 Intel 8086 assembly language is used
for CPUs that support Microsoft
platforms…

Example 8086
Assembly Language
MOV AH,08
INT 21
MOV DL,AL
MOV AH,02
INT 21
MOV AH,4C
INT 21
So THAT’S how it all works!

now you try it on SAM2…
Next week: a focus on writing
programs and i/o