Giáo trình Kỹ thuật Vi xử lý - Pdf 12

OPEN.PTIT.EDU.VN
LI NÓI U Các b vi x lý ra đi đem li bc ngot trong khoa hc k thut, các thit b tr nên
thông minh hn nh s điu khin theo chng trình. Vi x lý đang dn có mt trong hu ht các
máy móc thit b dân dng cng nh công nghip. Vì vy vic hc tp nghiên cu ng dng vi x
lý trong trng hc là mt nhu cu ht sc cn thit.
 phc v cho nhu cu ging dy môn hc K thut vi x lý cho các lp đi hc t xa
chuyên nghành đin t vin thông, bài ging vi x lý đc biên son vi mc đích cung cp cho
sinh viên các kin thc c s cn thit s dng cho vic nghiên cu ng dng các h thng vi x
lý trong k thut và đi sng. Bài ging bao gm 8 chng vi các ni dung chính nh sau:
Chng 1 cung cp các khái nim c bn v vi x lý và h thng ca nó.
Chng 2 mô t cu trúc, các khi chc nng trong các b vi x lý h Intel 80x86, mà ch
yu là CPU 80286. Ngoài ra trong chng này còn gii thiu v các tính nng ca các b vi x lý
th h sau 80286 nh 80386, 80486, Pentium.
Chng 3 mô t v cu trúc lnh, các ch đ đnh v đa ch và tp lnh chi tit ca vi x
lý 80286. Cho phép sinh viên rút ra đc các kin thc chung nht v các lnh vi x lý và cách
tip cn trong vic lp trình bng các lnh hp ng. Ngoài ra chng này còn đ cp ti các vn
đ v lp trình hp ng trên máy vi tính bao gm: cu trúc câu lnh, cách khai báo d liu, khung
chng trình hp ng, các cu trúc lp trình c bn, và các ví d c bn rèn luyn k nng lp
trình bng các lnh gi nh ca vi x lý.
Chng 4 cung cp các kin thc v vic thit k các h thng vi x lý chuyên dng bao
gm c vic thit k h thng phn cng và phn mm vi x lý.
Chng 5 mô t v cu trúc hot đng ca các vi mch h tr vào ra song song 8255 và
vào ra ni tip 8251.
Chng 6 mô t v vi điu khin 8051 bao gm v cu trúc các khi mch phn cng, v
tp lnh và lp trình cho vi điu khin 8051.
Chng 7 mô t vic thit k h thng đo đ rng xung và truyn d liu ni tip bng
8051. Vi các ví d này sinh viên có th tip cn v vic thit k các ng dng nh dùng vi điu
khin.

1.3.2 Mch ba trng thái và mch cài
1.3.3 Các cng vào / ra đn gin.
Chng 2 : Nguyên tc làm vic ca b vi x lý h 80X86 Intel (6 tit)

2.1 Cu trúc ca b vi x lý 80286 Intel
2.1.1 S đ khi ca b vi x lý 80286 Intel
2.1.2 Khi to đa ch (AU)
2.1.3 Khi ghép kênh (BU)
2.1.4 Khi lnh (IU)
2.1.5 Khi thc hin lnh (EU)
2.2 Các thanh ghi ca b vi x lý 80286 Intel .
2.2.1 Chc nng và nhim v ca các thanh ghi đa nng .
2.2.2 Các thanh ghi qun lý đon
2.2.3 Thanh ghi c trng thái
2.2.4 Các thanh ghi đc bit
2.3 Nguyên tc làm vic ca b vi x lý 80286 Intel .
2.3.1 nh ngha chu k lnh và chu k máy
2.3.2 Qun lý b nh thc và b nh o
2.3.3 Trng thái b vi x lý khi khi đng
2.3.4 Ch đ ngt và các đu ngt ca b vi x lý
2.4 Các b vi x lý cp cao ca Intel Chng 3 : Lp trình Assembly cho h vi x lý Intel (6 tit)

3.1 Cu trúc ca hp ng.
3.1.1 B ký t t khóa ca hp ng
3.1.2 Các lnh ch dn trong hp ng
3.1.3 Khung ca file chng trình ngun Assembly
3.2 Tp lnh ca b vi x lý 80X86 Intel

18
20
21
21
25
35
36
40 43

43
44
44
48
50
54
OPEN.PTIT.EDU.VN
3.2.2 Nhóm lnh x lý d liu.
3.2.3 Nhóm lnh chuyn điu khin
3.3 Lp trình hp ng cho h vi x lý Intel
3.3.1 Lp trình chuyn mng d liu
3.3.2 Lp trình chuyn đi mã (nh phân , hexa , thp phân , ascii)
3.3.3 Lp trình điu khin thit b ngoi vi

