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