Giáo trình Vi xử lý - Chương 2: Tổ chức hệ thống vi xử lý

Tài liu vi xlý  
Tchc hthng vi xlý  
CHƯƠNG 2: TCHC HTHNG VI XỬ  
LÝ  
1. Gii thiu  
Tt ccác máy vi tính IBM hPC hoc các máy vi tính tương thích IBM đều sử  
dng µP Intel hiAPX. Bng 2.1 lit kê các đặc tính cơ bn ca mt sµP ca Intel  
trong đó 80486 cha mt bộ điu khin cache tích hp và 8 KB RAM tĩnh, Pentium  
cha cache 16 KB RAM tĩnh.  
Bng 2.1: Kiến trúc các µP ca Intel 8 bit, 16 bit và 32 bit  
ĐẶC TÍNH  
Bus địa ch(số  
bit)  
8080  
8086 8088 80186 80188 80286 80386  
386SX 486/Pentium  
8
16  
8
16  
8
16  
32  
16  
32  
Đường dliu  
ni (sbit)  
8
16  
16  
16  
16  
16  
32  
32  
32/64  
25-66  
0.04  
Tc độ (MHz) 2,2.6, 5,8,10 5,8  
8,10,  
12.5  
0.2  
8,10, 6,8,10, 16,20,25,  
16  
6.3  
1.3  
12.5 12.5,20  
33  
Thanh ghi đến  
thanh ghi  
0.3  
0.38  
0.3  
0.125  
0.125  
0.125  
(µs/word)  
Đáp ng  
7.3  
6.1  
8.6  
3.36  
6.2  
2.52  
3.5  
2.52  
3.5  
interrupt (µs)  
Địa chbnhớ  
Cách định địa  
chỉ  
64K  
5
1M  
24  
1M  
24  
1M  
24  
1M  
24  
16M  
24  
4G  
28  
4G  
28  
4G  
28  
Coprocessor  
0
6
0
8087 8087  
8087  
8087 80287 80287/ 80287/  
On chip  
8
80387  
8
80387  
8
Sthanh ghi  
đa dng  
8
4
8
4
8
4
8
4
8
4
Sthanh ghi  
đon  
6
6
6
Điu khin  
interrupt  
Timer –  
8259- 8259 8259-  
-A  
8253 8253 8253/  
/54 54  
On  
chip  
On  
On  
chip  
On  
8259- 8259-A 82335  
A
µPLD  
On chip  
A
A
8253/ 8253/5 8253/5  
counter  
chip  
chip  
54  
4
4
2. µP 8086/8088  
2.1. Mô t  
2.1.1.Định thì chu kbus  
Mi chu kbus bt đầu bng vic xut địa chbnhhoc I/O port (chu kỳ  
xung nhp T1). Vi 8086 thì địa chnày có thđịa chbnh20 bit, địa chI/O gián  
tiếp 16 bit (thanh ghi DX) hay địa chI/O trc tiếp 8 bit.  
Bus điu khin có 4 tín hiu tác động mc thp làMEMR , MEMW , IOR và  
IOW.  
Phm Hùng Kim Khánh  
Trang 22  
Tài liu vi xlý  
Tchc hthng vi xlý  
Các chui skin xy ra trong mt chu kbus đọc bnh:  
T1: µP xut địa chbnh20 bit. Các đường dliu không hot động và các  
đường điu khin bcm  
T2: Đường điu khin MEMR xung mc thp. Đơn vbnhghi nhn chu  
kbus này là quá trình đọc bnhđặt byte hay word có địa chỉ đó lên data bus.  
T3: µP đặt cu hình để các đường data bus là nhp. Trng thái này chyếu để  
bnhcó thi gian tìm kiếm byte hay word dliu  
T4: µP đợi dliu trên data bus. Do đó, nó thc hin cht data bus và gii  
phóng các đường điu khin đọc bnh. Quá trình này skết thúc chu kbus.  
T1  
T2  
T3  
T4  
Clk  
Address  
bus  
Địa chra  
Đọc bộ  
nhhay  
I/O  
IOR hay  
MEMR  
Data bus  
Dliu ra  
Address  
bus  
Địa chvào  
Ghi bộ  
nhhay  
I/O  
IOW  
MEMW  
hay  
Dliu vào  
Data bus  
Hình 2.1 – Định thì chu kbus  
Trong mt chu kbus, µP có ththc hin đọc I/O, ghi I/O, đọc bnhhay ghi  
bnh. Các đường address bus và control bus dùng để xác định địa chbnhhay I/O  
và hướng truyn dliu trên data bus.  
Chú ý rng µP điu khin tt ccác quá trình trên nên bnhbt buc phi  
cung cp được dliu vào lúc MEMR lên mc cao trong trng thái T4. Nếu không,  
µP sẽ đọc dliu ngu nhiên không mong mun trên data bus. Để gii quyết vn đề  
này, ta có thdùng thêm các trng thái ch(wait state).  
Phm Hùng Kim Khánh  
Trang 23  
Tài liu vi xlý  
Tchc hthng vi xlý  
2.1.2. Mô tchân  
1
2
40  
39  
38  
37  
36  
35  
34  
33  
32  
31  
30  
29  
28  
27  
26  
25  
24  
23  
22  
21  
GND  
AD14  
AD13  
AD12  
AD11  
AD10  
AD9  
VCC  
AD15  
3
A16/S3  
A17/S4  
A18/S5  
A19/S6  
BHE/S7  
MN/MX  
RD  
4
5
6
7
8
AD8  
9
AD7  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
AD6 HOLD (RQ/GT0)  
AD5 HLDA (RQ/GT1)  
AD4  
AD3  
AD2  
AD1  
AD0  
NMI  
WR (LOCK)  
IO/M (S2)  
DT/R (S1)  
DEN (S0)  
ALE (QS0)  
INTA (QS1)  
TEST  
INTR  
CLK  
GND  
READY  
RESET  
8086  
Hình 2.2 – Sơ đồ chân ca 8086  
8086 có bus địa ch20 bit, bus dliu 16 bit, 3 chân ngun và 17 chân dùng  
cho các chc năng điu khin. Tuy nhiên, ta có thdùng kthut ghép kênh thi gian  
(time multiplexing) để cho phép mt chân có nhiu chc năng nên các chân sẽ được  
phân ra:  
- 16 chân dliu và địa ch(AD0 ÷ AD15): các chân này slà các đường địa  
chtrong trng thái T1 và dliu trong các trng thái T2 – T4.  
- 4 chân địa chvà trng thái  
- 3 chân ngun  
- 17 chân định thì và điu khin  
8086 có thhot động chế độ ti thiu (minimum mode) hay chế độ ti đa  
(maximum mode). Chế độ ti thiu chdùng cho các hthng µP đơn gin còn chế độ  
ti đa dùng cho các hthng phúc tp hơn giao tiếp vi các bnhvà I/O riêng.  
Phm Hùng Kim Khánh  
Trang 24  
Tài liu vi xlý  
Tchc hthng vi xlý  
™ Các tín hiu chung cho chai chế độ ti đa và ti thiu:  
Bng 2.2:  
Chân  
Chc năng  
Bus dliu / địa chỉ  
Địa ch/ trng thái  
Điu khin chế độ  
Loi  
2 chiu, 3 trng thái  
Ngõ ra 3 trng thái  
Ngõ vào  
AD15 ÷ AD0  
A19/S6 ÷ A16/S3  
MX  
Điu khin đọc  
Ngõ ra 3 trng thái  
Ngõ vào  
Ngõ vào  
RD  
Chkim tra điu khin  
Chtrng thái điu khin  
Reset hthng  
TEST  
READY  
RESET  
NMI  
Ngõ vào  
Yêu cu ngt không thche Ngõ vào  
INTR  
CLK  
VCC  
GND  
Yêu cu ngt  
Xung nhp hthng  
+5V  
GND  
Ngõ vào  
Ngõ vào  
Ngõ vào  
Ngõ vào  
™ Các tín hiu chdùng trong chế độ ti thiu:  
Bng 2.3:  
Chân  
HOLD  
HLDA  
Chc năng  
Loi  
Yêu cu giữ  
Ngõ vào  
Ghi nhn giữ  
Điu khin ghi  
Điu khin I/O và bnhNgõ ra 3 trng thái  
Truyn / nhn dliu  
Cho phép dliu  
Đường trng thái  
Cho phép cht địa chỉ  
Ghi nhn ngt  
Ngõ vào  
Ngõ ra 3 trng thái  
WR  
IO/M  
DT/R  
Ngõ ra 3 trng thái  
Ngõ ra 3 trng thái  
Ngõ ra 3 trng thái  
DEN  
BHE/S7  
ALE  
Ngõ ra  
Ngõ ra  
INTA  
™ Các tín hiu chdùng trong chế độ ti đa:  
Bng 2.4:  
Chân  
RQ/GT1,0  
LOCK  
S2 ÷ S0  
Chc năng  
Loi  
Yêu cu / cp bus  
2 chiu  
Điu khin khóa ưu tiên bus  
Trng thái chu kbus  
Ngõ ra 3 trng thái  
Ngõ ra 3 trng thái  
QS1, QS2  
Trng thái hàng lnh  
Ngõ ra  
Phm Hùng Kim Khánh  
Trang 25  
Tài liu vi xlý  
Tchc hthng vi xlý  
™ Trng thái bus:  
Bng 2.5:  
Ngõ vào trng thái  
S2 S1 S0  
Chu kCPU  
0
0
0
0
1
1
1
1
0
0
Ghi nhn ngt  
Đọc I/O port  
Ghi I/O port  
Ngng  
0
1
1
0
0
1
1
1
0
1
0
1
0
1
Nhn lnh  
Đọc bnhớ  
Ghi bnhớ  
Thụ động  
™ Trng thái hàng lnh:  
Bng 2.6:  
QS1 QS0  
Trng thái hàng lnh  
Không hot động  
0
0
1
1
0
1
0
1
Ly byte đầu tiên ca lnh  
Hàng rng  
Ly byte kế tiếp  
™ Ngun cung cp và xung nhp (VCC, GND và CLK):  
- 8086 sdng ngun cp đin +5V và có 2 chân đất.  
- Dòng đin cc đại là 340 mA (10 mA cho loi CMOS).  
- Xung nhp dùng dng xung chnht có chu kvi thi gian cnh lên và  
xung nhhơn 10 ns.  
- Tiêu hao công sut và tn sxung nhp cc đại:  
™ Các chân trng thái trong chế độ ti đa (S0, S1 và S2 - status):  
Các chân này sdng bi bộ điu khin bus 8288 để to các tín hiu điu khin  
như bng 2.5.  
™ Các chân điu khin bus (HOLD, HLDA, RQ/GT0, RQ/GT1,  
LOCK ):  
Chế độ ti thiu:  
- HOLD (gi): ngõ vào tác động mc cao làm cho µP hmch tt ccác bus  
ca nó, tách µP khi bnhca nó và I/O để cho phép thiết bkhác xlý  
Phm Hùng Kim Khánh  
Trang 26  
Tài liu vi xlý  
Tchc hthng vi xlý  
bus hthng. Quá trình này gi là truy xut bnhtrc tiếp (DMA – Direct  
Memory Access).  
- HLDA (Hold acknowledge): ghi nhn yêu cu DMA đối vi bộ điu khin  
DMA.  
Chế độ ti đa:  
-
RQ/GT0, RQ/GT1 (Request / Grant): các chân này dùng chai chc năng  
vào (nhn yêu cu) và ra (chp nhn yêu cu). Khi mt thiết bmun ly  
điu khin ca bus cc b, nó sphát yêu cu bng cách đưa tín hiu mc  
thp vào chân yêu cu. Sau khi nhn yêu cu, 8086 sẽ ở trng thái HOLD và  
gi tín hiu chp nhn ra chân này. Ở đây, chân RQ/GT0 độ ưu tiên cao  
hơn chân RQ/GT1.  
-
LOCK : báo cho các thiết bkhác biết không thly điu khin ca bus cc  
b.  
™ Các chân ngt (NMI, INTR vàINTA):  
INTR và NMI là các yêu cu ngt khi động bng phn cng, làm vic chính  
xác như các ngt mm. NMI (Non-Maskable Interrupt) là ngõ vào tác động cnh lên.  
NMI là ngt không thche được và luôn được phc v, thường dùng cho các skin  
như hư ngun hay các li bnh. INTR tác động mc cao và có thbche bng cách  
xoá cIF trong thanh ghi c(xem 2.3.4) bng lnh CLI.  
Khi NMI tích cc, điu khin sẽ được chuyn đến địa chcha trong các vtrí  
00008h ÷ 0000Bh. Khi INTR tích cc, chu kghi nhn ngt (interrupt acknowledge  
cycle) được thc hin. Quá trình này ging như chu kỳ đọc bnhngoi trINTA  
tích cc thay vì RD . Thiết bto ngt sẽ đặt mt giá tr8 bit vào data bus và chuyn  
điu khin đến vtrí giá tr× 4 đến giá tr× 4 + 3.  
™ Chân RESET: hot động khi có xung tác động mc cao, dùng để khi động  
li (P. Sau khi khi động, (P sẽ đọc lnh ti địa chFFFF0h. RESET được  
sdng khi hthng có sc.  
™ Các chân điu khin bus (READY, RD, ALE, DEN , DT/R, WR và  
IO/M ):  
Trong các chân điu khin này, chcó hai chân READY và RD làm vic chế  
độ ti đa.  
- Chân READY: ngõ vào READY được ly mu cnh lên ca xung nhp  
T2. Nếu chân này mc thp (không sn sàng) thì sthêm vào mt chu kỳ  
T3 na. Chu trình này stiếp tc cho đến khi nào chân READY lên mc  
cao. Ngõ vào này thường được điu khin bi thiết bbnhchm, không  
thcung cp dliu kp thi cho µP.  
- Chân IO/M (IO/Memory – Xut nhp /Bnh): xác định chu kbus hin  
hành làm vic vi bnh(mc thp) hay I/O (mc cao).  
Phm Hùng Kim Khánh  
Trang 27  
Tài liu vi xlý  
Tchc hthng vi xlý  
- Chân RD (Read): tín hiu tác động mc thp chchiu truyn dliu tbộ  
nhhay I/O đến µP. Ta có thkết hp vi tín hiu này vi IO/M để to các  
tín hiu MEMR IOR . Nó được xut ra trong trng thái T2 và ly đi  
trong trng thái T4. Thiết bbnhhay I/O gisđã đặt byte hay word  
vào các đường dliu khi RD trvmc cao.  
- Chân WR (Write): tín hiu này ngược vi RD , nó xác định chiu truyn dữ  
liu tµP đến I/O hay bnh.  
RD  
MEMR  
1
1
1
2
2
2
1
2
1
2
1
2
1
2
3
3
3
3
IOR  
IO/M  
WR  
IOW  
MEMW  
Hình 2.3 – To tín hiu điu khin bnhvà I/O  
- Chân ALE (Address Latch Enable - cho phép cht địa ch): tín hiu ra trên  
chân này có thdùng để phân kênh các đường địa ch, dliu và trng thái  
trên AD0 ÷ AD15, A16/S3 ÷ A19/S6 và BHE/S7. Mi chu kbt đầu vi  
xung ALE trong trng thái T1. Địa ch20 bit được bo đảm shp lkhi  
ALE chuyn tmc cao xung mc thp.  
- Chân DEN (Data Enable – cho phép dliu): tín hiu này được dùng vi  
DT/R để cho phép ni các bộ đệm hai chiu vào data bus. Nó ngăn nga sự  
tranh chp bus bng cách cm các bộ đệm dliu cho đến trng thái T2 khi  
các đường dliu / địa chkhông còn lưu trữ địa chca bnhhay I/O.  
- Chân DT/R (Data transmit/receive – truyn/nhn dliu): dùng để điu  
khin chiu ca lung dliu qua các bộ đệm (nếu có) vào bus dliu ca  
hthng. Khi mc thp, nó chthc hin tác vụ đọc và khi mc cao nó  
chthc hin tác vghi.  
Phm Hùng Kim Khánh  
Trang 28  
Tài liu vi xlý  
Tchc hthng vi xlý  
T1  
T2  
T3  
T4  
Clk  
ALE  
M
IO/  
Địa ch/  
S3 ÷ S7  
BHE  
A16 ÷ A19,  
A0 ÷ A15  
trng thái  
Dliu vào  
D0 ÷ D15  
AD0 ÷ AD15  
Chu kỳ  
RD  
đọc  
DT/ R  
DEN  
AD0 ÷ AD15  
A0 ÷ A15  
Döõ lieäu ra D0 ÷ D15  
Chu kỳ  
ghi  
RD  
DT/ R  
DEN  
Hình 2.4 – Các chu kỳ đọc và ghi ca 8086  
™ Các chân trng thái (AD16/S3 ÷ AD19/S6 và BHE /S7):  
5 tín hiu trng thái này được xut ra trong các trng thái T2 ÷ T4, dùng cho các  
mc đích kim tra. Bit S7 là bit trng thái dư (không dùng), bit S6 luôn bng 0, S5 mô  
ttrng thái ca cngt IF còn S3, S4 dùng để xác định đon đang sdng:  
Bng 2.7:  
S4 S3  
Đon  
0
0
1
1
0
1
0
1
Thêm  
Stack  
Mã (hay không)  
Dliu  
Phm Hùng Kim Khánh  
Trang 29  
Tài liu vi xlý  
Tchc hthng vi xlý  
Tín hiu BHE /S7 (Bus High Enable) chỉ được xut trong trng thái T1. Khi  
chân này mc thp, nó schAD8 ÷ AD15 liên quan đến vic truyn dliu. Quá  
trình này có thxy ra đối vi các truy xut bnh, I/O hay truy xut 1 byte dliu từ  
địa chl.  
™ Bus dliu (AD0 ÷ AD15):  
16 chân này to thành bus dliu hai chiu. Các đường này chhp ltrong các  
trng thái T2 ÷ T4. Trong trng thái T1, chúng gi16 bit thp ca địa chbnhhoc  
I/O.  
™ Bus địa ch(AD0 ÷ AD15 và AD16/S3 ÷ AD19/S6):  
20 chân này tương ng vi bus địa ch20 bit và cho phép µP truy xut 1 MB vị  
trí bnh. Các đường ra này chhp ltrong trng thái T1, chuyn thành các đường  
dliu và trng thái trong trng thái T2 ÷ T4.  
™ Chn chế độ MX :  
Chân này dùng để chn chế độ hot động cho 8086, nếu mc cao thì shot  
động chế độ ti thiu còn mc thp thì shot động chế độ ti đa.  
2.2.  
Kiến trúc ni  
µP có khnăng thc hin các tác vdliu theo tp lnh bên trong. Mt lnh  
được ghi nhn bng mã đã được định nghĩa trước, gi là mã lnh (opcode). Trước khi  
thc thi mt lnh, µP phi nhn được mã lnh tbnhchương trình ca nó. Quá  
trình xlý này gi là chu knhn lnh (fetch cycle). Mt khi các mã được nhn và  
được gii mã thì mch bên trong µP có thtiến hành thc thi (execute) mã lnh.  
BIU  
EU  
Hàng lnh  
Bus hthng  
Hình 2.5 – Kiến trúc ni ca µP 8086  
BIU (Bus Interface Unit – đơn vgiao tiếp bus) nhn các mã lnh tbnhvà  
đặt chúng vào hàng chlnh. EU (Execute Unit – đơn vthc thi) sgii mã và thc  
hin các lnh trong hàng. Chú ý rng các đơn vEU và BIU làm vic độc lp vi nhau  
nên BIU có khnăng đang nhn mt lnh mi trong khi EU dang thc thi lnh trước  
đó. Khi EU đã thc hin xong lnh, nó sly mã lnh kế tiếp trong hàng đợi lnh  
(instruction queue).  
Phm Hùng Kim Khánh  
Trang 30  
Tài liu vi xlý  
Tchc hthng vi xlý  
Kiến trúc ni ca µP 8086 hình 2.2. Nó có 2 bxlý riêng: BIU và EU. BIU  
cung cp các chc năng phn cng, bao gm to các địa chbnhvà I/O để chuyn  
dliu gia EU và bên ngoài µP.  
BIU  
EU  
Điu khin bus và  
sinh địa chỉ  
Σ
AH  
BH  
CH  
DH  
AL  
BL  
CL  
DL  
5
4
3
2
1
CS  
ES  
SS  
DS  
IP  
BP  
DI  
SI  
SP  
Internal bus  
Thanh ghi cờ  
ALU  
Hình 2.6 – Kiến trúc ni ca 8086  
EU nhn các mã lnh chương trình và dliu tBIU, thc thi các lnh này và  
cha các kết qutrong các thanh ghi. Ngoài ra, dliu cũng có thcha trong mt vị  
trí bnhhay được ghi vào thiết bxut. Chú ý rng EU không có bus hthng nên  
phi thc hin nhn và xut tt ccác dliu ca nó thông qua BIU.  
Skhác bit gia µP 8086 và 8088 là BIU. Trong 8088, đường bus dliu là 8  
bit trong khi ca 8086 là 16 bit. Ngoài ra hàng lnh ca 8088 dài 4 byte trong khi ca  
8086 là 6 byte.  
Phm Hùng Kim Khánh  
Trang 31  
Tài liu vi xlý  
Tchc hthng vi xlý  
Tuy nhiên do EU gia hai loi µP này ging nhau nên các chương trình viết  
cho 8086 có thchy được trên 8088 mà không cn thay đổi gì c.  
Quá trình nhn lnh và thc thi lnh:  
1/ BIU xut ni dung ca thanh ghi con trlnh IP (Instruction Pointer) ra bus  
địa chỉ để chn byte hay word đọc vào BIU.  
2/ Thanh ghi IP được tăng thêm 1 để chun bnhn lnh kế.  
3/ Khi lnh trong BIU, nó được đưa sang hàng lnh (queue). Đây là mt thanh  
ghi lưu trdng FIFO (First In First Out – Vào trước ra trước), dùng cơ chế xlý xen  
kliên tc các dòng mã lnh (kthut đường ng – pipelining).  
4/ Gisban đầu hàng lnh trng, EU skhông làm gì ccho đến khi bt đầu  
xut hin mt lnh trong hàng, EU sly lnh ra khi hàng và bt đầu thc thi lnh đó.  
5/ Trong khi EU đang thc thi lnh, BIU tiến hành nhn lnh mi. Tutheo  
thi gian thc thi lnh mà BIU có thể đưa vào hàng lnh nhiu lnh mi trước khi EU  
thc hin lnh xong và tiếp tc ly lnh mi.  
BIU được lp trình để có thnhn mt lnh mi bt klúc nào hàng lnh có  
chcho 1 byte (8088) hay 2 byte (8086). Li ích ca phương pháp xlý theo cơ chế  
pipeline là EU có ththc thi các lnh gn như liên tc thay vì phi đợi BIU nhn  
thêm lnh mi.  
Nhn  
Thc thi  
Nhn  
Thc thi  
Nhn  
Thc thi  
(a)  
Nhn (1)  
Chờ  
Nhn (2)  
Nhn (3)  
Chờ  
Đọc  
Nhn (4)  
Nhn (4)  
Nhn  
Chờ  
Thc thi  
Thc thi  
Thc thi  
(b)  
Thc thi  
Nhn  
(1): lnh thc thi không cn dliu trong hàng  
(2): lnh thc thi cn dliu trong hàng  
(3): lnh nhy  
(4): các lnh bbqua do lnh nhy  
Hình 2.7  
(a) µP thông thường dùng chu knhn và thc thi lnh tun tự  
(b) kiến trúc dng pipeline ca 8086/8088 cho phép thc thi các lnh mà không  
btrdo quá trình nhn lnh  
Có 3 điu kin làm cho EU chế độ ch:  
- Điu kin thnht xy ra khi lnh cn truy xut đến mt vtrí bnhkhông  
trong hàng. BIU phi treo quá trình nhn lnh và xut ra địa chca ô nhớ  
này. Sau khi truy xut bnh, EU có thtiếp tc quá trình thc thi lnh từ  
hàng lnh và BIU có thtiếp tc đưa các lnh vào hàng.  
Phm Hùng Kim Khánh  
Trang 32  
Tài liu vi xlý  
Tchc hthng vi xlý  
- Điu kin thhai xy ra khi lnh được thc thi là lnh nhy (jump). Trong  
trường hp này, thay vì dùng địa chlnh kế tiếp, ta phi chuyn đến địa chỉ  
mi (không tun t). Tuy nhiên, BIU vn luôn đặt các lnh theo tun tvà  
do đó slưu các lnh không sdng. Trong khi nhn lnh kế tiếp ti địa chỉ  
do lnh jump chỉ đến, EU phi đợi và tt ccác byte trong hàng phi b.  
- Điu kin thba có thlàm BIU treo quá trình nhn lnh đó là khi thc thi  
các lnh có thi gian thc thi ln. Gisnhư lnh AAM (ASCII Adjust for  
Multiplication) cn 83 chu kxung nhp để hoàn tt trong khi đó vi 4 chu  
kxung nhp cho quá trình nhn lnh thì hàng sbị đầy. Như vy BIU phi  
đợi cho đến khi lnh được thc hin xong và EU nhn mã lnh thàng thì  
mi có thtiếp tc quá trình nhn lnh.  
2.3.  
Các thanh ghi  
µP 8086/8088 có tt c14 thanh ghi ni. Các thanh ghi này có thphân loi  
như sau:  
- Thanh ghi dliu (data register)  
- Thanh ghi chsvà con tr(index & pointer register)  
- Thanh ghi đon (segment register)  
- Thanh ghi trng thái và điu khin (status & control register)  
2.3.1.Các thanh ghi dliu  
Các thanh ghi dliu gm có các thanh ghi 16 bit AX, BX, CX và DX trong đó  
na cao và na thp ca mi thanh ghi có thể định địa chmt cách độc lp. Các na  
thanh ghi này (8 bit) có tên là AH và AL, BH và BL, CH và CL, DH và DL.  
Các thanh ghi này được sdng trong các phép toán shc và logic hay trong  
quá trình chuyn dliu.  
Bng 2.8:  
Thanh ghi  
Sdng trong  
MUL, IMUL (toán hng ngun kích thước word)  
DIV, IDIV (toán hng ngun kích thước word)  
IN (nhp word)  
AX  
OUT (xut word)  
CWD  
Các phép toán xlý chui (string)  
MUL, IMUL (toán hng ngun kích thước byte)  
DIV, IDIV (toán hng ngun kích thước byte)  
IN (nhp byte)  
AL  
OUT (xut byte)  
XLAT  
AAA, AAD, AAM, AAS (các phép toán ASCII)  
CBW (đổi sang word)  
DAA, DAS (sthp phân)  
Các phép toán xlý chui (string)  
Phm Hùng Kim Khánh  
Trang 33  
Tài liu vi xlý  
Tchc hthng vi xlý  
AH  
MUL, IMUL (toán hng ngun kích thước byte)  
DIV, IDIV (toán hng ngun kích thước byte)  
CBW (đổi sang word)  
BX  
CX  
XLAT  
LOOP, LOOPE, LOOPNE  
Các phép toán string vi tiếp du ngREP  
RCR, RCL, ROR, ROL (quay vi số đếm byte)  
SHR, SAR, SAL (dch vi số đếm byte)  
MUL, IMUL (toán hng ngun kích thước word)  
DIV, IDIV (toán hng ngun kích thước word)  
CL  
DX  
AX (ACC – Accumulator): thanh ghi tích luỹ  
BX (Base): thanh ghi cơ sở  
CX (Count): đếm  
DX (Data): thanh ghi dliu  
2.3.2.Các thanh ghi chsvà con trỏ  
Bao gm các thanh ghi 16 bit SP, BP, SI và DI, thường cha các giá troffset  
(độ lch) cho các phn tử định địa chtrong mt phân đon (segment). Chúng có thể  
được sdng trong các phép toán shc và logic. Hai thanh ghi con tr(SP – Stack  
Pointer và BP – Base Pointer) cho phép truy xut ddàng đến các phn tử đang ở  
trong ngăn xếp (stack) hin hành. Các thanh ghi chs(SI – Source Index và DI –  
Destination Index) được dùng để truy xut các phn ttrong các đon dliu và don  
thêm (extra segment). Thông thường, các thanh ghi con trliên hệ đến đon stack hin  
hành và các thanh ghi chsliên hệ đến don dliu hin hành. SI và DI dùng trong  
các phép toán chui.  
2.3.3.Các thanh ghi đon  
Bao gm các thanh ghi 16 bit CS (Code segment), DS (Data segment), SS  
(stack segment) và ES (extra segment), dùng để định địa chvùng nh1 MB bng  
cách chia thành 16 đon 64 KB.  
Tt ccác lnh phi trong đon mã hin hành, được định địa chthông qua  
thanh ghi CS. Offset (độ lch) ca mã được xác định bng thanh ghi IP. Dliu  
chương trình thường được đặt ở đon dliu, định vthông qua thanh ghi DS. Stack  
định vthông qua thanh ghi SS. Thanh ghi đon thêm có thsdng để định địa chỉ  
các toán hng, dliu, bnhvà các phn tkhác ngoài đon dliu và stack hin  
hành.  
2.3.4.Các thanh ghi điu khin và trng thái  
Thanh ghi con trlnh IP (Instruction Pointer) ging như bộ đếm chương trình  
(Program Counter). Thanh ghi điu khin này do BIU qun lý nhm lưu troffset từ  
bt đầu đon mã đến lnh thc thi kế tiếp. Ta không thxlý trc tiếp trên thanh ghi  
IP.  
Thanh ghi c(Flag register) hay ttrng thái 16 bit cha 3 bit điu khin (TF,  
IF và DF) và 6 bit trng thái (OF, SF, ZF, AF, PF và CF) còn các bit còn li mà  
8086/8088 không sdng thì không thtruy xut được.  
Phm Hùng Kim Khánh  
Trang 34  
Tài liu vi xlý  
Tchc hthng vi xlý  
15 14 13 12 11 10  
9
8
7
6
5
4
3
2
1
0
X
X
X
X
OF DF IF TF SF ZF X  
AF X  
PF X  
CF  
- OF (Overflow - tràn): OF = 1 xác định tràn shc, xy ra khi kết quvượt  
ra ngoài phm vi biu din  
- DF (Direction- hướng): xác định hướng chuyn string, DF = 1 khi µP làm  
vic vi string theo thttphi sang trái.  
- IF (Interrupt - ngt): cho phép hay cm các interrupt có mt nạ  
- TF (Trap - by): đặt µP vào chế độ tng bước, dùng cho các chương trình  
gri (debugger).  
- SF (Sign - du): dùng để chcác kết qushc là sdương (SF = 0) hay âm  
(SF = 1).  
- ZF (Zero): = 1 nếu kết quca phép toán trước là 0.  
- AF (Auxiliary – nhph): dùng trong các sthp phân để chnhtna  
byte thp hay mượn tna byte cao.  
- PF (Parity): PF = 1 nếu kết quca phép toán là có tng sbit 1 là chn  
(dùng để kim tra li truyn dliu)  
- CF (Carry): CF = 1 nếu có nhhay mượn tbit cao nht ca kết qu. Cờ  
này cũng dùng cho các lnh quay.  
2.4.  
Phân đon bnhớ  
Ta biết rng dù 8086 là µP 16 bit (có bus dliu 16 bit) nhưng vn dùng bnhớ  
theo các byte. Điu này cho phép µP làm vic vi byte cũng như word, nó rt quan  
trng trong giao tiếp vi các thiết bI/O như máy in, thiết bị đầu cui và modem  
(chúng được thiết kế để chuyn dliu mã hoá ASCII 7 hay 8 bit). Ngoài ra, nhiu mã  
lnh ca 8086/8088 có chiu dài 1 byte nên cn phi truy xut được các byte riêng bit  
để có thxlý các lnh này.  
8086/8088 có bus địa ch20 bit nên có thcho phép truy xut 220 = 1048576  
địa chbnhkhác nhau.  
Byte 1048575  
Word 524287  
Byte 1048574  
Byte 1  
Word 0  
Byte 0  
Hình 2.8 – Vùng nhca 8086/8088 có 1048576 byte hay 524288 word  
Để thc hin đọc 16 bit tbnh, 8086 sthc hin đọc đồng thi byte có địa  
chlvà byte có địa chchn. Do đó, 8086 tchc bnhthành các bank chn và l.  
Theo hình 2.8, ta có ththy rng các word luôn bt đầu ti địa chchn nhưng ta vn  
Phm Hùng Kim Khánh  
Trang 35  
Tài liu vi xlý  
Tchc hthng vi xlý  
có thể đọc word có địa chlbng cách thc hin 2 chu kỳ đọc bnh: mt chu kỳ  
đọc byte thp và mt chu kỳ đọc byte cao. Điu này slàm chm tc độ xlý.  
Đối vi 8088 thì do bus dliu 8 bit nên dù word có địa chchn hay l, nó  
cũng cn phi thc hin 2 chu kỳ đọc hay ghi bnhvà giao tiếp vi bnhnhư mt  
bank.  
Byte 1048574  
Byte 1048572  
Byte 1048575  
Byte 1048573  
Byte 1048575  
Byte 1048574  
Byte 2  
Byte 0  
Byte 3  
Byte 1  
Byte 3  
Byte 2  
Byte 1  
Byte 0  
Đọc ln 2  
Đọc ln 1  
Word dliu 16 bit  
Hình 2.9 – Đọc word địa chchn và địa chlẻ  
Ngoài ra bnhcũng chia thành 16 khi, mi khi có kích thước 64 KB, bt  
đầu ở địa ch00000h và kết thúc FFFFFh. Địa chbt đầu mi khi stăng lên 1 ở  
shex có ý nghĩa nhiu nht khi thay đổi tkhi này sang khi kia. Ví dnhư khi  
00000h 10000h 20000h …  
FFFFFh  
FFFFBh  
Dtrữ  
FFFFFh  
F0000h  
Dành riêng  
FFFF0h  
0007Fh  
Dtrữ  
20000h  
10000h  
00013h  
Dành riêng  
00000h  
00000h  
Hình 2.10 – Bng bnhcho 8086/8088  
Phm Hùng Kim Khánh  
Trang 36  
Tài liu vi xlý  
Tchc hthng vi xlý  
™ Các thanh ghi phân đon:  
8086/8088 định nghĩa 4 khi bnh64KB: đon mã (code segment) gicác  
mã lnh chương trình, đon ngăn xếp (stack segment) lưu các địa chstrvtcác  
chương trình con (subroutine) hay trình phc vngt (interrupt subroutine), đon dữ  
liu (data segment) lưu trdliu cho chương trình và đon thêm (extra segment)  
thường dùng cho các dliu dùng chung.  
Các thanh ghi đon (CS, DS, SS và ES) dùng để chvtrí nn ca mi đon.  
Các thanh ghi này có 16 bit trong khi địa chbnhlà 20 bit nên để xác dnh vtrí bộ  
nh, ta sthêm 4 bit 0 vào các bit thp ca thanh ghi đon. Gisnhư thanh ghi CS  
cha giá tr1111h thì nó schti địa chnn là 11110h. Chú ý rng địa chbt đầu  
mt đon không thtuý mà phi bt đầu ti mt địa chchia hết cho 16. Nghĩa là 4  
bit thp phi là 0. Ta cũng chú ý rng 4 đon có thkhông tách ri nhau mà chng lp  
lên nhau và ta cũng có thcho 4 giá trca các thanh ghi đon bng nhau nghĩa là 4  
đon này trùng nhau.  
VD: Thanh ghi DS có giá trlà 1000h thì địa chnn là 10000h. Địa chkết  
thúc tìm được bng cách cng địa chnn vi giá trFFFFh (64K) địa chkết thúc  
là 10000h + FFFFh = 1FFFFh. Như vy đon dliu có địa cht10000h = 1FFFFh.  
Các vtrí bnhkhông được định nghĩa trong các đon hin hành không thể  
truy xut được. Mun truy xut đến các vtrí đó, ta phi định nghĩa li mt trong các  
thanh ghi đon sau cho đon phi cha vtrí đó. Như vy, ti mt thi đim bt kta  
chcó thtruy xut ti đa 4 × 64 KB = 256 KB bnh. Ni dung ca các thanh ghi  
đon chcó thxác định thông qua phn mm.  
VD: Giscác thanh ghi đon có các giá trCS = 2800h, DS = E000h, SS =  
2900h và ES = 1000h. Ta có vtrí các đon trong bng bnhnhư sau:  
EFFFFh  
Đon dliu  
E0000h  
38FFFh  
37FFFh  
29000h  
28000h  
Đon stack 29000h ÷ 38FFFh  
Đon mã 28000h ÷ 37FFFh  
1FFFFh  
10000h  
Đon thêm  
Hình 2.11 – Vtrí các phân đon theo giá trcác thanh ghi đon  
Phm Hùng Kim Khánh  
Trang 37  
Tài liu vi xlý  
Tchc hthng vi xlý  
™ Địa chlogic và địa chvt lý:  
Các địa chtrong mt đon thay đổi t0000h ÷ FFFFh, tương ng vi chiu dài  
đon là 64 KB. Mt địa chtrong mt đon được gi là địa chlogic hay offset. Ví dụ  
như địa chlogic 0010h ca đon mã trong hình 2.11 sđịa chtht slà 28000h +  
0010h = 28010h. Địa chnày gi là địa chvt lý.  
Như vy, địa chvt lý chính là địa chtht sxut hin bus địa ch, nó có  
chiu dài 20 bit còn địa chlogic là độ lch (offset) tvtrí 0 ca mt đon cho trước.  
VD: Gisxét các đon như hình 2.11. Địa chvt lý tương ng vi địa chỉ  
logic 1000h trong đon stack là:  
29000h + 1000h = 2A000h  
Địa chvt lý tương ng vi địa chlogic 2000h trong đon mã là:  
28000h + 2000h = 2A000h  
Ta thy rng có thể địa chvt lý trùng nhau khi địa chlogic khác nhau nghĩa  
là mt địa chvt lý có thcó nhiu địa chlogic khác nhau.  
Để chỉ địa chlogic 1000h trong đon mã, ta dùng ký hiu CS:1000h. Tương tự  
như vy cho các đon khác, nghĩa là địa chlogic 1111h trong đon dliu slà  
DS:1111h.  
Mi lnh tham chiếu bnhscó mt thanh ghi đon mc nhiên. Thanh ghi IP  
cung cp địa choffset khi truy xut đến đon mã và BP cho đon stack. Ví dnhư IP  
= 1000h và CS = 2000h thì BIU struy xut đến địa ch20000h + 1000h = 21000h và  
nhn byte ti vtrí này.  
Bng 2.9:  
Tham chiếu bnhớ Đon mc nhiên Đon khác  
Offset  
Nhn lnh  
CS  
SS  
DS  
DS  
ES  
DS  
SS  
Không  
IP  
Tác vstack  
Không  
SP  
Dliu tng quát  
Ngun ca string  
Đích ca string  
BX dùng làm con trỏ  
BP dùng làm con trỏ  
CS,ES,SS  
CS,ES,SS  
Không  
Địa chhiu dng  
SI  
DI  
CS,ES,SS  
CS,ES,SS  
Địa chhiu dng  
Địa chhiu dng  
VD: Ta sdng lnh MOV [BP],AL vi BP = 2C00h. Ở đây BP dùng làm con  
trnên dùng đon stack. Giscác phân đon như hình 2.11 thì địa chvt lý slà  
29000h + 2C00h = 2BC00h  
™ Định nghĩa các vtrí bnh:  
Thông thường ít khi nào ta cn biết đến địa chvt lý ca mt vtrí bnhmà  
ta chquan tâm đến địa chlogic ca nó mà thôi. Lý do là vì địa chvt lý còn phi  
phthuc vào ni dung ca các thanh ghi đon ngay ckhi địa chlogic gikhông đổi  
như đã xét trên.  
Phm Hùng Kim Khánh  
Trang 38  
Tài liu vi xlý  
Tchc hthng vi xlý  
Khi viết các chương trình hp ng, thường gán cho các địa chlogic bng các  
nhãn (label) hay các tên (name). Ví d:  
DATA  
SAMPLEB DB  
DATA ENDS  
SEGMENT  
?
sgán nhãn SAMPLE cho byte ở địa chlogic 0 trong đon dliu. Các phát  
biu này không phi là các lnh µP mà chlà các lnh gi(pseudo instruction) dùng  
cho các chương trình dch.  
Toán tDATA SEGMENT báo cho chương trình dch biết các lnh theo sau sẽ  
nm trong đon dliu. Toán tDB (Define Byte) gán cho nhãn SAMPLEB 1 byte  
trong đon dliu. Ký hiu ? xác định rng không cn định nghĩa ni dung ca byte  
đó. Do SAMPLEB là dòng đầu tiên nên nó sđịa chlogic là 0. Phát biu DATA  
ENDS kết thúc đon dliu (ở đây chdnh nghĩa 1 byte). Trong trường hp mun  
định nghĩa 1 word, ta dùng toán tDW (Define Word).  
VD:  
SAMPLEW DW 1000h  
Phát biu này định nghĩa nhãn SAMPLEW ng vi vtrí word và ni dung ca  
vtrí này là 1000h.  
Ngoài ra, ta có thdùng các toán tDD định nghĩa tkép (double word), DQ  
định nghĩa tbbn (8 byte) và DT định nghĩa 10 byte.  
3. Cách mã hoá lnh  
Lnh ca bvi xlý sbiu din bng các ký tdưới dng gi nhớ  
(mnemonic) để có thddàng sdng. Đối vi vi xlý thì các lnh được biu din  
bng các mã lnh (opcode) nên sau khi nhn lnh vi xlý phi thc hin gii mã lnh  
ri mi thc thi nó. Mt lnh vi xlý có thdài 1 byte hay nhiu byte. Nếu ta dùng 1  
byte để mã hoá thì smã hoá được 256 lnh khác nhau. Tuy nhiên do mt lnh không  
phi chcó mt cách thc hin nên ta không ththc hin đơn gin như trên.  
Để tìm hiu cách mã hoá lnh, ta xét lnh MOV des,src dùng để chuyn dliu  
gia hai thanh ghi hay mt ô nhvà mt thanh ghi.  
Lnh MOV mã hoá như sau:  
Byte 1  
Byte 2  
reg  
Byte 3  
Byte 4  
1 0 0 0 1 0  
Opcode  
D W Mod  
M/R  
Để mã hóa lnh MOV, ta cn dùng ít nht là 2 byte trong đó 6 bit dùng cho mã  
Bit D xác định hướng truyn ca dliu, D = 0 xác định dliu sẽ đi tthanh  
lnh.  
ghi cho bi 3 bit Reg, D = 1 xác định dliu sẽ đi đến thanh ghi cho bi 3 bit Reg.  
Bit W xác định struyn 1 byte (W = 0) hay 1 word (W = 1).  
3 bit Reg dùng để chn thanh ghi sdng:  
Phm Hùng Kim Khánh  
Trang 39  
Tài liu vi xlý  
Tchc hthng vi xlý  
Bng 2.10:  
Thanh ghi  
Mã  
W = 1  
W = 0  
AL  
000  
001  
010  
011  
100  
101  
110  
111  
AX  
CX  
DX  
BX  
SP  
CL  
DL  
BL  
AH  
CH  
DH  
BH  
DI  
BP  
SI  
2 bit mod và 3 bit R/M (Register / Memory) dùng để xác định chế độ địa chỉ  
cho các toán hng ca lnh.  
Bng 2.11:  
MOD  
11  
00  
01  
10  
R/M  
000  
W = 1 W = 0  
[BX]+[SI] [BX]+[SI]+addr8  
[BX]+[SI]+addr16  
AX  
AL  
CL  
DL  
BL  
AH  
CH  
DH  
BH  
001  
010  
011  
100  
101  
110  
111  
[BX]+[DI] [BX]+[DI]+addr8 [BX]+[DI]+addr16 CX  
[BP]+[SI]  
[BP]+[DI]  
[SI]  
[BP]+[SI] +addr8  
[BP]+[SI] +addr16  
DX  
[BP]+[DI] +addr8 [BP]+[DI] +addr16 BX  
[SI] +addr8  
[DI] +addr8  
[BP] +addr8  
[BX] +addr8  
[SI] +addr16  
[DI] +addr16  
[BP] +addr16  
[BX] +addr16  
SP  
BP  
SI  
[DI]  
addr16  
[BX]  
DI  
Tng quát, 8086/8088 có khong 300 tác vcó thcó trong tp lnh ca nó.  
Mi lnh kéo dài t1 đến 6 byte. Tví dtrên, ta thy mã lnh có các vùng:  
- Vùng mã lnh (opcode): cha mã lnh ca lnh sthc thi  
- Vùng thanh ghi (reg): cha các thanh ghi sthc hin (bng 2.10)  
- Vùng chế độ (mod): (bng 2.11)  
00: toán hng bnhtrc tiếp nếu R/M = 110, ngược li là toán hng gián tiếp  
01: toán hng gián tiếp, độ di 8 bit  
10: toán hng gián tiếp, độ di 16 bit  
11: sdng 2 thanh ghi, vùng R/M slà vùng Reg  
- Vùng thanh ghi / bnhR/M (Reg/Mem): (bng 2.11)  
Phm Hùng Kim Khánh  
Trang 40  
Tài liu vi xlý  
Tchc hthng vi xlý  
4. Các cách định địa chỉ  
Bng 2.12:  
Cách định  
đối  
tượng  
dụ  
địa chỉ  
Tgi nhớ  
MOV AX,1000h  
MOV DX,CX  
Đon  
Hot động  
Mô tả  
truy xut  
Tc thi  
B80010  
Mã  
(1)  
AH 10h  
AL 00h  
Thanh ghi 8BD1  
Trc tiếp 8A260010 MOV AH,[1000h]  
(2)  
(3)  
Trong µP DX CX  
Döõ  
AH [1000h]  
lieäu  
Gián tiếp 8B04  
MOV AX,[SI]  
Dliu  
Dliu  
Stack  
(4)  
AL [SI]; AH [SI+1]  
IP[DI+1:DI]  
[BP][BP]+1  
thanh ghi FF25  
JMP [DI]  
FE4600  
INC BYTE PTR [BP]  
FF0F  
DEC WORD PTR [BX]  
Dliu  
[BX+1:BX][BX+1:BX]-1  
AL [SI+6]; AH [SI+7]  
IP[DI+7:DI+6]  
Có chs8B4406  
MOV AX,[SI+6]  
JMP [DI+6]  
Dliu  
(5)  
(6)  
(7)  
FF6506  
Dliu  
Có nn  
8B4602  
MOV AX,[BP+2]  
Stack  
AL[BP+2]; AH [BP+3]  
IP[BX+3:BX+6]  
FF6702  
JMP [BP+2]  
Dliu  
AL[BX+SI];AH[BX+SI+1]  
IP[BX+DI+1:BX+DI]  
[BP+SI][BP+SI]+1  
[BP+DI+1:BP+DI]←  
[BP+DI+1:BP+DI]-1  
Có nn và 8B00  
MOV AX,[BX+SI]  
JMP [BX+DI]  
Dliu  
có chsố  
FF21  
FE02  
FF0B  
Dliu  
INC BYTE PTR [BP+SI] Stack  
DEC WORD PTR [BP+DI]  
Stack  
Có nn và 8B4005  
có chsFF6105  
vi độ di FE4205  
FF4B05  
MOV AX,[BX+SI+5]  
Dliu  
(8)  
(9)  
AL[BX+SI+5]  
AH[BX+SI+1]  
JMP [BX+DI+5]  
Dliu  
Stack  
IP[BX+DI+6:BX+DI+5]  
[BP+SI+5][BP+SI+5]+1  
[BP+DI+6:BP+DI+5]←  
[BP+DI+6:BP+DI+5]-1  
[ES:DI] [DS:DI]  
Nếu DF = 0 thì  
INC BYTE PTR [BP+SI+5]  
DEC WORD PTR [BP+DI+5]  
Stack  
String  
A4  
MOVSB  
Thêm,  
dliu  
SI SI + 1; DI DI + 1  
Nếu DF = 1 thì  
SI SI - 1; DI DI - 1  
- BYTE PTR và WORD PTR tránh lm gia truy xut byte và word.  
- Độ di được cng vào thanh ghi con trhay nn là snhphân dng bù 2.  
- (1): ngun dliu trong lnh  
- (2): đích và ngun là các thanh ghi ca µP  
- (3): địa chbnhcung cp trong lnh  
- (4): địa chbnhcung cp trong thanh ghi con trhay chsố  
- (5): địa chbnhlà tng ca thanh ghi chscng vi độ di trong lnh  
- (6): địa chbnhlà tng ca thanh ghi BX hay BP cng vi độ di trong  
lnh  
- (7): địa chbnhlà tng ca thanh ghi chsvà thanh ghi nn  
Phm Hùng Kim Khánh  
Trang 41  
Tải về để xem bản đầy đủ
pdf 22 trang Thùy Anh 05/05/2022 3120
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Vi xử lý - Chương 2: Tổ chức hệ thống vi xử lý", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_vi_xu_ly_chuong_2_to_chuc_he_thong_vi_xu_ly.pdf