Chng 4 : Thit k h vi x lý chuyên dng (6 tit)

4.1 Trình t thit k h vi x lý chuyên dng
4.2 T chc phn cng cho h vi x lý chuyên dng .

6.2.2. Truy xut b nh d liu bên ngoài.
6.2.3. B nh ngoài s dng chung cho chng trình và d liu
6.3 Hot đng timer ca 8051
6.3.1. Gii thiu.
6.3.2. Các ch đ timer và c báo tràn.
6.3.3. Ngun xung nhp.
6.3.4. Cho chy, dng và điu khin các timer.
6.3.5. Khi đng và truy xut các thanh ghi timer.
56
61
62
63
64
67

72

72
74
74
74
78
82
82
87
87

92

92

6.4.2 Thanh ghi điu khin cng ni tip.
6.4.3 Các ch đ hot đng
6.4.4 Khi đng và truy xut các thanh ghi cng ni tip
6.4.5 Truyn thông tin trong h thng đa x lý.
6.4.6 Tc đ cng ni tip.
6.5 Ngt ca vi điu khin 8051.
6.5.1. Gii thiu.
6.5.2. T chc ngt ca 8051.
6.5.3. Các vector x lý ngt.
6.5.4. Thit k chng trình dùng các ngt.
6.5.5. Các ngt ca 8051
6.6 Tp lnh và hng dn lp trình trên 8051.
6.6.1 Các ch đ đa ch.
6.6.2 Tp lnh ca 8051.
6.6.3 Chng trình hp ng 8051.
6.7 B nh ROM ca vi điu khin 8051.

Chong 7 : Thit k h thng chuyên dng trên on – chip 80C51 (4 tit)

7.1 Thit k h đo thông s tín hiu xung
7.1.1 Nguyên tc đo đ rng xung
7.1.2 S đ phn cng ca h đo
7.1.3 Xây dng chng trình điu khin
7.2 Thit k h truyn tín hiu ni tip
7.2.1 S đ kt ni phn cng h thng vi điu khin truyn d liu ni tip.
7.2.2 Xây dng chng trình điu khin.

Chng 8 : Vi điu khin 32 bit MC68332 (9 tit)

8.1 Cu trúc và chc nng thành phn ca on – chip 32 bit MC68332

153
153
157
159
168

173

173
173
174
175
181
181
181

189

189
191
195
195
195
196
197
198
199
200
200
201

213
214
214
214
215
225
227
229
229
232

237

246

251 OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
CHNG 1: KIN TRÚC CA H THNG VI X LÝ

Gii thiu:
Trc ht trong chng này sinh viên cn nm đc các khái nim v b vi x lý nh :
mc đích s ra đi ca b vi x lý, các khi chc nng c bn ca b vi x lý, nguyên tc x lý
các công vic và bài toán ca b vi x lý, lnh ca b vi x lý, chng trình mà các b vi x lý
thc hin, chc nng ca phn cng và phn mm trong h thng vi x lý, các khi chc nng
phn cng trong h thng vi x lý và chc nng ca chúng, các tín hiu kt ni các khi chc
nng phn cng, phn mm phát trin ca ngôn ng phn mm h thng vi x lý, lnh mã máy,
lnh gi nh, nguyên tc hình thành ngôn ng cp cao, các chng trình hp ng, các chng

s phi s dng hai IC cng khác nhau. Nu có nhiu hn mt phép tính so vi mch đã thc hin
s cn phi làm mt mch khác.
Vi s ra đi ca công ngh LSI, cho phép tích hp rt nhiu cng logic trong mt vi mch
nh, ngi ta ngh đn chuyn thit k mt IC s có th thc hin mi chc nng s mà không cn
phi thay đi mch đin. Nguyên tc thc hin ca loi IC s này có th biu din trong s đ
khi hình 1.1.
1
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
S đ bao gm khi các hàm s c bn và các b đm đc kt ni vi nhau thông qua
các mch kim soát (không kt ni c đnh, mà ch kt ni khi có các tín hiu cho phép). D liu
có th di chuyn t b đm này ti b đm khác và t các b đm ti x lý ti các hàm c bn khi
có các tín hiu cho phép thích hp. Mt chc nng s phc tp (mt bài toán hay mt công vic
nào đó), thay vì phi thc hin bng mt mch s ni cng, có th thc hin tng bc bng cách
tun t thc hin các hàm s c bn trong IC này. Vi cu hình này, s đ có th thc hin mi
chc nng s phc tp mà không cn thay đi mch kt ni các IC s. ây là cu hình c bn nht
ca mt b vi x lý. H thng mch
đin t s
Các thit b xut
nhp và chp hành
điu khin
Các chng trình
phn mm
Hình 1.2: S đ khi mô t hot đng ca h thng vi x lý.

 h thng mch phn cng đã đc kt ni đúng có th thc hin mt bài toán, mt
