



















Preview text:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG BÀI GIẢNG MÔN VI XỬ LÝ
(Bài giảng môn Vi Xử Lý được biên soạn theo Giáo trình KT VXL)
TS. Nguyễn Trọng Kiên
Khoa Kỹ thuật điện tử 2 2020 BÀI GIẢNG MÔN VI XỬ LÝ CHƯƠNG 2
CẤU TRÚC CỦA BỘ VI XỬ LÝ Trang 2 BÀI GIẢNG MÔN VI XỬ LÝ PM T;M Execution Unit Bus Interface Unit 1. SƠ .AAC"IIBT=IBCaBbH-I ĐỒ .S .L 9M??.!;<@ TS TL UD-DBT=I KHỐI QS QL Q9 US UL U9 9: 99 T: P9 U; ;< T; ;R-"CRDO T=I QB##=RH>D-HBRI QBR-CBO F"*HI-"CI gagg T=I !"#ABCDCE F"*HI-"CI ;RI-C=>-HBRBI="=" .LM PM c C d e QBR-CBO NOD*I Trang 3 BÀI GIẢNG MÔN VI XỬ LÝ
Các khối chức năng chính
• Sơ đồ khối của VXL 8086 bao gồm hai khối chính:
§ BIU (Bus Interface Unit): Quản lý việc truyền dữ
liệu giữa CPU và bộ nhớ hoặc các thiết bị ngoại vi.
Nó chịu trách nhiệm đọc lệnh từ bộ nhớ và lưu trữ
chúng vào hàng đợi lệnh.
§ EU (Execution Unit): Giải mã và thực hiện các
lệnh được lấy vào từ bộ nhớ Trang 4 BÀI GIẢNG MÔN VI XỬ LÝ
Đơn vị giao tiếp bus (Bus Interface Unit - BIU) PM T;M
• BIU tạo ra địa chỉ vật lý cung cấp ra bên ngoài, bằng cách .AAC"IIBT=IBCaBbH-I
kết hợp các giá trị trong các thanh ghi đoạn (segment .S .L 9M??.!;<@
registers: CS, DS, SS, ES) và các giá trị offset (IP, BP). TS TL UD-DBT=I
• CS (Code Segment): Chứa địa chỉ cơ sở của đoạn mã, nơi QS QL Q9 US UL
chứa các lệnh của chương trình. CS kết hợp với IP U9 9: 99
(Instruction Pointer) để xác định địa chỉ vật lý. T: P9 U;
• DS (Data Segment): Chứa địa chỉ cơ sở của đoạn dữ liệu, ;< T; ;R-"CRDO T=I
nơi chứa các biến và dữ liệu của chương trình. DS kết hợp QB##=RH>D-HBRI QBR-CBO F"*HI-"CI gagg
với các thanh ghi như SI (Source Index) T=I •
SS (Stack Segment): Chứa địa chỉ cơ sở của đoạn ngăn !"#ABCDCE
xếp (stack). Bộ vi xử lý sử dụng SS cùng với con trỏ ngăn F"*HI-"CI
xếp (Stack Pointer - SP) để quản lý ngăn xếp ;RI-C=>-HBRBI="=" .LM PM
• ES (Extra Segment): Thường được sử dụng trong các thao c C d e QBR-CBO
tác chuỗi và các hoạt động dữ liệu bổ sung. ES kết hợp với NOD*I
DI trong các lệnh thao tác chuỗi như MOVSB (Move String Byte) Trang 5
• Hàng đợi lệnh: chức năng quan trọng nhất của BIU là quá
trình lấy lệnh từ bộ nhớ sắp vào hàng đợi lệnh (FIFO) sẵn BÀI GIẢNG MÔN VI XỬ LÝ
Đơn vị giao tiếp bus (Bus Interface Unit - BIU) PM T;M
• Hàng đợi lệnh: chức năng quan trọng nhất của BIU là quá .AAC"IIBT=IBCaBbH-I
trình lấy lệnh từ bộ nhớ sắp vào hàng đợi lệnh (FIFO) sẵn .S .L 9M??.!;<@
sàng cho EU giải mã thực hiện. Nhờ hàng đợi lệnh (Queue) TS TL UD-DBT=I
quá trình lấy lệnh từ bộ nhớ thực hiện song song với các QS QL Q9 US UL quá trình khác. U9 9: 99 T: P9 U; ;< T; ;R-"CRDO T=I QB##=RH>D-HBRI QBR-CBO F"*HI-"CI gagg T=I !"#ABCDCE F"*HI-"CI ;RI-C=>-HBRBI="=" .LM PM c C d e QBR-CBO NOD*I Trang 6 BÀI GIẢNG MÔN VI XỬ LÝ
Thanh ghi đoạn giao quản lý bộ nhớ vật lý (RAM) Trang 7 BÀI GIẢNG MÔN VI XỬ LÝ
Khối thực hiện lệnh (EU)
Bộ điều khiển (Control Unit): PM § T;M Nhậ .AAC"I n IB T=mã IBCaBbH-
I lệnh từ Bus Interface Unit (BIU) và sau đó tiến .S .L 9M?? hà .!;< nh @ giải mã lệnh. TS TL UD-DBT=I QS QL §
Dựa trên mã lệnh đã giải mã, CU tạo ra các tín hiệu điều Q9 US UL
khiển để điều phối hoạt động của ALU (Arithmetic Logic U9 9: U 99
nit), các thanh ghi, và bộ nhớ T: P9 U; Khối
;< thực hiện các phép toán số học logic (ALU): T; § ;RAL -"CRDO T=I QB##=RH>D-HBU RI QBR-CBO F"*HI-"CI
là bộ phận trong CPU thực hiện tất cả các phép tính gagg số học (như cộng, T=I
trừ, nhân, chia), các phép toán logic
(như AND, OR, NOT) và phép toán So sánh. ALU cũng !"#ABCDCE F"*HI-"CI
cập nhật trạng thái Cờ (Zero, Carry, Overflow, Sign) ;RI-C=>-HBRBI="=" .LM PM
§ Các toán hạng mà ALU có thể nằm trong các thanh ghi dữ c C d e QBR-CBO
liệu, trong bộ nhớ, hoặc được xác định trực tiếp trong mã NOD*I
lệnh (VD: MOV AX, 10). ALU thường thực hiện các
phép toán với tối đa hai toán hạng. Trang 8 BÀI GIẢNG MÔN VI XỬ LÝ
Khối thực hiện lệnh (EU) PM T;M Các Than .AAC"I h IB T= Gh
IBCaBbH-Ii Tổng Quát (General Purpose Registers): .S .L AH9,M? AL
?.!;<@ , BH, BL, CH, CL, DH, DL: Đây là các thanh ghi TS TL UD-DBT=I QS QL
tổng quát 8-bit. Mỗi cặp như AX, BX, CX, DX được chia thành Q9 US UL hai phầ U9
n 8-bit: phần cao (H) và phần thấp (L). Ví dụ, AX có thể 9: 99 T:
được chia thành AH và AL. P9 U; AX (A
;< ccumulator): thường được dùng để lưu trữ kết quả của T; các phé ;R-"CRDO T=I QB##=RH>D p -HBR t I QBR-CBO F"*HI-"CI oán số học và logic. gagg MOV AX, 10 ; Move 10 T=I into AX !"#ABCDCE
ADD AX, 20 ; Add 20 to AX, result in AX F"*HI-"CI BX (Bas;Re I-C=> R -HBRB egi
I="=" ster): Thường được sử dụng làm thanh ghi địa .LM PM c C d e QBR-CBO
chỉ cơ sở trong việc tính toán địa chỉ bộ nhớ. Ví dụ: NOD*I MOV AL,[BX]
; nội dung BX giữ địa chỉ của ô nhớ.
MOV AH,[BX+03] ;chép nội dung ô nhớ có địa chỉ [BX+3] vào AH. Trang 9 BÀI GIẢNG MÔN VI XỬ LÝ
Khối thực hiện lệnh (EU) PM T;M .AAC"IIBT=IBCaBbH-I .S .L Các 9M? ? T .!; h
<@ anh Ghi Tổng Quát (General Purpose Registers): TS TL CX (Coun UD- t DBT R =I
egister): Được sử dụng làm bộ đếm trong các QS QL Q9 US UL
vòng lặp và các phép toán dịch. U9 9: 99 T:
MOV CX, 5 ; Load 5 into CX P9 U; LOOP ;<
label ; trừ CX đi 1, lặp lại nhãn label khi CX ≠0. T; T=I
DX;R-"(CRD DO QB##=RH>D-HB at RI QBR-CBO F"*HI-"CI a Register ga ) gg :
Được sử dụng trong các phép nhân và
chia, và cũng có thểT=Ichứa địa chỉ I/O.
AX và DX được sử dụng cùng nhau trong các phép toán mà kết !"#ABCDCE F"*HI-"CI
quả vượt quá kích thước của một thanh ghi 16-bit. DX chứa dư, ;RI-C=>-HBRBI="=" .LM PM AX chứa thương c C d e QBR-CBO MOV AX, 10 NOD*I
MOV DX, 5 ; Prepare DX for division
DIV DX ; Divide AX by DX; AX=2; DX=0 Trang 10 BÀI GIẢNG MÔN VI XỬ LÝ
Khối thực hiện lệnh (EU) PM T;M v Các T .AACh "I an IBT=IB h CaB bHGh -I
i Chỉ Mục và Con Trỏ: thường được sử dụng .S .L 9M??.!;<@ TS TL
để chứa địa chỉ offset trong quá trình truy cập bộ nhớ và quản UD-DBT=I QS QL lý ngă Q9 n xếp. US UL U9 9:
o SP (Stack Pointer) và BP (Base Pointer) là hai thanh ghi 99 T: quan P9
trọng dùng để quản lý ngăn xếp trong lập trình hợp ngữ. U; ;< T;
o SP (Stack Pointer): Trỏ đến đỉnh của ngăn xếp. Nó được ;R-"CRDO T=I QB##=RH c >D ậ -HB p nhậ RI QBR-CBO F"*HI-"CI t tự động khi gagg
có các cuộc gọi hàm và trả về hàm. T=I
Ví dụ: push ax : đẩy giá trị ax vào stack (SP giảm); Lệnh POP: SP Tăng !"#ABCDCE F"*HI-"CI
o BP (Base Pointer): Thường được dùng để truy cập các ;RI-C=>-HBRBI="=" .LM PM
biến và tham số trong khung ngăn xếp (stack frame) khi c C d e QBR-CBO
một hàm được gọi. BP thường giữ cố định trong suốt quá NOD*I trình gọi hàm Trang 11 BÀI GIẢNG MÔN VI XỬ LÝ
Khối thực hiện lệnh (EU) PM T;M v Các T .A h AC" an IIBT=h IB CaGhi BbH-I
Chỉ số và Con Trỏ: thường được sử dụng để chứa .S .L đị 9 a M?? c.hỉ
!;<@ offset trong quá trình truy cập bộ nhớ và quản lý ngăn xếp. TS TL UD-DBT=I QS QL
o DI (Destination Index) và SI (Source Index): Được sử dụng trong Q9 US UL các t
U9 hao tác chuỗi và các lệnh liên quan đến bộ nhớ. 9: 99 T:
o SI (Source Index): Chứa địa chỉ nguồn trong các thao tác với P9 U;
chuỗi, dùng kết hợp với DS (Data Segment). Nó thường chỉ định ;< T; ;R-"C vị RDO trí của dữ T= l I iệu nguồn cần sao chép QB##=RH>D-HBRI QBR-CBO o F"*HI-D "CI I (Destination ga I gg T=I
ndex): Chứa địa chỉ đích trong các thao tác
chuỗi, thường dùng kết hợp với ES (Extra Segment), chỉ định
nơi dữ liệu sẽ được sao chép đến. !"#ABCDCE F"*HI-"CI
o Ví dụ: mov al, [si] ; Đọc dữ liệu từ bộ nhớ (RAM) vào CPU ;RI-C=>- m HBRBov [
I="="di], al ; Ghi dữ liệu từ CPU → bộ nhớ (RAM) .LM PM c C d e QBR-CBO
v Thanh Ghi Tạm Thời (Temporary Registers): NOD*I
o Các thanh ghi này được sử dụng nội bộ bởi CPU trong quá trình thực
thi lệnh để lưu trữ tạm thời các giá trị trung gian. Chúng không được
lập trình viên truy cập trực tiếp. Trang 12 BÀI GIẢNG MÔN VI XỬ LÝ
Khối thực hiện lệnh (EU) PM T;M v Cờ T .AAC r "I ạn IBT=IBC g aBb H- T I hái (Flags Register): .S .L o F 9M? l?ags .!;<@
Register chứa các cờ trạng thái phản ánh kết TS TL UD-DBT=I QS QL
quả của các phép toán thực hiện bởi ALU, bao gồm: Q9 US UL U9 9: 99 T: o Zer P9
o Flag (ZF): Được thiết lập nếu kết quả của một U; ;< T; phép toán là 0. Ví dụ: ;R-"CRDO T=I QB# § #=RH> M D-HBRI QBR-CBO F"*HI-"CI OV AL, 5gagg T=I
§ SUB AL, 5 ; 5 - 5 = 0 → ZF = 1 !"#ABCDCE F"*HI-"CI o Carr;RIy F -C=>-HBRB lag ( I="="
CF): Được thiết lập nếu có sự vượt tràn .LM PM c C d e QBR-CBO trong phép toán số học. o MOV AL, 255 ; AL = 11111111b NOD*I
o ADD AL, 1 ; 255 + 1 = 256 (vượt 8 bit)
=> Kết quả trong AL = 0 (do 8 bit) nhưng CF = 1 vì
có bit tràn sang bit thứ 9. Trang 13 BÀI GIẢNG MÔN VI XỬ LÝ
Khối thực hiện lệnh (EU) PM T;M v Cờ T .AAC r "I ạn IBT=IBC g aBb H- T I hái (Flags Register): .S .L 9M??.!;<@ TS TL UD-DBT=I QS QL o Sign Q9
Flag (SF): Xác định dấu của kết quả (âm hoặc US UL U9 9: dương). 99 T: oP9 MOV AL, 05h U; ;< T; o ;R-"CRDS O UB AL, 07h ; T=I
5 - 7 = -2 (trong bù 2 là 0xFE) ÞQB QBR-CBO AL ##=RH> D-= HBRI F"*HI-"CI 0xFE → bi gagg
T=I t cao nhất là 1 → SF = 1 (âm). !"#ABCDCE F"*HI-"CI
o Overflow Flag (OF): tràn dấu, dùng cho số có dấu (signe ;RI-C d =>-H ) BR. B Xác I="="
định sự vượt tràn trong phép toán số .LM PM c C d e QBR-CBO
học. Khác với CF (tràn bit), OF xét ý nghĩa toán học NOD*I
của dấu. Ví dụ: Giả sử AL là số có dấu (-128 đến +127) o MOV AL, 127 ; 01111111b
o ADD AL, 1 ; 127 + 1 = -128 (10000000b) Trang 14 BÀI GIẢNG MÔN VI XỬ LÝ
Tổng Quan Về Các Thanh Ghi Trong CPU
Các thanh ghi là một bộ phân rất quan trọng một CPU. Đó là các
thanh ghi nằm bên trong CPU vì vậy có tốc độ truy xuất rất nhanh
phù hợp cho việc lưu trữ các biến tạm, các kết quả trả về từ ALU,… v Các Điểm Chính:
v Thanh ghi là thành phần quan trọng trong CPU để truy xuất và
xử lý dữ liệu nhanh chóng.
v Chúng hoạt động như một bộ nhớ nhỏ, nhanh bên trong CPU để
lưu trữ dữ liệu và lệnh tức thời giúp tăng tốc độ thực thi bằng
cách giảm nhu cầu truy cập bộ nhớ ngoài. Trang 15 BÀI GIẢNG MÔN VI XỬ LÝ Các Loại Thanh Ghi
Ø Bộ Đếm Chương Trình (Program Counter - PC): giữ địa chỉ của lệnh tiếp
theo cần được thực thi (Ở 8086, thanh ghi tương đương là IP (Instruction Pointer).
Ø Thanh Ghi Lệnh (Instruction Register - IR): lưu trữ lệnh hiện tại đang được CPU thực thi
Ø Thanh Ghi Địa Chỉ Bộ Nhớ (Memory Address Register - MAR): để giữ địa
chỉ của ô nhớ mà CPU cần truy xuất dữ liệu.
Ø Con Trỏ Ngăn Xếp (Stack Pointer - SP): giữ địa chỉ của đỉnh ngăn xếp
Ø Thanh Ghi Chỉ Số (Index Register): Chứa địa chỉ offset được sử dụng trong
các thao tác với bộ nhớ: như SI, DI
Ø Thanh Ghi Đa Dụng (General Registers): AX, BX, CX, DX
Ø Thanh Ghi Tích Luỹ (Accumulator Register): AX là một thanh ghi đặc biệt
được sử dụng trong các phép toán số học và logic
Ø Thanh Ghi Cờ (Flag Register): Chứa các cờ trạng thái (flags) phản ánh kết
quả của các phép toán trong ALU Trang 16 BÀI GIẢNG MÔN VI XỬ LÝ
Program Counter and Instruction register
Bước 1: CPU sử dụng giá trị trong Program Counter (PC) để xác định địa chỉ của lệnh tiếp theo
trong bộ nhớ. Trong hình, PC đang chứa giá trị 0x04, đây là địa chỉ của lệnh "Example
Instruction" trong bộ nhớ chương trình. Lệnh được vào hàng đợi lệnh. Hàng đợi lệnh hoạt động
theo nguyên tắc FIFO (First In, First Out). PC sẽ được cập nhật để trỏ đến địa chỉ của lệnh tiếp theo trong bộ nhớ.
Bước 2: Chuyển Lệnh Từ Hàng Đợi Lệnh Đến Thanh Ghi Lệnh (IR):
Lệnh đầu tiên trong hàng đợi lệnh được chuyển vào Thanh ghi lệnh (Instruction Register - IR)
để giải mã và thực thi. =>IR Lưu trữ lệnh hiện tại đang được CPU giải mã và chuẩn bị thực thi. Trang 17 BÀI GIẢNG MÔN VI XỬ LÝ
Thanh ghi địa chỉ bộ nhớ (Memory Address Register - MAR)
Chức Năng: MAR được sử dụng để giữ địa chỉ (logic) của ô nhớ mà CPU cần truy
xuất dữ liệu. Để tính địa chỉ vật lý từ MAR, CPU thường sử dụng MMU (Memory
Management Unit), chịu trách nhiệm chuyển đổi địa chỉ logic thành địa chỉ vật lý.
Giá trị của MAR: Sau khi quá trình truy cập bộ nhớ hoàn tất, giá trị trong MAR
không tự động thay đổi. Nó giữ nguyên địa chỉ đã sử dụng trong lần truy cập vừa rồi,
trừ khi được cập nhật bởi lệnh tiếp theo.
MAR được cập nhật khi có một lệnh truy
cập bộ nhớ. Điều này xảy ra trong hai trường hợp chính:
Khi nạp lệnh: MAR được cập nhật với địa
chỉ của lệnh cần nạp từ bộ nhớ, địa chỉ này
thường lấy từ PC (Program Counter).
Khi truy cập bộ nhớ: Trong các lệnh nạp
dữ liệu (load) hoặc lưu dữ liệu (store),
MAR chứa địa chỉ của ô nhớ cần truy xuất. Ví dụ:
MOV AX, [0x1000] ; MAR sẽ chứa địa chỉ 0x1000 Trang 18
MOV [0x2000], AX ; MAR được cập nhật với địa chỉ 0x2000 BÀI GIẢNG MÔN VI XỬ LÝ
Thanh ghi con trỏ ngăn xếp SP (Stack Pointer)
Ø Stack Segment (ngăn xếp): Là một đoạn bộ nhớ (thường đặt trong RAM) thường được sử
dụng để lưu trữ các biến cục bộ, tham số và các địa chỉ trả về của các hàm trong chương trình.
Ø Thanh ghi SP là một con trỏ đặc biệt trỏ đến đỉnh của ngăn xếp (stack) trong bộ nhớ
RAM. Ngăn xếp hoạt động theo nguyên tắc LIFO (Last In, First Out), tức là dữ liệu được
đưa vào sau cùng sẽ được lấy ra đầu tiên.
Truy cập bộ nhớ bằng lệnh ngăn xếp sử dụng SP:
Ø Khi dữ liệu được đưa vào ngăn xếp (PUSH), SP giảm để trỏ đến vị trí mới, sau đó dữ liệu
được ghi vào vị trí đó.
Ø Khi dữ liệu được lấy ra khỏi ngăn xếp (POP), dữ liệu được đọc từ vị trí SP đang trỏ tới,
sau đó SP tăng để trỏ trở lại vị trí trước đó. Trang 19 BÀI GIẢNG MÔN VI XỬ LÝ Địa chỉ Vật Lý
•Chế độ địa chỉ logic: Ví dụ:
Địa chỉ CS:IP = F000h:FFF0h
•Chế độ địa chỉ thực (vật lý): CS F000h x 10h + IP FFF0h = FFFF0h Trang 20