Bay giảng Kỹ thuậtVi xử lý
Ngành Điện tử-Viễn thông
Đại học Bách khoa ĐàNẵng
củaHồ Viết Việt, Khoa CNTT-ĐTVT
Tài liệu tham khảo
[1] Kỹ thuậtvi xử lý, Văn Thế Minh, NXB Giáo
dục, 1997
[2] Kỹ thuậtvi xử lý và Lập trình Assembly cho
hệ vi xử lý, Đỗ Xuân Tiến, NXB Khoa học& kỹ
thuật, 2001
Chương 3
Vi xử lý 8088-Intel
3.1 Kiến trúc và hoạt động của 8088
- Nguyên lý hoạt động
- Sơ đồ khối chức năng
3.2 Cấu trúc thanh ghi của 8088
3.3 Phương pháp quản lý bộ nhớ
3.4 Mô tả tập lệnh Assembly
Lấy - Giải mã - Thực hiện lệnh
Tìm và copy
các byte lệnh từ bộ nhớ
Giải mã lệnhTạo ra các tín hiệu điều khiển
để thực hiện lệnh
Nguyên lý hoạt động của một bộ vi xử lý
Chu kỳ lệnh và Chu kỳ máy
• Chu kỳ lệnh: Tổng thời gian tìm lệnh, giải
mã lệnh và thực hiện 1 lệnh
• Nói chung, Chu kỳ lệnh của các lệnh khác
nhau là khác nhau
• Chu kỳ lệnh bao giờ cũng bằng một số
nguyên lần chu kỳ máy
• Chu kỳ máy bằng nghịch đảo của tần số
hoạt động (tốc độ đồng hồ) của bộ vi xử lý
3.1 Kiến trúc và Hoạt động của 8088
Đơnvị giao tiếpBus -BIU
• Phát các tín hiệu địa chỉ đến bộ nhớ và các
cổng I/O thông qua A-Bus
• Đọc mã lệnh từ bộ nhớ thông qua D-Bus
• Đọc dữ liệu từ bộ nhớ thông qua D-Bus
•Ghi dữ liệu vào bộ nhớ thông qua D-Bus
• Đọc dữ liệu từ các cổng I thông qua D-Bus
•Ghi dữ liệu ra các cổng O thông qua D-Bus
Đơn vị thực hiện - EU
•Bao gồm CU và ALU
•CU :Giải mã lệnh để tạo ra các tín hiệu
điều khiển nhằm thực hiện lệnh đã được
giải mã
•ALU: thực hiện các thao tác khác nhau đối
với các toán hạng của lệnh
Tổ chức của microprocessor
ALU
BIU
Control
Control
registers
General
purpose
registers
Status
Registers
Control
Data
Address
CPU
Xử lý lệnh của các vi xử lý trước 8086/8088
•Một thủ tục đơn giản gồm 3 bước:
–Lấy lệnh từ bộ nhớ
–Giải mã lệnh
–Thực hiện lệnh
•Lấy các toán hạng từ bộ nhớ (nếucó)
•Lưu trữ kết quả
Fetch
1
Decode
1
Execute
1
Fetch
2
Decode
2
Execute
2
…...
Busy Idle Busy …...Busy Idle Busy
Microprocessor
Bus
Cơ chế Pipelining
P ipelining
Bus
Fetch
1
Fetch
2
Fetch
3
Fetch
4
Store
1
Fetch
5
…...
Fetch
6
Fetch
7
Load
2
Instruction
Unit
Decode
1
Decode
2
Decode
3
Decode
4
Idle
Decode
5
…...
Decode
6
Idle
Decode
7
Exec.
1
Exec.
2
Exec.
3
Exec.
4
Idle
Idle Exec.
5
Exec.
6
Exec.
7
Idle
Execution
Unit
Memory request Memory request
3.2 Cấu trúc thanh ghi của 8088
8088 có 14 thanh ghi 16-bit
Cấu trúc thanh ghi củahọ x86
Accumulator
EAX
AH AL
AX
Base
EBX
BH BL
BX
Count
ECX
CH CL
CX
Data
EDX
DH DL
DX
General Purpose
Instr Pointer
EIP
IP
Flags
EFLAG
FLAG
Special Registers
Stack Segment
Code Segment
CS
Data Segment
DS
Extra Segment
ES
SS
FS
GS
Segment Registers
Stack Pointer
ESP
SP
Base Pointer
EBP
BP
Dest Index
EDI
DI
Source Index
ESI
SI
Index Registers
Cấu trúc thanh ghi 8086/8088
AH
BH
CH
DH
AL
BL
CL
DL
0707
015
IP
SP
BP
SI
DI
Accumulator
Base
Counter
Data
CS
DS
SS
ES
015
Code Segment
Data Segment
Stack Segment
Extra Segment
Instruction Pointer
Stack Pointer
Base Pointer
Source Index
Destination Index
}
}
}
AX
BX
CX
DX
AH
BH
CH
DH
AL
BL
CL
DL
0707
Accumulator
Base
Counter
Data
AX
BX
CX
DX
-
Có thể truy cập như các thanh ghi 8-bit
-Lưu trữ tạm thời dữ liệu để truy cập nhanh hơn
và tránh khỏi phải truy cập bộ nhớ
- Có công dụng đặc biệt đối với một số câu lệnh
Các thanh ghi đa năng
Các thanh ghi segment
CS
DS
SS
ES
015
Code Segment
Data Segment
Stack Segment
Extra Segment
-
Lưu trữ địa chỉ segment của một ô nhớ cần truy cập
-Kết hợp với các thanh ghi offset nhất định
-
Lưu trữ địa chỉ offset của một ô nhớ cần truy cập
-Kết hợp với các thanh ghi segment nhất định
Các thanh ghi offset
IP
SP
BP
SI
DI
Instruction Pointer
Stack Pointer
Base Pointer
Source Index
Destination Index
x x x x OF DF IF TF SF ZF x AF x PF x CF
015
Thanh ghi cờ
- Không phải tất cả các bit đều được sử dụng
-Mỗi bit được sử dụng được gọi là một cờ
-Các cờ đều có tên và có thể được Lập/Xoá
riêng lẽ
-Bao gồm các cờ trạng thái và các cờ điều
khiển
Flags register
8086, 8088, 80186
8086, 8088, 80186
80286
80286
80386, 80486DX
80386, 80486DX
80486SX
80486SX
AC
AC
(Alignment check)
(Alignment check)
(VM)
(VM)
Virtual mode
Virtual mode
(RF)
(RF)
Resume
Resume
(NT)
(NT)
Nested task
Nested task
(IOPL)
(IOPL)
Input/output
Input/output
privilege level
privilege level
(O)
(O)
Overflow
Overflow
(D)
(D)
Direction
Direction
(I)
(I)
Interrupt
Interrupt
(T)
(T)
Trace
Trace
(S)
(S)
Sign
Sign
(Z)
(Z)
Zero
Zero
(A)
(A)
Auxiliary Carry
Auxiliary Carry
(P)
(P)
Parity
Parity
(C)
(C)
Carry
Carry
3.3 Phương pháp quản lý bộ nhớ
-Bộ nhớ được xem là một tập hợp các ô nhớ
-Mỗi ô nhớ được nhận dạng bằng một Địa chỉ
vật lý duy nhất 20-bit
- Trong hoạt động truy cập một ô nhớ, Địa chỉ
vật lý của nó được tạo ra từ hai giá trị 16-bit:
Địa chỉ segment và Địa chỉ Offset
- Địa chỉ logic = Địa chỉ segment:Địa chỉ offset
Mối liên hệ giữa ĐCVL và ĐCLG
A=Bus
0000
Thanh ghi offset.
Thanh ghi Segment
Địa chỉ vật lý
00
0
1515
19
3.4 Mô tả tập lệnh Assembly của
8086/8088
- Khuôn dạng: Mnemonics Các toán hạng
- Nhóm lệnh chuyển số liệu
- Nhóm lệnh số học
- Nhóm lệnh logic
- Nhóm lệnh Rẽ nhánh
- Nhóm lệnh thao tác string
- Nhóm lệnh hỗn hợp
Nhóm lệnh chuyển số liệu
Data Transfer Instructions
-Chuyển số liệu (sao chép số liệu) từ vị trí này
sang vị trí khác
-Nguồn số liệu không thay đổi
- Đich sẽ có giá trị như giá trị của Nguồn
-Các lệnh chuyển số liệu không ảnh hưởng đến
các cờ trạng thái trên thanh ghi cờ
-Một số lệnh tiêu biểu: MOV, XCHG
Data Transfer Instructions -
MOV
Khuôn dạng: MOV Đích,Nguồn
- Tác dụng: (Đích) Å (Nguồn)
- Đích: có thể là:
1. Một thanh ghi 8 hoặc 16 bit của VXL
2. Một vị trí nhớ (1 hoặc 2 ô nhớ liên tiếp
nhau)
-Nguồn: có thể là:
1. Một thanh ghi 8 hoặc 16 bit củaVXL
2. Một vị trí nhớ (1 hoặc2 ônhớ liên tiếp
nhau)
3. Một giá trị cụ thể
Mộtsố lưuý đối vớiMOV
- Đích và Nguồn phải có cùng kích cỡ
- Đích và Nguồn không thể đồng thời
thuộc bộ nhớ
-Nếu Đích là một thanh ghi segment
của VXL thì Nguồn không thể là một
giá trị cụ thể (nói cách khác, không thể
nạp giá trị trựctiếp cho một thanh ghi
segment bằng lệnh MOV)
Data Transfer Instructions - XCHG
Khuôn dạng: XCHG T/h1,T/h2
- Tác dụng: (T/h1) Å (T/h2)
- T/h1: có thể là:
1. Một thanh ghi 8 hoặc 16 bit của VXL
2. Một vị trí nhớ (1 hoặc 2 ô nhớ liên tiếp
nhau)
- T/h2: có thể là:
1. Một thanh ghi 8 hoặc 16 bit củaVXL
2. Một vị trí nhớ (1 hoặc2 ônhớ liên tiếp
nhau)