công vic, cn cung cp cho vi x lý mt chng trình thích hp. Công vic to ra các chng
2
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
trình cung cp cho các h thng vi x lý hot đng đc gi chung là công ngh phn mm
(Software). Có th mô t c ch ca mt h thng vi x lý trên hình 1.2.

1.1.3. Tng quát v phn cng h thng vi x lý
Phn cng mt h thng vi x lý bao gm 3 khi mch chính trên hình 1.3 bao gm:
- B vi x lý, hay còn đc gi là đn v x lý trung tâm CPU (Central Processing Unit) có
nhim v thc hin tt c các lnh mà chng trình yêu cu. Nó đóng vai trò là ch trong h
thng, quyt đnh s hot đng ca các linh kin khác trong mch.
- Khi b nh lu tr các chng trình cung cp cho vi x lý thc hin, ngoài ra nó còn s
dng lu tr các bin trung gian cng nh cui cùng trong các quá trình tính toán.
- Các b vào ra kim soát vic truyn d liu gia CPU và các thit b ngoi vi nh bàn phím,
màn hình,…. Các thit b ngoi vi có th là các thit b cho phép h thng vi x lý và ngi
s dng có th liên lc vi nhau, hoc các thit b thc hin mt công vic nào đó theo s

nh
I/O
Thit
b
ngoi
vi
Chng
trình
Hình 1.3: S đ khi h thng vi x lý
3
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý

Chng trình hp
ng
(các lnh gi nh)
Chng trình mã
máy
(tp hp các bit 0
và 1)

Hình 1.4: S phát trin ca ngôn ng phn mm. 1.2. T CHC B NH CA H THNG VI X LÝ
Trong h thng mch đin t phn cng ca h thng vi x lý mô t trên hình 1.3, b nh
là các IC nh đc gi là b nh bán dn hay b nh chính ca h thng vi x lý. Ngoài b nh
bán dn, h thng vi x lý còn có các thit b khác s dng đ lu tr d liu và chng trình, đó
là các thit b nh ngoài nh:  đa cng,  đa mm,  đa quang hc …. Chúng đóng vai trò là
các thit b ngoi vi ca h thng. Phn này ch mô t v cu to và nguyên tc hot đng ca các
loi b nh bán dn.
B nh bán dn đc chia thành hai loi chính: b nh ch đc ROM (Read Only
Memory) và b nh có th đc ghi đc hay còn gi là b nh truy cp ngu nhiên RAM
(Random Access Memory). Tuy nhiên các tên gi trên ch mang tính cht tng đi, b nh ROM
cn phi đc ghi d liu trc khi đc, mi loi ROM khác nhau s có cách ghi d liu khác
nhau. B nh truy cp ngu nhiên, khác vi b nh truy cp tun t là có th truy cp bt k d
liu nào mt cách tc thi, mà không phi truy cp tun t. Các b nh ROM và RAM đu có th
truy cp tun t.
4
OPEN.PTIT.EDU.VN

T3 P3 T2 P2 T1 P1 T0 P0
D3 D2 D1 D0
A0
A1
A2
Gii
mã đa
ch
Multiplex
Hình 1.5: Nguyên tc cu to ca b nh ROM.

Mi loi b nh ROM s có cách kt ni các đim ca ma trn nh khác nhau nh trên
hình 1.6. Mask ROM có các đim ca ma trn nh đc kt ni ngay khi sn xut. B nh PROM
kt ni các đim ma trn nh bng các diode và các cu chì mnh, khi lp trình cn cung cp dòng
đin đ ln đ làm đt các cu chì ti các đim mun lu tr các bit 1. i vi các b nh
EPROM và EEPROM các đim ma trn nh đc kt ni bng các transistor MOS, khi lp trình
cn cung cp đin trng ca đin áp cao đ các ht him đ nng lng chuyn qua bán dn cc
cng, kênh dn mt kh nng dn đin, đim ma trn gi bit 1. Nu mun xoá các bit 1 đã ghi có
5
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý

OE (Output Enale): Tín hiu cho phép xut cho phép b đm d liu ngõ ra đ cung cp d liu t
bên trong ra ngoài các đng D7 – D0.
VPP : Ngõ vào đin áp cao cung cp ngun lp trình cho EPROM.
PGM: Ngõ vào cung cp xung lp trình cho EPROM.

U1
2764
10
9
8
7
6
5
4
3
25
24
21
23
2
11
12
13
15
16
17
18
19
22
27

D2
D3
D4
D5
D6
D7
OE
PGM
VPP
CE
Hình 1.8: Các tín hiu EPROM 2764.
6
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
1.2.2. Cu trúc và nguyên tc làm vic ca b nh RAM
Hình 1.9: Cu to mt bit nh SRAM.

Hình 1.9 mô t cu to ca mt bit nh SRAM, trong s đ khi cp ngun mt trong hai
transistor M1 hoc M2 dn, gi s M2 dn Q = 0 nên M1 không dn, lúc này các đng BL và
BL\ s đc cung cp ti mch khuch đi đc đ cung cp d liu mc 0 khi đc chn.  ghi
mt d liu, chn bit nh bng cách cung cp mc 1 ti WL làm các transistor M3 và M4 dn,
cung cp mc 1 ti đng BL (BL\ = 0) làm M2 tt, M1 dn, bit nh s lu tr d liu 1.
Ngoài tín hiu chn mch CE cho phép xut d liu OE nh b nh EPROM, các b nh
SRAM còn có thêm tín hiu cho phép ghi WE, ch ghi tín hiu này tích cc d liu mi đc lu
tr vào b nh.
Cu to mt bit nh DRAM mt transistor mô t trên hình 1.10.  ghi d liu ti bit nh
này cn cung cp mc 1 ti WWL và cung cp d liu ghi ti BL1, transistor BL1 s dn, đin áp

C
S
BL
2
RWL

V

D
D
V
D
D
2
V
T
D
V
V
D
D
2
V

T
B
L 2
B
L 1
X

bits
M

bits
S
0
S
1
S
2
S
N
-2
A
0
A
1
A
K
-1
K
=
log
2
N
S
N
-1
Word 0
Word 1

2
L 2 K
Word line
A
K
A
K 11
A
L 21
A
0
M.2
K
A
K 21
Sense amplifiers / Drivers
Column decoder
Input-Output
(M bits)
Storage cel
l

Selects
word

Hình 1.12: T chc các khi chc nng trong b nh.
Khi CPU mun truy cp (đc ghi) d liu t b nh, trc ht nó phi cung cp đa ch đ
xác đnh ti v trí cn truy cp, sau đó cn cung cp tín hiu chn mch (CE) cho phép b nh
8
OPEN.PTIT.EDU.VN

g trong h thng vi x lý thng t chc theo đn v truy xu
đc kt ni sao cho truyn d liu vi CPU theo bi s ca byte. Trong thc t, b nh
bán dn đc sn xut theo dng các linh kin có dung lng hn ch (t vài KB cho đn c vài
chc MB). Trong h thng vi x lý thng có ít nht hai loi b nh (ROM và RAM), mt khác
trong trng hp dung lng các IC b nh không đ đáp ng dung lng b nh ca h thng
khi thit k, nhà thit k phi ghép nhiu IC nh li. Các IC nh s s dng chung các BUS d
liu và đa ch, vì vy ti mt thi đim truy xut h thng phi đc kt ni sao cho ch có mt
IC nh đc chn, công vic này đc gi là gii mã đa ch b nh.
Vic gii mã đa ch có th thc hin theo nhiu cách khác nha
4 đ kt ni 4 IC nh 256 KB thành dung lng nh 1 MB.
Theo s đ kt ni, mi IC nh trong mch s có mt vùng
g IC nh trong hình 1.13 nh sau:
256KB đu tiên
256KB th hai : 400000H 7FFFFH
256KB th ba : 800000H BFFFFH và

7
D 0
:
R
D
WR
C
S
A
19
256 KB
#2
A
1
7
A
0
:
D 7
D
0
:
R
D
WR
C
S
256 KB
#1
A

S
I
1
O
3
I 0
O
2
O 1
O
0
9
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
Công vi  IC nh trong mt h thng vi xc xác đnh vùng đa ch cho t ng  lý đc gi là
lp bn
1.3. ÀO RA TRONG H THNG VI X LÝ
.3.1. Cu trúc và nguyên tc làm vic ca cng vào ra
hit b ngoi vi khác nhau, các thit
trên tt c các đng d liu vi
ng cng có các
it b
ó các tín hiu bt tay vi
it b
.3.2.
Mch ba trng thái và mch cài
bn nht thng đc s dng trong tt c các loi
Vi các cng ba trng thái, d liu s đc truyn qua nó khi tín hiu cho phép OC  trng
cng cài s gi nguyên trng thái logic  ngõ ra ca nó khi tín hiu
đ b nh.

D
Q

G
Cng đm 3 trng thái
Cng cài
Hình 1.14: Các cng vào ra s c bn
OC thái tích cc, vì vy tín hiu cho phép này thng đc cp t b gii mã đa ch, nh trên hình
1.15 cng đm 3 trng thái s m khi đa ch cung co t CPU là FFFFH = 1111 1111 1111
1111B. Khi tín hiu cho phép không tích cc, ngõ ra ca cng đm s  trng thái tr kháng cao,
ngõ vào s không nh hng ti ngõ ra, nh vy BUS d liu s đc ngn cách vi thit b ngoi
vi mà nó điu khin, lúc này CPU có th s BUS d liu đ liên lc vi mt thit b khác, tng
ng vi mt đa ch khác.
Khác vi cng đm,
10
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý
cho phép ht tích cc (nó không chuyn qua trng thái tr kháng cao). Các cng cài s thích hp
vi các thit b ra cn gi nguyên logic điu khin sau tác đng ca lnh, ví d bóng đèn LED ni
vi cng đm s tt khi CPU thc hin xong lnh truyn d liu, vì CPU ngng cp đa ch làm
ngõ ra cng đm chuyn qua trng thái tr kháng cao. Nu s dng làm cng vào, ngõ ra cng cài
cn đc ni tip vi mt cng đm trc khi ni ti BUS d liu.

1.3.3. Các cng vào ra đn gin
T m tt ni dung hc tp:
Trong chng này cn nh cá
• Vi x lý là mt vi mch s có th th
bng cách thc hin tun t các chc nng s c bn.
Mt lnh ca b vi x lý là chui các bit 0, 1 cung c
nng s c bn ca nó.
Mt chng trình vi x lý là m
công vic cn thc hin.
 có h thng vi x lý h
mm hot đng đúng.
Phn cng h thng v x
đ điu khin hot đng ca toàn b h thng. B nh là ni lu tr các chng trình, là ni
khai báo các hng và bin trong chng trình. Vào ra đ giao tip vi các thit b bên ngoài.
Các khi trong h thng vi x lý đc kt ni vi nhau bng mt lot các đng dây dn đi
mi đng này đc gi là mt tín hiu ca h thng, các tín hiu đc chia thành 03 nhóm
D0
D7
Q0
74LS244
Q7
OC
.
.
.
.

• b đm cài đc s dng làm các cng vào ra đ cho phép thit b truyn d liu vi CPU
• ch sao cho ng vi mt đa ch mà

ÀI TP:
ài 1:
Cho bit đa ch bt đu ca mt vùng nh Ram là 00000H và dung lng ca vùng nh
Bài 2 t, v bn đ b nh
Bài 3: h sau:
BUS đa ch và d liu ca b nh  trng thái tr kháng cao. Khi mun đc b nh cn tác
đng tín hiu chn b nh, cung cp đa ch xác đnh ô nh s đc trong b nh, cung cp tín
hiu yêu cu đc và b nh s cung cp d liu ra BUS d liu. Khi mun ghi b nh cng
cn cung cp tín hiu chn b nh, cung cp đa ch ô nh s ghi, cung cp d liu cn ghi và
cung cp tín hiu yêu cu ghi.
Các b nh RAM có th đc g
ROM ch có th đc bng các logic điu khin thông thng, mun ghi d liu vào nó cn có
các ch đ điu khin đc bit.
Gii mã đa ch b nh là thc h
ch có mt vi mch nh duy nht đc cung cp tín hiu chn mch, các vi mch nh còn li
s không đc chn và có các BUS  trng thái tr kháng cao và chúng s không kt ni v
đin vi h thng.
Các b đm và cài s
đc chn các b đm s có ngõ ra tr kháng cao, còn các b cài s gi li trng thái ra trc
đó.
Các
ch khi CPU cp đúng đa ch đ chn nó, trong khi các cng không đúng đa ch s không
đc chn và chúng không kt ni v mt đin vi CPU.
Tng t nh gii mã b nh, gii mã vào ra s là mt m
CPU cung cp ch có mt cng vào ra duy nht đc chn.
B



SRAM (512KB)
EPROM
(
256KB
)
EPROM
(
256KB
)

SRAM (512KB)
EPROM
(
256KB
)
SRAM
(
128KB
)

SRAM
(
128KB
)

SRAM (256KB)

EPROM (512KB)
SRAM
12
OPEN.PTIT.EDU.VN
Chng 1: Kin trúc ca h thng vi x lý Cho bit vùng đa ch ca tng b nh trong các bn đ (các b nh đu có 8 bit d liu).
Bài 4: T
0H.
ai cng vào s dng

hc hin cng ra điu khin tám LED đn có đa ch là F000H.
Bài 5: Thc hin cng vào nhn d liu t 8 phím nhn có đa ch là F00
Bài 6: Thc hin mch gii mã đa ch vào ra trong h thng có 2 cng ra và h
các b đm cài 8 bit. 13
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
CHNG 2: NGUYÊN TC LÀM VIC CA B VI X LÝ
H INTEL 80X86
Gii thiu:
Ni dung chng này trc ht gii thiu v cu trúc ca b vi x lý 80286 và chc nng các
khi mch ca nó nh: khi giao tip BUS (BU) tác đng mi tín hiu đ giao tip vi th gii
bên ngoài., khi gii mã lnh (IU) thc hin chc nng to ra các tín hiu điu khin các khi


Hình 2.1: S đ khi b vi x lý 80286
EXECUTION UNIT (EU)
ADDRESS UNIT (AU)
INSTRUCTION
UNIT (IU)
INSTRUCTION
DECODER
3 DECODER
INSTRUCTION
QUEUE
ADDRESS
LATCH AND DRIVER
PREFETCH
PROCESSOR


CONTROL

14
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
2.1.1. S đ khi ca vi x lý 80286 Intel
B vi x lý 80286 đc cu to t 4 khi chc nng có th làm vic song song:
- Khi giao tip BUS : BU (Bus Unit).
- Khi gii mã lnh : IU (Instruction Unit)
- Khi thc hin lnh : EU (Execution Unit)
- Khi to đa ch : AU (Address Unit)

2.1.2. Khi to đa ch (AU)
AU đm bo vic qun lý, bo v b nh, tu theo ch đ đa ch các chng trình s s dng
các loi đa ch logic khác nhau, AU có nhim v chuyn các đa ch logic qun lý trong chng
trình phn mm thành đa ch vt lý cung cp ti BU đ giao tip vi bên ngoài. a ch vt lý là
đa ch cung cp trc tip cho b nh và vào ra, còn đa ch logic là các giá tr đc chng trình
qun lý s dng đ to ra đa ch vt lý, đó chính là các đa ch đon (segment) và đa ch đ di
(offset).

2.1.3. Khi giao tip BUS (BU)
BU cung cp các tín hiu đa ch, d liu và điu khin đ truy cp các b nh và vào ra. Khi
này cng cho phép giao tip vi b đng x lý hoc các b vi x lý khác.
Chc nng quan trong nht ca BU là t đng kích hot quá trình ly lnh t b nh bng b
tin truy cp lnh (Prefetch). BU còn có chc nng cho phép quá trình ly lnh t b nh thc
hin song song vi các quá trình khác nh hàng đi lnh 6 byte (Prefetch queue).
Các đa ch mà AU to ra cung cp ti các b cài (Address Latch) và s đc đnh thi cung
cp ra bên ngoài ti các thi đim thích hp. D liu truyn vi CPU s đc chuyn qua các
cng đm hai chiu (Data Transceivers).

đó. Các hãng sn xut khác nhau đa ra các tên gi các thanh ghi khác nhau. 80286 có các nhóm
thanh ghi: Các thanh ghi đa nng, các thanh ghi qun lý mng, các thanh ghi điu khin và trng
thái và các thanh ghi đc bit.

2.2.1. Các thanh ghi đa nng
Các thanh ghi đa nng có th s dng cho nhiu chc nng khác nhau. Thông thng các
thanh ghi đa nng trc ht đm nhim chc nng cha d liu, ngoài ra các thanh ghi này có th
s dng cho các chc nng khác nh: cha đa ch, làm b đm,
Intel 80286 có tám thanh ghi đa nng 16 bit, các thanh ghi này đu có th s dng làm thanh
ghi cha d liu 16 bit nh mô t trên hình 2.2.
Các thanh ghi AX, BX, CX và DX có th chia thành hai phn 8 bit riêng bit s dng cho
vic lu tr các d liu 8 bit: AH, AL, BH, BL, CH, CL, DH, DL.
Thanh ghi AX (Accumulator) còn mang chc nng thanh ghi cha trong các lnh nhân và
chia, trong các lnh này thanh ghi AX gi mt toán hng và kt qu cui cùng. Ví d trong lnh
MUL BX d liu trong thanh ghi AX s nhân vi d liu trong thanh ghi BX và kt qu cha
trong thanh ghi DX và AX.
Thanh ghi BX (base) trc ht có th s dng làm thanh ghi gi đa ch b nh, ví d trong
lnh MOV DH,[BX] d liu ti ô nh có đa ch gi trong BX s chuyn vào thanh ghi DH. BX
còn gi chc nng thanh ghi con tr c s, khi s dng trong chc nng này thanh ghi BX gi giá
tr đa ch c s, đa ch truy cp b nh s bng giá tr cha trong BX cng vi mt giá tr ch th
trong lnh. Ví d trong lnh MOV DL,[BX+03] d liu trong b nh t đa ch [BX+03] đc di
chuyn vào trong thanh ghi DL.
Thanh ghi BX còn s dng trong ch đ đa ch tng đi ch s
c s, trong lnh MOV CH,[BX+DI+08] d liu ti ô nh có đa ch BX+DI+08 đc ly vào
thanh ghi CH.
Hình 2.2: Các thanh ghi đa nng ca b vi x lý Intel 80286.

Thanh ghi con tr ngn xp SP (Stack Pointer) đóng vai trò gi đa ch đnh ngn xp trong
các lnh truy cp ti ngn xp nh: lnh np ngn xp PUSH, lnh ly d liu khi ngn xp POP,
lnh gi chng trình con CALL
Ngn xp là vùng nh đc truy cp theo nguyên tc vào trc ra sau FILO (Fist IN Last Out)
nh vào c ch t đng thay đi ca SP nh mô t trên hình 2.3. Khi khi đng SP gi đa ch ca
đnh ngn xp, tr ti giá tr cui cùng cha trong ngn xp (LastValue). Sau mi lnh PUSH giá
tr d liu s đc np vào đnh ngn xp và SP t đng gim đi đ gi đa ch giá tr mi này.
Trên hình 2.3 sau 3 lnh PUSH thanh ghi SP s gi đa ch ô nh cha giá tr ca thanh ghi CX.

lastvalue
????
????
????
????
????
????
????
????
đ

a ch cao
đ

a ch th
p


Hình 2.3: Thao tác np ngn xp và s thay đi ca thanh ghi SP
2.2.2. Các thanh qun lý đon
Các thanh ghi qun lý đon ca Intel 80286 chia thành hai phn: phn cha b chn đon và
phn cha b mô t đon. Phn cha b chn đon (còn gi là thanh ghi chn đon) có th np
bng chng trình nên thng đc gi là phn h. Phn cha b mô t đon (còn gi là các
thanh ghi mô t đon) đc CPU np t đng, không th truy cp bng chng trình nên thng
đc gi là phn kín. Trong ch đ bo v (Protect Mode) kích thc ca mt đon thay đi t 1
đn 5 GB, còn trong ch đ thc kích thc cc đi ca mt đon là 64KB. Ti mt thi đim s
có 4 đon nh xác đnh bi 4 thanh ghi chn đon 16 bit CS, SS, DS và ES trong đó:

17
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
+ Thanh ghi đon mã lnh (CS - Code Segment) cha đa ch đon mã lnh ca chng trình
hin hành.
+ Thanh ghi đon ngn xp (SS - Stack Segment) cha đa ch đon vùng nh ngn xp.
+ Các thanh ghi đon d liu (DS - Data Segment), đon m rng (ES - Extra Segment) cha
đa ch ca các đon d liu s dng trong chng trình.
Trong ch đ đa ch thc CPU to ra đa ch vt lý truy cp b nh bng các đa ch logic là
đa ch đon (segment) và đa ch đ di (offset).
Trong đó: đa ch vt lý 20 bit = đa ch đon 16 bit x 10H + đa ch đ di 16 bit.

2.2.3. Thanh ghi c trng thái
Thanh ghi c còn đc gi là thanh ghi mã trng thái CCR (Condition Code Register) bao
gm các bit đc lp. Mi bit ch có hai trng thái 0 hoc 1 đc gi là các c. Các c rt ít khi
tác đng ln nhau, chúng ch tác đng mt cách đc lp tùy theo trng thái ca các phép tính mà
ALU thc hin. Trng thái các c là c s đ CPU thc hin các quyt đnh, nu tha điu kin
chng trình thc hin theo hng này, còn ngc li s theo mt hng khác, to ra s r nhánh
cho các chng trình phù hp vi bài toán thc t. Ngoài ra còn có các c s dng cho vic điu

Trong h thng vi x lý có hai cách biu din mt s: Cách th nht nó dùng tt c các bit
ca mt thanh ghi đ biu din mt s dng. Ví d mt thanh ghi 8 bit có th biu din các s
thp phân dng t 1 ti 255. Cách th hai CPU s dng bit trng s cao nht đ làm bit du. Ví

18
OPEN.PTIT.EDU.VN
Chng 2: Nguyên tc làm vic ca b vi x lý h Intel 80x86
d nh thanh ghi 8 bit thì bit D7 s là bit du. Khi D7  mc 0 thì các bit D0 D6 gi mt s nh
phân dng nm trong khong 0 ti 127. Khi D7=1 thì thanh ghi s gi s nh phân âm trong
khong –128 ti -1
T hp nh phân t 0000 0000 0111 1111 biu din các s t 0 127 t hp tip theo 1000
0000 trong s có du đc xem nh là -128 và tip theo 1000 0001 = -127. Khi tip tc đm lên
ti t hp 1111 1111 = -1.
C du S s báo khi du thay đi, c du =0 khi kt qu phép tính trong b cha là s dng
(bit D7=0). Nu bit D7=1 kt qu là mt s âm 7 bit thì SF=1. Da vào c này mà các chng
trình này s có cách tính thích hp vi các s có du.
C tràn OF (Overflow Flag)
C tràn OF đc dùng trong các phép tính s hc có du, nó ch th kt qu là mt s dng
ln hn hoc là mt s dng nh hn kh nng cha ca thanh ghi cha kt qu. Ví d khi cng
hai s dng trong hai thanh ghi 8 bit, CFs đc thit lp mc 1 khi có s tràn bit 1 t D6 sang
D7, tc là khi du ca s 7 bit thay đi t (+) sang (-) mc dù kt qu phi là mt s dng, nh
vy kt qu này cn phi đc bin din bng mt s 9 bit. C OF luôn đc thit lp khi có tràn,
vì vy cn phi kim tra nó tu theo trng hp só biu din là có du hay không có du, đ nó
không nh hng gì đn chng trình. C tràn s b xóa khi D7 tr v mc 0.
C ZERO ZF (Zero Flag)
Khi ALU thc hin các phép tính có kt qu trong thanh ghi cha bng 0, lúc đó ZF s đc
thit lp lên mc 1. Còn ngc li ZF=0. Thông thng ZF đ thông báo trng thái so sánh bng,
kt qu ca phép tr = 0 , các phép logic = 0. Khi thc hin các phép cng, mc dù kt qu có d
ra bit th 9 nhng nu thanh cha có giá tr 0 thì ZF vn = 1. Ví d cng FFH+01H kt qu là
100H thì s 1  c CF còn thanh cha có giá tr 00 do đó ZF =1.

C ngt đc thit lp =1 bng lnh STI (Set Interrupt ) và xóa bng lnh CLI(Clear
Interrupt). Khi c ngt=1 cho phép CPU ghi nhn tín hiu yêu cu ngt t ngõ vào INTR, và thc
hin chng trình ngt. Khi c ngt =0, mc dù có tín hiu yêu cu, chng trình ngt s không
đc thc hin. Vi các yêu cu ngt không che NMI (Non-Mask able Interrupt) c ngt không
có ý ngha.
C by TF: (Trap Flag)
C by ch có th thay đi giá tr thông qua ngn xp, khi c by bng 1, CPU hot đng 
ch đ chy tng bc đ g ri sa sai chng trình. C th là khi CPU thc hin xong mt lnh
nó chuyn qua chng trình con giám sát (Monitor), TF đc t đng ct vào ngn xp và TF
đc xoá v 0, các lnh ca chng trình con giám sát s đc thc hin. Chng trình con giám
sát đc thc hin bi ngi s dng đ kim tra li kt qu ca lnh va thc hin  các ô nh,
các thanh ghi, các c. Khi kt thúc chng trình con giám sát, thanh ghi c đc phc hi, TF li
bng 1, điu khin đc quay v lnh tip theo ca chng trình chính. Và sau khi thc hin xong
lnh này, chng trình con giám sát li tip tc đc thc hin.
C nhim v lng nhau NT (Nested Tast)
NT cho bit lnh đang thc hin tin trin trong cùng mt nhim v hay s gây ra vic chuyn
nhim v. NT ch đc dùng trong ch đ bo v ca Intel 80286.
C ch th mc đc quyn vào ra (IOPL)
Hai bit này ch th mc đc quyn thp nht mà tác nhim đang thc hin cn có đ đc phép
thc hin các lnh vào ra. Hai bit này cng ch đc s dng trong ch đ bo v.

2.2.4. Các thanh ghi đc bit
Thanh ghi con tr lnh: (IP - Instruction Pointer) S dng trong vic cung cp đa ch đ di
(offset) ca vùng nh mã lnh. Sau khi ly vào mt lnh BIU s đi giá tr trong IP đ tr ti mã
lnh s thc hin trong chu k k tip.  các lnh thông thng sau khi ly vào mt byte mã lnh
IP s t đng tng lên 1.  các lnh nhy giá tr ca IP s đc xóa đi đ np mt giá tr mi, giá
tr mi này đc cung cp trong lnh nhy. Trong các lnh gi chng trình con trc khi xóa giá
tr c đ np giá tr mi giá tr c ca IP đc ct vào đnh ngn xp, và khi có lnh quay v nó s
đc phc hi. Khi phc v ngt quá trình bin đi IP cng thc hin tng t nh khi xy ra
lnh gi chng trình con.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status