Professional Documents
Culture Documents
Phạm Hoàng Duy 2011 Kỹ thuật vi xử lý
Phạm Hoàng Duy 2011 Kỹ thuật vi xử lý
*****
PH M HOÀNG DUY
BÀI GI NG
KỸ THU T VI X LÝ
HÀ N I 2011
L IăNịIăĐ U
Các b vi x lý đ c s d ng ph bi n trong các h th ng s nh h th ng thông
tin liên l c, h th ngăđi u khi n... Tài li u này t p trung gi i thi u b vi x lý Intel 8086
và các ghép n i tiêu bi uăđ t o nên h vi x lý. H vi x lý d aătrênăIntelă8086ăt ngăđ i
đ năgi n và b ích cho vi c tìm hi uăcũngănh ăphát tri n các h vi x lý ph c t p.
C u trúc c a tài li uănh ăsau.ă
3
Tài li uă đ c biên so n d a trên cu n ắKỹ thu t Vi x lýẰă c a tác gi Vĕnă Th
Minh, các tài li u tham kh o khác, và d aătrênătraoăđ i kinh nghi m gi ng d y v i các
đ ng nghi p và ph n h i c a sinh viên t i H c vi n Công ngh B uăchínhăVi n thông.
Tài li u có th đ c dùng làm tài li u h c t păchoăsinhăviênăđ i h c,ăcaoăđẳng ngành công
ngh thông tin. Trong quá trình biên so n,ădùăđưăcóănhi u c g ng song không tránh kh i
thi u sót, nhóm tác gi mong nh năđ c các góp ý cho các thi uăsótăcũngănh ăỦăki n c p
nh t và hoàn thi n n i dung c a tài li u.
Hà n i, 2011
Tác gi
4
M CL C
M CăL C
L IăNịIăĐ U ................................................................................................................... 3
Ch ngă1. T NG QUAN V VI X LÝ VÀ H VI X LÝ .................................... 10
1. GI I THI U V VI X LÍ ................................................................................ 10
2. H VI X LÍ ...................................................................................................... 11
3. CÁCăĐ CăĐI M C U TRÚC C A VI X LÍ ................................................ 13
3.1 C uătrúcăcĕnăb n ................................................................................................. 13
3.1.1 Các thanh ghi .......................................................................................... 13
3.1.2 Đơn vị xử lý số học và lô-gíc ALU .......................................................... 15
3.1.3 Đơn vị điều khiển CU .............................................................................. 15
3.1.4 Kiến trúc RISC và CISC .......................................................................... 16
4. L CH S PHÁT TRI N VÀ PHÂN LO I CÁC B VI X LÍ....................... 17
4.1 Giaiăđo n 1971-1973 .......................................................................................... 17
4.2 Giaiăđo n 1974-1977 .......................................................................................... 17
4.3 Giaiăđo n 1978-1982 .......................................................................................... 18
4.4 Giaiăđo n 1983-1999 .......................................................................................... 18
4.5 Giaiăđo n 2000-2006 .......................................................................................... 19
4.6 Giaiăđo n 2007-nay ............................................................................................. 20
Ch ngă2. B X LÝ INTEL 8086 ............................................................................. 21
1. C U TRÚC BÊN TRONG C A 8086 .............................................................. 21
1.1 S ăđ kh i ........................................................................................................... 21
1.1.1 Đơn vị giao tiếp buýt và thực thi EU ...................................................... 22
1.1.2 Các thanh ghi .......................................................................................... 22
1.2 Phơnăđo n b nh c a 8086 ................................................................................ 25
2. B Đ NG X LÍ TOÁN H C 8087 ................................................................ 27
3. T P L NH C A 8086 ....................................................................................... 28
3.1 Khái ni m l nh, mã hoá l nh và quá trình th c hi n l nh .................................. 28
3.2 Các ch đ đ a ch c a 8086 ............................................................................... 29
5
M CL C
6
M CL C
4. M T S VÍ D ................................................................................................. 66
4.1 Ví d 1 ................................................................................................................ 67
4.2 Ví d 2 ................................................................................................................ 68
4.3 Ví d 3 ................................................................................................................ 70
4.4 Ví d 4 ................................................................................................................ 72
4.5 Ví d 5 ................................................................................................................ 73
Ch ngă4. PH I GHÉP VI X LÍ V I B NH VÀ CÁC THI T B VÀO/RA . 75
1. CÁC TÍN HI U C A VI X LÍ VÀ CÁC M CH PH TR ......................... 75
1.1 Các tín hi u c a 8086.......................................................................................... 75
1.2 Phơnăkênhăđ tách thông tin và vi căđ m cho các buýt ...................................... 79
1.3 M ch t o xung nh p 8284. .................................................................................. 80
1.4 M chăđi u khi n buýt 8288 ................................................................................ 82
1.5 Bi uăđ th i gian c a các l nhăghi/đ c ............................................................... 83
2. PH I GHÉP VI X LÍ V I B NH .............................................................. 86
2.1 Gi i thi u b nh ................................................................................................ 86
2.2 Gi iămưăđ a ch cho b nh ................................................................................. 88
2.2.1 Giới thiệu ................................................................................................ 88
2.2.2 Thực hiện mạch giải mã bằng các mạch lô-gíc đơn giản ....................... 90
2.2.3 Thực hiện bộ giải mã dùng mạch giải mã tích hợp................................. 91
2.2.4 Thực hiện bộ giải mã dùng PROM ......................................................... 93
3. PH I GHÉP VI X LÍ V I THI T B VÀO RA ............................................. 94
3.1 Gi i thi u v thi t b vào/ra ................................................................................ 94
3.2 Gi iămưăđ a ch thi t b vào ra ............................................................................. 95
3.2.1 Giới thiệu ................................................................................................ 95
3.2.2 Các mạch cổng đơn giản......................................................................... 96
4. GI I THI U M T S VI M CH H TR VÀO RA ..................................... 98
4.1 Ghép n i song song dùng 8255A ........................................................................ 98
4.1.1 Giới thiệu ................................................................................................ 98
4.1.2 Lập trình 8255A .................................................................................... 102
4.2 Truy n thông n i ti p ........................................................................................ 104
7
M CL C
8
M CL C
9
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
10
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
2. H ăVIăX ăLệ
B vi x lý là m t thành phần r tăc ăb n, không thi uăđ căđ t o nên máy vi tính.
Trong th c t b vi x lý còn ph i có th k t h p thêm v i các b ph năđi n t khácănh ă
b nh và b ph iăghépăvƠo/raăđ t o nên m t hệ vi xử lý hoàn ch nh. Cầnăl uăỦăr ng,ăđ
ch m t h th ng có c uătrúcănh ătrên,ăthu t ng ắh vi x lỦẰămangăỦănghĩaăt ng quát
h năsoăv i thu t ng ắmáyăviătínhẰ,ăvìămáyăviătính ch là m t ng d ng c th c u h vi
x lý. Hình 1-1 gi i thi uăs ăđ kh i t ng quát c a m t h vi x lý.
Buýt d li u
BuỦtăđi u khi n
B x lý trung B nh
tâm Ph i ghép vào/ra
(ROM-RAM)
(I/O) Thi t b vào
(CPU)
Thi t b ra
Thanh ghi Thanh ghi Thanh ghi
trong ngoài ngoài
BuỦtăđ a ch
Hình 1-1. S ăđ kh i c a h vi x lý
12
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
Buýt dữ liệu (data bus) th ng có t 8, 16, 20, 24, 32, 64 ( ho căh n) đ ng dây
tùy theo các b vi x lý c th . S l ngăđ ng dây này quy tă đ nh s bít d li u mà
CPU có kh nĕngăx lý cùng m t lúc. Chi uămũiătênătrênăsusăs li u ch ra r ngăđơyălƠă
buýt 2 chiều,ănghĩaălƠăd li u có th truy năđiăt CPU (dữ liệu ra) ho c truy năđ n CPU
(dữ liệu vào). Các phần t cóăđầu ra n i thẳng v i buýt d li uăđ u ph iăđ c trang b
đầu ra 3 tạng thái đ có th ghépăvƠoăđ c và ho tăđ ngăbìnhăth ng v i buýt này.
Buýt điều khiển (control bus) th ng g m hàng ch căđ ng dây tín hi u khác nhau.
M i tín hi uăđi u khi n có một chiều nhất định vì khi ho tăđ ngăCPUăđ aătínăhi uăđi u
khi n t i các kh i khác trong h .ăĐ ng th iăCPUăcũngănh n tín hi uăđi u khi n t các
kh iăđóăđ ph i h p ho tăđ ng c a toàn h . Các tín hi u này trên hình v đ c th hi n
b iăcácăđ ngăcóămũiătênă2ăchi u,ăđi uăđóăkhôngăph iălƠăđ ch tính hai chi u c a m t tín
hi u mà là tính hai chi u c a c m t nhóm các tín hi u.
M t khác, ho tăđ ng c a h th ng vi x lỦătrênăcũngăcóăth coiănh ălƠăquáătrìnhătraoăđ i
d li u gi a các thanh ghi bên trong. V m t ch că nĕngă m i kh i trong h th ng trên
t ngăđ ngăv i các thanh ghi trong (n m trong CPU) ho c các thanh ghi ngoài (n m
r i rác trong b nh ROM, b nh RAM và trong kh i ph i ghép vào/ra). Ho tăđ ng c a
toàn h th c ch t là s ph i h p ho tăđ ng c aăcácăthanhăghiătrongăvƠăngoƠiănóiătrênăđ
th c hi n sự biến đổi dữ liệu ho c sự trao đổi dữ liệu theo các yêu cầuăđưăđ nhătr c.
3. CỄCăĐ CăĐI MăC UăTRÚCăC AăVI X ăLệ
3.1 C uătrúcăcĕnăb n
Nh ăđưătrìnhăbƠyătrongăphần trên, vi x lỦăchínhălƠăđ năv x lý trung tâm CPU c a
máyăviătính.ăNh ăv y s c m nh x lý c aămáyăviătínhăđ c quy tăđ nh b iănĕngăl c c a
vi x lý. Trên nguyên t c, vi x lý có th đ căchiaăthƠnhăcácăđ năv ch cănĕngăchínhă
nh ătrongăHình 1-2.
3.1.1 Các thanh ghi
S l ng, kích c và ki u c aăcácăthanhăghiăthayăđ i t vi x lý này sang vi x lý
khác. Tuy nhiên, các thanh ghi này th c hi năcácăthaoătácăt ngăt nhau. C u trúc các
thanhăghiăđóngăvaiătròăquanătr ng trong vi c thi t k ki n trúc c a vi x lỦ.ăĐ ng th i,
c u trúc thanh ghi v i m t lo i vi x lý c th cho bi t m căđ thu n l i và d dùng khi
l p trình cho vi x lỦăđó.ăD iăđơyălƠăcácăthanhăghiăc ăb n nh t:
i. Thanh ghi l nh: l uăcácăl nh. Sau khi n p mã l nh t b nh , vi x lỦăl uămưăl nh
trong thanh ghi l nh. Giá tr trongăthanhăghiă nƠyăluônă đ c vi x lý gi iămưăđ
xácăđ nh l nh. Kích c t (word) c a vi x lý quy tăđ nh kích c c a thanh ghi
này. Ví d , vi x lý 32 bít thì s có thanh ghi l nh 32 bít.
13
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
Thanhăghiăđ a ch
Thanh ghi t m
Đ năv đi u khi n
CU
14
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
iv. Thanh ghi dùng chung: cònăđ c g i là thanh ghi tíchălũy (accumulator). Thanh
ghiănƠyăth ng là các thanh ghi 8 bít dùng th l uăhầu h t các k t qu tính toán
c aăđ năv x lý sô h c và lô-gíc ALU. ThanhăghiănƠyăcònădùngăđ traoăđ i d
li u v i các thi t b vào/ra.
3.1.3 Đ ỉ ố đi Ố Ệểi ỉ CU
Ch cănĕngăchínhăc a đ năv đi u khi n CUălƠăđ c và gi i mã các l nh t b nh
ch ngătrình. Đ th c hi n l nh, CU kích ho t kh i phù h pătrongăALUăcĕnăc vào mã
l nh (op-code) trong thanh ghi l nh. Mã l nhăxácăđ nhăthaoătácăđ CU th c thi. CU thông
d ch n i dung c a thanh ghi l nhăvƠăsauăđóăsinhăraăm t chu i các tín hi u kích ho t t ngă
ng v i l nh nh nă đ c. Các tín hi u này kích ho t các kh i ch că nĕngă phùă h p bên
trong ALU.
CU sinh ra các tín hi uă đi u khi n d n t i các thành phần khác c a vi x lý qua
buỦtă đi u khi n. Ngoài ra, CUă cũngă đápă ng l i các tín hi uă đi u khi n trên buỦtă đi u
khi n do các b ph n khác g i t i. Các tín hi uănƠyăthayăđ i theo t ng lo i vi x lý. M t
s tín hi uăđi u khi n tiêu bi uănh ăkh iăđ ng l i RESET, đ c ghi (R/W), tín hi u ng t
(INT/IRQ), …
15
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
Phần này gi i thi u quá trính phát tri n c a các b vi x lỦăquaăcácă giaiăđo n t
nĕmă1971ăt p chung ch y u vào các s n phẩm c aăhưngăIntelădoăđơyălƠăm t trong nh ng
hãng s n xu t vi x lỦăhƠngăđầuăđ ng th iăcũngălƠăhưngătri n khai nhi u công ngh m i
giúp nâng cao hi uănĕngăc a vi x lý, đ c bi tătrongălĩnhăv c máy vi tính.
4.1 Giaiăđo nă1971-1973
Nĕmă 1971, trong khi phát tri n các vi m ch dùng cho máy tính cầm tay, Intelă đưă
choăraăđ i b vi x lỦăđầu tiên là 4004 (4 bít) c a Rockwell International, IPM-16 (16
bít) c a National Semiconductor.
Đ căđi m chung c a các vi x lý th h này là:
Đ dài t th ng là 4 bít (cũngăcóăth dƠiăh n)
Công ngh ch t o PMOS v iăđ căđi m m tăđ phần t nh , t căđ th p, giá
thành rẻ và có kh nĕngăđ aăraădòngăt i nh .
T că đ th c hi n l nh: 10-16s/l nh v i tần s đ ng h fclk = 0, 1- 0, 8
MHz.
T p l nhăđ năgi n ph i cần nhi u m ch ph tr m i t o nên m t h vi x lý
hoàn ch nh.
4.2 Giaiăđo nă1974-1977
Các b vi x lỦă đ i di n trong th h này là các vi x lý 8 bít 6502 c a MOS
Technology, 6800 và 6809 c a Motorola, 8080 và 8085 c aăIntelăvƠăđ c bi t là b vi x
lý Z80 c a Zilog. Các b vi x lý này có t p l nhăphongăphúăh năvƠăth ng có kh nĕngă
phân bi tăđ a ch b nh v iădungăl ngăđ n 64KB. Có m t s b vi x lý còn có kh
nĕngăphân bi tăđ că256ăđ a ch cho các thi t b ngo i vi (h Intel và Zilog). Chúngăđưă
đ c s d ng r ng rãi trong công nghi p. T t c các b vi x lý th iăkìănƠyăđ uăđ c s n
xu t b ng công ngh NMOS (V i m tăđ đi n t trên m tăđ năv di nătíchăcaoăh năsoăv i
công ngh PMOS) ho c CMOS (ti t ki măđi nănĕngătiêuăth )ăchoăphépăđ tăđ c t căđ
t 1-8 s/l nh v i tần s đ ng h fclk = 1-5 MHz.
17
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
18
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
19
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ
20
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
1. C UăTRÚCăBểNăTRONGăC Aă8086
21
Cả NẢ 2. BÔ X LÍ INTEL 8086
23
Cả NẢ 2. BÔ X LÍ INTEL 8086
U không s d ng.
C ho c CF (Carry Flag): c nh . CF = 1 khi có nh ho c mu n t bít có
nghĩaăl n nh t MSB (Most Significant Bit).
P ho c PF (Parity Flag): c parity. PF ph n ánh tính ch n lẻ c a t ng s bít 1
có trong k t qu . C PF =1 khi t ng s bít 1 trong k t qu là ch n (even
parity).
A ho c AF (Auxiliary Carry Flag): c nh ph r tăcóăỦănghĩaăkhiătaălƠmăvi c
v i các s BCD (Binary Coded Decimal). AF = 1 khi có nh ho c mu n t
m t s BCD th p (4 bít th p) sang m t s BCD cao (4 bít cao).
Z ho c ZF (Zero Flag): c r ng. ZF =1 khi k t qu = 0.
24
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
25
Cả NẢ 2. BÔ X LÍ INTEL 8086
n i ti pă ngayă sauă đó. Đi uă nƠyă cũngă choă phépă taă truyă nh p vào b t kỳ đo n nh (64
KByte) nào n m trong toàn b không gian 1 MByte.
N iădungăcácăthanhăghiăđo n s xácăđ nhăđ a ch c a ô nh n m đầu đo n. Đ a
ch này còn g iălƠăđ a ch c ăs . Đ a ch c a các ô nh khác n mătrongăđo nătínhăđ c
b ng cách c ngăthêmăvƠoăđ a ch c ăs m t giá tr g iălƠăđ a ch l chăhayăđ l ch (Offset),
do nó ng v i kho ng l ch đ a ch c a m t ô nh c th nƠoăđóăsoăv i ôăđầuăđo n. Đ
l chănƠyăđ căxácăđ nh b i các thanh ghi 16 bít khácăđóngăvaiătròăthanhăghiăl ch (Offset
register) mà ta s đ c trình bày sau. C th , đ xácăđ nhăđ a ch v t lý 20 bít c a m t ô
nh nƠoă đóă trongă m tă đo n b t kỳ. CPU 8086 ph iă dùngă đ n 2 thanh ghi 16 bít: m t
thanhăghiăđ ch aăđ a ch c ăs , còn thanh kia ch aăđ l ch. T n i dung c a c p thanh
ghiăđóăt oăraăđ a ch v t lý theo công th c sau:
Đ ach v tlý=Thanh_ghi_đ an×16+Thanh_ghi_l ch
Vi cădùngă2ăthanhăghiăđ ghi nh thông tin v đ a ch th c ch tăđ t o ra m t lo i
đ a ch g iălƠăđ a ch logicăvƠăđ c ký hi uănh ăsau:
Thanh_ghi_đo n: Thanh_ghi_l ch hay segment: offset
Đ a ch ki u segment: offset là logic vì nó t n t iăd i d ng giá tr c a các thanh
ghi c th bên trông CPU và ghi cần thi t truy c p ô nh nƠoăđóăthìănóăph iăđ căđ i ra
26
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
Nh ăđ c trình bày trong phầnătr c, 8086 không có các thao tác v i s th c.ăĐ
làm vi c này, h vi x lý cần có các b đ ng x lý toán h c 80x87 h tr CPU trong vi c
tính toán các bi u th c dùng d u ch măđ ngănh ăc ng, tr , nhân, chia các s d u ch m
đ ng, cĕnăth c, logarit, … Chúng cho phép x lỦăcácăphépătoánănƠyănhanhăh nănhi u so
v i 8086.
8087 g m m tăđ năv đi u khi n (CU – Control Unit)ădùngăđ đi u khi n buýt và
m tă đ nă v s h c (NU – Numerical Unit)ă đ th c hi n các phép toán d u ch mă đ ng
trong các m chă tínhă lũyă th a (exponent module) và m ch tính phầnă đ nh tr (mantissa
module). Khác v i 8086, thay vì dùng các thanh ghi r i r c là m tăngĕnăx p thanh ghi.
27
Cả NẢ 2. BÔ X LÍ INTEL 8086
28
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
Ghi chú:
addr8, addr16ăt ngă ng v iăđ a ch 8 và 16 bít
Các giá tr cho trong các c t 2, 3, 4 ( ng v i MOD =00, 01, 10)ălƠăcácăđ a
ch hi u d ng (EA) s đ c c ng v iăDSăđ t oăraăđ a ch v t lý (riêng BP
ph iăđ c c ng v i SP)
3.2 Cácăch ăđ ăđ aăch ăc aă8086
Ch đ đ a ch (addressing mode) lƠăcáchăđ CPU tìm th y toán h ng cho các l nh
c a nó khi ho tăđ ng. M t b vi x lý có th có nhi u ch đ đ a ch . Các ch đ đ a ch
nƠyăđ căxácăđ nh ngay t khi ch t o ra b bi x lý và sau này không th thayăđ iăđ c.
B vi x lý 8086 và c h 80x86ănóiăchungăđ u có 7 ch đ đ a ch sau:
1. Ch đ đ a ch thanh ghi (register addressing mode).
2. Ch đ đ a ch t c thì (immediate addressing mode).
29
Cả NẢ 2. BÔ X LÍ INTEL 8086
3.2.3 Cể đ đ a Ếể ỏrựẾ ỏi ị
Trong ch đ đ a ch này m t toán h ng ch aăđ a ch l nh c a ô nh dùng ch a d
li u còn toán h ng kia ch có th lƠăthanhăghiămƠăkhôngăđ c là ô nh . N u so sánh v i
ch đ đ a ch t c thì ta th y đơyăngayăsauămưăl nh không ph i là toán h ngămƠălƠăđ a
ch l ch c a toán h ng.
30
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
Ví d 2-3
MOV AL, (1234H) ;chuy n ô nh DS:1234 vào AL.
MOV (4320H), CX ;chuy n CX vào 2 ô nh liên ti p DS:4320 và DS:4321
3.2.5 Cể đ đ a Ếể ỏ ỉỂ đ i Ế sở
Trong ch đ đ a ch nàyăcácăthanhăghiăc ăs nh ăBXăvƠăBPăvƠăcácăh ng s bi u
di n các giá tr d ch chuy n (displacement values) đ cădùngăđ tínhăđ a ch hi u d ng
c a toán h ng trong các vùng nh DS và SS. S có m t c a các giá tr d ch chuy n xác
đ nhătínhăt ngăđ i c aăđ a ch so v i đ a ch c ăs .
Ví d 2-5
MOV CX, (BX) +10 ; chuy n 2 ô nh liên ti păcóăđ a ch DS: (BX + 10) và
; DS: (BX+10) vào CX.
MOV CX, (BX+10) ; m t cách vi t khác c a l nh trên.
MOV CX, 10 (BX) ; m t cách vi t khác c a l nhăđầu.
MOV AL, (BP) +5 ; chuy n ô nh SS: (BP+5) vào AL.
ADD AL, Table (BX) ; c ng AL v i ô nh do BX ch ra trong b ng table
; (b ng này n m trong DS), k t qu d a vào AL.
Trong ví d trên:
10 và 5 là các giá tr c th cho bi t m c d ch chuy n c a các toán h ng.
Table là tên m ng bi u di n ki u d ch chuy n c a m ng (phần t đầu tiên)
so v iăđ a ch đầu c aăđo n d li u DS.
(BX+10) ho c (BP+5) g iălƠăđ a ch hi u d ng (effective address. EA. theo
cách g i c a Intel).
DS: (BX+10) ho c SS: (BP+5) chínhălƠălogicăt ngă ng v i m tăđ a ch
v t lý.
31
Cả NẢ 2. BÔ X LÍ INTEL 8086
3.2.6 Cể đ đ a Ếể ỏ ỉỂ đ i Ếể s Ế sở
K t h p hai ch đ đ a ch ch s vƠăc ăs ta có ch đ đ a ch ch s c ăs . Trong
ch đ đ a ch này ta dùng c thanhăghiăc ăs l n thanh ghi ch s đ tínhăđ a ch c a toán
h ng. N u ta dùng thêm c thành phần bi u di n s d ch chuy n c aăđ a ch thì ta có ch
đ đ a ch ph c t p nh t: ch đ đ a ch t ngăđ i ch s c ăs . Ta có th th y ch đ đ a
ch này r t phù h p cho vi c đ a ch hoá các m ng hai chi u.
Ví d 2-6
MOV AX, [ BX ] [SI ]+8 ;chuy n 2 ô nh liên ti păcóăđ a ch
; DS:(BX+SI+8) và DS:(BX+SI+9) vào AX
MOV AX, [BX+SI+8] ; m t cách vi t khác c a l nh trên
MOV CL, [BP+DI+5 ; chuy n ô nh SS:(BP+DI+5) vào CL.
Thanhăghiăđo n CS DS ES SS
Thanh ghi l ch IP SI, DI, BX DI SP, BP
Ví d :
N u ta mu năthayăđ i, không l y toán h ngătrongăđo n d li u DS, mà l i l y toán
h ng trongăđo n d li u ph ES đ đ aăvƠoăAL, thì ta ph i vi t l i l nh trên thành
32
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
Mã g i nh Ch cănĕng
Di chuy n byte hay word gi a thanh ghi và ô
MOV
nh
Đ c, ghi m t byte hay word gi a c ng và ô
IN, OUT
nh
LEA N p đ a ch hi u d ng
PUSH, POP N p vào, l y ra m tăwordătrongăngĕnăx p.
XCHG Hoánăđ i byte hay word
33
Cả NẢ 2. BÔ X LÍ INTEL 8086
3.3.1.b LEA - Nạp địa chỉ hiệu dụng vào thanh ghi
Viết lệnh: LEA Đích, Gốc
Trongăđó:
+ăĐíchăth ng là m t trong các thanh ghi: BX, CX, DX, BP, SI, DI.
+ G c là tên bi n trongăđo năDSăđ c ch rõ trong l nh ho c ô nh c th .
Mô t : Đíchă Đ a ch l ch c a G c, ho c
Đíchă Đ a ch hi u d ng c a G c
ĐơyălƠăl nhăđ tínhăđ a ch l ch c a bi n ho căđ a ch c a ô nh ch n làm g c r i
n păvƠoăthanhăghiăđưăch n.
L nhănƠyăkhôngătácăđ ngăđ n các c .
Ví d :
LEA DX, MSG ; n păđ a ch l ch c a b n tin MSG vào DX.
LEA CX, [BX] [DI] ; n păvƠoăCXăđ a ch hi u d ng
; do BX và DI ch ra: EA =BX+DI
34
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
Mã g i nh Ch cănĕng
NOT Đ o (bù m t) byte hay word
AND Phép và byte ho c word
OR Phép ho c byte ho c word
XOR Phép ho c lo i tr byte ho c word
SHL, SHR D ch trái, d ch ph i lôgíc byte hay word. S b c
1 ho cădoăCLăxácăđ nh
SAL, SAR D ch trái, d ch ph i s h c byte hay word. S
b c 1 ho cădoăCLăxácăđ nh
ROL, ROR Quay trái, quay ph i byte hay word. S b c1
ho cădoăCLăxácăđ nh
ADD, SUB C ng tr byte ho c word
ADC, SBB C ng tr byte ho c word có nh
INC, DEC Tĕng, gi m
NEG Đ o byte ho c word (bù 2)
CMP So sánh hai byte ho c word
MUL, DIV Nhân, chia byte ho c word không d u
IMUL, IDIV Nhân chia byte ho c word có d u
35
Cả NẢ 2. BÔ X LÍ INTEL 8086
36
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
đóăc a m t toán h ng b ng cách nhân logic toán h ngăđóăv i toán h ng t c là có các bít
0/1 các ch cầnăcheăđi/gi nguyênăt ngă ng (toán h ngălúcănƠyăcònăđ c g i là m t
n ).
Xoá: CF, OF.
Cập nhật: PF, SF, ZP, PF ch cóănghĩaăkhiătoánăh ng là 8 bít.
Không xác định: AF.
Ví d :
AND AL, BL ;AL, AL BL theo t ng bít.
AND BL, 0FH ;che 4 bít cao c a BL.
Mã g i nh Ch cănĕng
JMP Nh yăkhôngăđi u ki n
JA (JNBE) Nh y n u l năh n
JAE (JNB) Nh y n u l năh năho c b ng
JB (JNAE) Nh y n uăbéăh n
JBE (JNA) Nh y n uăbéăh năho c b ng
JE (JZ) Nh y nêu b ng
JC, JNC Nh y n u c nh đ t, xóa
JO, JNO Nh y n u c trƠnăđ t, xóa
JS, JNS Nh y n u c d uăđ t, xóa
LOOP L păkhôngăđi u ki n, s lần l pădoăCXăxácăđ nh
LOOPE (LOOPZ) L p n u b ng (c không) ho c s lần l p do CX
xácăđ nh
LOOPNE (LOOPNZ) L p n u không b ng (c không xóa) ho c s lần
l pădoăCXăxácăđ nh
CALL, RET G i hàm, tr v t hàm con
INT Ng t m m
IRET Quay tr v t đo năch ngătrìnhăng t
38
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
3.3.3.a JMP - Nhảy (vô điều kiện) đến một đích nào đó
L nh này khi n cho b vi x lý 8086 b tă đầu th c hi n m t l nh m i t iă đ a ch
đ c mô t trong l nh. L nh này phân bi t nh y xa và nh y gần theo v trí c a câu l nh
m i. Tuỳ thu căvƠoăđ dài c aăb c nh y chúng ta phân bi t các ki u l nh nh y gần và
nh y xa v iă đ dài l nh khác nhau. L nh nh yă đ n nhãn ng n shortlabel là l nh nh y
t ngăđ i. N iăđ n ph i n m trong ph m vi t -128ăđ n +127 so v i v trí c a l nh nh y.
Toán h ng ngu n trong l nh ch lƠăbyteăđ d iăđ c ng thêm vào thanh ghi IP. Byteăđ
d iănƠyăđ c m r ng d u tr c khi c ng vào thanh ghi IP.
- Ví dụ :
JMP SHORT 18h
JMP 0F008h
JMP DWORD PTR [3000h]
L nhănƠyăkhôngătácăđ ngăđ n các c .
3.3.3.b LOOP -Lặp lại đoạn chương trình do nhãn chỉ ra cho đến khi CX=0
Viết lệnh: LOOP NHAN
L nhănƠyădùngăđ l p l iă đo năch ngătrình (g m các l nh n m trong kho ng t
nhưnă NHANă đ n h t l nhă LOOPă NHAN)ă choă đ n khi s lần l p CX=0. Đi u này có
nghĩaălƠătr c khi vào vòng l p s lần l p mong mu n ph iăđ c n p vào thanh ghi CX
và sau m i lần th c hi n l nhăLOOPăNHANăthìăđ ng th i CX t đ ng gi măđiăm t (CX
CX-1).
L nhănƠyăkhôngătácăđ ngăđ n các c .
Mã g i nh ChứẾ ỉăỉỂ
39
Cả NẢ 2. BÔ X LÍ INTEL 8086
HLT Treo vi x lý
40
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
Nhóm các hi năt ng ngo i l :ăđóălƠăcácăng t do các l i n y sinh trong quá trình
ho tăđ ng c aăCPUănh ăphépăchiaăchoă0, x y ra tràn khi tính toán.
Yêu cầu ng t s đ c CPU ki mătraăth ng xuyên t i chu kỳ đ ng h cu i cùng
c a m i l nh. Error! Reference source not found. trình bày m tăcáchăđ năgi năđ đ aă
đ c s hi u ng t N vào buýt d li uătrongăkhiăcũngăt o ra yêu cầu ng tă đ aăvƠoăchơnă
INTR c a b vi x lý 8086.
Gi thi t trong m t th iă đi m nh tă đ nh ch có m t yêu cầu ng tă IRiă đ c tác
đ ng và s có xung yêu cầu ng tăđ n CPU. Tín hi uăIRiăđ căđ ng th iăđ aăquaăm ch
khu chăđ iăđ măđ t o ra s hi u ng tăt ngă ng, s hi u ng t này s đ căCPUăđ c vào
khiănóăđ aăraătínăhi u tr l i.
1 1 1 1 1 1 0 FEH (254)
1 1 1 1 1 0 1 FDH (253)
1 1 1 1 0 1 1 FBH (251)
1 1 1 0 1 1 1 F7H (247)
1 1 0 1 1 1 1 EFH (239)
1 0 1 1 1 1 1 DFH (223)
0 1 1 1 1 1 1 BFH (191)
42
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088
43
Cả NẢ 2. BÔ X LÍ INTEL 8086
44
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
45
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
46
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
1.2.1 Bi ỉ ốỢ ểằỉỂ
Bi nă trongă ch ngă trìnhă h p ng cóă vaiă tròă nh ă nóă cóă ngôn ng b c cao. M t
bi n ph i đ căđ nh ki u d li u là ki u byte hay ki u t và s đ căch ngătrình d ch
gán cho m tăđ a ch nh tăđ nh trong b nh . Đ đ nhănghĩaăcácăki u d li u khác nhau ta
th ng dùng các l nh gi sau:
DB (define byte) :ăđ nhănghĩaăbi n ki u byte
DW (define word) :ăđ nhănghĩaăbi n ki u t
DD (define double word) :ăđ nh nghĩa bi n ki u t kép
a) Bi n byte
Bi n ki u byte s chi m 1 byte trong b nh . H ng d năch ngătrìnhăd chăđ đ nh
nghĩaăbi n ki u byte có d ng t ngăquátănh ăsau:
Tên DB giá_ tr _kh i_đầu
Ví d :
B1 DB 4
Ví d trênăđ nhănghĩaăbi n byte có tên là B1 và dành 1 byte trong b nh cho nó
đ ch a giá tr kh iăđầu b ng 4.
N u trong l nh trên ta dùng d u? thay vào v trí c a s 4 thì bi n B1 s đ c dành
ch trong b nh nh ngăkhôngăđ c gán giá tr kh iăđầu. C th dòng l nh gi :
B2 DB ?
ch đ nhănghĩaă1ăbi n byte có tên là B2 và dành cho nó m t byte trong b nh .
M tătr ng h păđ c bi t c a bi n byte là bi n ký t . Ta có th cóăđ nhănghĩaăbi n
kỳ t nh ăsau:
C1 DB ' $'
C2 DB 34
b) Bi n t
Bi n t cũngăđ căđ nhănghĩaătheoăcáchăgi ngănh ăbi n byte. H ng d năch ngă
trình d chăđ đ nhănghĩaăbi n t có d ngănh ăsau:
Tên DB giá_ tr _kh i_đầu
47
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
Ví d :
W1 DW 40
Ví d trênăđ nhănghĩaăbi n t có tên là W1 và dành 2 byte trong b nh choănóăđ
ch a giá tr kh iăđầu b ng 40.
Chúngătaăcũngăcóăth s d ng d u? ch đ đ nhănghĩaăvƠădƠnhă2ăbyteătrongăb nh
cho bi n t W2 mà không gán giá tr đầu cho nó b ng dòng l nh sau:
W2 DW ?
c) Bi n m ng
Bi n m ng là bi n hình thành t m t dãy liên ti p các phần t cùng lo i byte ho c
t , khiăđ nhănghĩaăbi n m ng ta gán tên cho m t dãy liên ti p các byte hay t trong b
nh cùng v i các giá tr banăđầuăt ngă ng.
Ví d :
M1 DB 4, 5, 6, 7, 8, 9
Ví d trênă đ nhănghĩaăbi n m ng có tên là M1 g m 6 byte và dành ch cho nó
trong b nh t đ a ch ng v iăM1ăđ ch a các giá tr kh iăđầu b ng 4, 5, 6, 7, 8, 9. Phần
t đầu t ng m ngălƠă4ăvƠăcóăđ a ch trùng v iăđ a ch c a M1, phần t th hai là 5 và có
đ a ch M1+1. . .
Khi chúng ta mu n kh iăđầu các phần t c a m ng v i cùng m t giá tr chúng ta
có th dùng thêm toán t DUP trong l nh.
Ví d :
M2 DB 100 DUP (0)
M3 DB 100 DUP (?)
Ví d trênăđ nhănghĩaăm t bi n m ng tên là M2 g m 100 byte, dành ch trong b
nh choă nóă đ ch a 100 giá tr kh iă đầu b ng 0 và bi n m ng khác tên là M3 g m
100byte, dành s n ch cho nó trong b nh đ ch a 100 giá tr nh ngăch aăđ c kh i
đầu.
Toán t DUP có th l ngănhauăđ đ nhănghĩaăraă1ăm ng.
Ví d : dòng l nh
M4 DB 4, 3, 2, 2 DUP(1, 2 DUP(5), 6)
S đ nhănghĩaăraăm t m ngăM4ăt ngăđ ngăv i l nh sau:
M4 DB 4, 3, 2, 1, 5, 5, 6, 1, 5, 5, 6
M tăđi u cần chú ý n aălƠăđ i v i các b vi x lý c a Intel, n u ta có m t t đ
trong b nh thì byte th p c a nó s đ căđ ô nh cóăđ a ch th p, byte cao s đ căđ
ô nh cóăđ a ch cao. Cáchăl uăgi s li u ki uănƠyăcũngăcònăcóăth th y các máy
48
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
VAX c a Digital ho c c a m t s hưngă khácă vƠă th ng g iă lƠă 'quyă că đầu bé' (little
endian, byte th păđ c c t t iăđ a ch th p). Cũngănênănóiăthêmă đơyălƠăcácăb vi x lý
c a Motorola l i có cách c t s li u theo th t ng c l iăhayăcònăđ c g i là 'quyă c
đầu to' (big endian byteăcaoăđ c c t t iăđ a ch th p).
Ví d :ăSauăkhiăđ nhănghĩaăbi n t cóătênălƠăWORDAănh ăsau:
WORDA DW 0FFEEH
Thì trong b nh th p (EEH) s đ căđ t iăđ a ch WORDA còn byte cao (FFH)
s đ căđ t iăđ a ch ti p theo, t c là t i WORDA+1
d) Bi n ki u xâu kí tự
Bi n ki u xâu kí t là m tătr ng h păđ c bi t c a bi n m ng, trongăđóăcácăphần t
c a m ng là các kí t . M t xâu kí t có th đ căđ nhănghĩaăb ng các kí t ho c b ng mã
ASCII c a các kí t đó. Các ví d sauăđ u là các l nhăđúngăvƠăđ uăđ nhănghĩaăcùngăm t
xâu kí t nh ngăg n nó cho các tên khác nhau:
STR1 DB 'string'
STR2 DB 73h, 74h, 72h, 69h, 6Eh, 67h
STR3 DB 73h, 74h, 'x' 'i', 6Eh, 67h
e) Hằng có tên
Các h ngă trongă ch ngă trìnhă h p ng th ngă đ că gánă tênă đ làm choă ch ngă
trình tr nên d đ căh n. H ng có th là ki u s hay ki u ký t . Vi c gán tên cho h ng
đ c th c hi n nh l nh gi EQU nh ăsau:
CR EQU 0Dh ;CR là carriage return
LE EQU 0Ah ;LF là line feed
Trong ví d trên l nh gi EQU gán giá tr s 13 (mã ASCII c a kí t tr v đầu
dòng) cho tên CR và 10 (mã ASCII c a ký t u thêm dòng m i) cho tên LF.
H ngăcũngăcóăth là m t chu i ký t . Trong ví d d iă đơy, sauăkhiăđưă gánăm t
chu i ký t cho m t tên:
CHAO EQU 'Hello'
ta có th s d ng h ngănƠyăđ đ nh nghĩaăm t bi n m ng khác.
MSG DB CHAO, '$'
Vì l nh gi EQU không dành ch c a b nh cho tên c a h ng nên ta có th đ t nó
khá t do t i nh ng ch thích h păbênătrongăch ngătrình. Tuy nhiên trong th c t ng i
taăth ngăđ tăcácăđ nhănghĩaănƠyătrongăđo n d li u.
49
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
Ki uăkíchăth c Mô t
Tiny (Hẹp) Mã l nh và d li u gói g n trong m tăđo n
Mã l nh gói g n trong m tă đo n, d li u n m trong
Small (Nh )
m tăđo n.
Medium (Trung Mã l nh không gói g n trong m tă đo n, d li u n m
bình) trong m tăđo n.
50
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
51
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
1.2.2.d Khung của chương trình hợp ngữ để dịch ra chương trình .EXE
T cácăkhaiăbáoăcácăđo n c aăch ngătrình đưănóiă trên ta có th xây d ng m t
khung t ng quát cho cácăch ngătrìnhăh p ng v i ki uăkíchăth c b nh nh . Sauăđơyă
là m tă khungă choă ch ngă trìnhă h p ng đ r iă sauă khiă đ c d ch (assembled), n i
(linked) trên máy IBM PC s t o ra m t t păch ngătrìnhăch yăđ c ngay (executable)
v iăđuôi .EXE.
. Model small
. Stack 100
52
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
. Data
;ăcácăđ nhănghĩaăchoăbi n và h ngăđ t iăđơy
. Code
MAIN Proc
; Kh iăđầu cho DS
MOV AX, @Data
MOV DS, AX
; Các l nh c aăch ngătrìnhăchínhăđ t iăđơy
; Tr v DOS dùng hàm 4CH c a INT 21H
MOV AH, 4CH
INT 21 H
MAIN Endp
;ăcácăch ngătrìnhăconă(n u có) đ t iăđơy
END MAIN
Trongăkhungăch ngătrìnhătrên, t i dòng cu i cùng c aăch ngătrìnhătaădùngăh ng
d năch ngătrìnhăd ch END và ti pătheoălƠăMAINăđ k t thúc toàn b ch ngătrình. Ta
có nh n xét r ng MAIN là tên c aăch ngătrìnhăchínhănh ngăquanătr ngăh năvƠăv th c
ch tăthìănóălƠăn iăb tăđầu các l nh c aăch ngătrìnhătrongăđo n mã.
Khi m tăch ng .EXE đ c n p vào b nh , h đi u hành DOS s t o ra m t m ng
g m 256 byte c a cái g i là đoạn mào đầu chương trình (Program Segment Prefix - PSP)
dùngăđ ch aăcácăthôngătinăliênăquanăđ năch ngătrìnhăvƠăcácăthanhăghiăDSăvƠăES. Do
v y DS và ES không ch a giá tr đ a ch c aă cácă đo n d li uă choă ch ngă trình. Đ
ch ngătrìnhăcóăth ch yăđúngăph i có các l nhăsauăđ kh iăđầu cho thanh ghi DS (ho c
ES n u cần):
MOV AX, @Data
MOV DS, AX
Trongăđóă@Data là tên c aăđo n d li u. @Dataăđ nhănghĩaăb iăh ng d năch ng
trình d ch s d ch tên @Data thành giá tr s c aăđo n d li u. Ta ph i dùng thanh ghi
AX làm trung gian cho vi c kh iăđầuăDSănh ătrênălƠădoăb vi x lý 8086, Vì nh ng lí do
kỹ thu t, không cho phép chuy n giá tr s (ch đ đ a ch t c thì) vào các thanh ghi
đo n. ThanhăghiăAXăcũngăcóăth đ c thay th b ng các thanh ghi khác.
SauăđơyălƠăvíăd c a m tăch ng trình h p ng đ c vi tăđ d chăraăch ngătrìnhă
v iăđuôi .EXE. khi cho ch y, ch ngătrìnhănƠyăs hi n lên màn hình l i chào 'Hello' n m
gi a hai dòng tr ngăcáchăđ u các dòng mang d u nh c c a DOS.
Ví d 3-1. Ch ngătrìnhăHello.EXE
. Model Small
53
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
. Stack 100
. Data
CRLF DB 13, 10, ' $ '
MSG DB ' Hello!$ '
. Code
MAIN Proc
; kh iăđầu thanh ghi DS
MOV AX, @Data
MOV DS, AX
; v đầu dòng m i dùng hàm 9 c a INT 21H
MOV AH, 9
LEA DX, CRLF
INT 21H
; hi n th l i chào dùng hàm 9 c a INT 21H
MOV AH, 9
LEA DX, MSG
INT 21H
; v đầu dòng m i dùng hàm 9 c a INT 21H
MOV AH, 9
LEA DX, CFLF
INT 21H
; tr v DOS dùng hàm 9 c a INT 21H
MOV AH, 4CH
INT 21H
MAIN Endp
END MAIN
1.2.2.e Khung của chương trình hợp ngữ để dịch ra chương trình .COM
Trên máy tính IBM PC ngoài t păch ngătrìnhăv iăđuôi .EXE, có th d chăch ngă
trình h p ng có k t c u thích h p ra m t lo i t păch ngătrìnhăch yăđ c ki u khác v i
đuôi .COM.ăĐơyălƠăm t d ng ch ngătrìnhăng n g năvƠăđ năgi năh nănhi u so v i t p
ch ngătrìnhăđuôi .EXE. Trongăđóăcácăđo nămư,ăđo n d li uăvƠăđo năngĕnăx păđ c g p
l i trong m tăđo n duy nh tălƠăđo n mã. V i vi c t o ra t p này còn ti t ki măđ c c
54
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
không gian nh khi ph iă l uă tr trên đĩa.ă Đ có th d chă đ că raă ch ngă trìnhă đuôi
.COMăthìăch ngătrìnhăngu n h p ng ph iăđ c k t c u sao cho thích h p.
SauăđơyălƠăkhungăc a m tăch ngătrìnhăh p ng đ d chăđ c ra t păch ngătrìnhă
đuôiă.COM.
Ví d 3-2. Khungăch ngătrình .COM
. Model Tiny
. Code
ORG 100h
START: JMP CONTINUE
; cácăđ nhănghĩaăchoăbi n và h ngăđ t iăđơy
CONTINUE:
MAIN Proc
; các l nh c aăch ngătrìnhăchínhăđ t iăđơy
INT 20H ; Tr v DOS
MAIN Endp
; cácăch ngătrìnhăconă(n uăcó)ăđ t iăđơy
END START
So sánh khung này v iăkhungăchoăch ngătrình .EXE ta th y trong khung không có
khaiăbáoăđo năngĕnăx păvƠăđo n d li u, còn khai báo quy mô s d ng nh là ki u Tiny.
ngayăđầuăđo n mã là l nh gi ORGă(origin:ăđi m xu t phát) l nh JMP (nh y). L nh gi
ORHă100Hădùngăđ gánăđ a ch b tăđầuăchoăch ngătrìnhăt iă100Hătrongăđo n mã, ch a
l i vùng nh v iădungăl ng 256 byte (t đ a ch 0ăđ năđ a ch 255)ăchoăđo nămƠoăđầu
ch ngătrìnhă(PSP).
L nhă JMPă sauă nhưnă STARTă dùngă đ nh y qua phần b nh dành cho vi că đ nh
nghĩaăvƠăkhaiăbáoăd li u (v nguyên t c, d li u có th đ căđ t đầu ho c cu iăđo n
mã, nh ngă đơyătaăđ t nó đầuăđo nămưăđ có th áp d ngăcácăđ nhănghĩaăđ năgi năđưă
nói). Đíchă c a l nh nh y là phầnă đầu c aă ch ngă trìnhă chính. Hình 3-1 bi u di n vi c
m tăch ngătrìnhăki u .COM đ c n p vào và s p x p trong m tăđo n mã c a b nh ra
sao.
Trong Hình 3-1 m tăch ngătrình .COM cũngăđ c n p vào b nh sau vùng PSP
nh ă ch ngă trìnhă đuôi .EXE. Ngĕnă x pă choă ch ngă trình .COM đ c x pă đ t t i cu i
đo n mã, đ nh c aăngĕnăx pălúcăbanăđầu là ô nh cóăđ a ch là FFFEH.
Trongătr ng h păch ngătrìnhăki u .COM này chúng ta s b các h n ch
Dungăl ng nh c căđ i c a m tăđo n là 64KB, t c là ta ph i luôn ch c ch n
đ c r ngăcácăch ngătrìnhă ng d ng ph i có s l ng byte c a mã máy và
d li uăchoăch ngătrìnhăkhôngăl n l m.
55
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
CONTINUE:
(chi u ti n c a mã & d li u)
(chi u ti n c a ngĕnăx p)
FFFEH SP
56
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
Stack
Ch ngă Ch ngă
trình trình
SS
CS
DS
100h ES 100h
PSP PSP
.COM .EXE
57
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
58
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
D chăđ c ra.com?
đ
DùngăEXE2BINăđ d ch *.exe thành
*.com
+ c u trúc l p ki u REPEAT-UNTIL và
+ c u trúc l p ki u FOR-DO.
Đ căđi m chung c a t t c các c u trúc l pătrìnhăc ăb n là tính cấu trúc ch có m t
l i vào c u trúc và m t l iăraăđ ra kh i c uătrúcăđó.
3.1 C uătrúcătu năt
C u trúc tu n t là m t c u trúc thông d ngăvƠăđ năgi n nh t. Trong c u trúc này
các l nhăđ c s p x p tuần t , l nh này k ti p l nh kia. Sau khi th c hi n xong l nh cu i
cùng c a c u trúc thì công vi c ph iălƠmăcũngăđ c hoàn t t.
Ng pháp:
L nh 1
L nh 2
...
L nh n
Bài t p 3-1
Các thanh ghi CX và BX ch a các giá tr c a bi n c và b. Hãy tính giá tr c a bi u
th c a = 2(c+b) và ch a k t qu trong thanh ghi AX.
Gi i
Ta có th th c hi n công vi c trên b ng m uăch ngătrìnhăsau:
XOR AX, AX ;t ng t iăAXălúcăđầu là 0.
ADD AX, BX ;c ng thêm BX.
ADD AX, CX ;c ng thêm CX.
SHL AX, l ;nhơnăđôiăk t qu trong AX.
RA: ;l i ra c a c u trúc.
60
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
Đi u ki n Đi u ki n
Đ
ai Đ ai úng
úng
Công vi c Công vi c 1 Công vi c 2
Bài t p 3-3.
Gán cho CL giá tr bít d u c a AX.
Gi i
Ta có th th c hi n các công vi c trên b ngăch ngătrìnhăsau:
61
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
Bi uth c
AX = 0 thì CX =0
AX > 0 thì CX =1
Gi i
Ta có th th c hi n các công vi c trên b ng m uăch ngătrìnhăsau:
CMP AX, 0 ; Ki m tra d u c a AX.
JL AM ; AX<0.
JE KHONG ; AX =0.
JG DUONG ; AX > 0.
AM: MOV CX, -1
JMP RA
DUONG: MOV CX, 1
JMP RA
KHONG: XOR CX. CX
RA: ; l i ra c a c u trúc.
63
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
Kh iăđầu b đ m
Công vi c
Gi m b đ măđiă1
sai
B đ m=0
đúng
Bài t p 3-5
Hi n th m t dòng kí t '$' trên màn hình.
Gi i
M t dòng màn hình trên máy IBM PC ch aăđ c nhi u nh t là 80 kí t .
Ta s s d ng hàm 2 c a ng tă21Hăđ hi n th 1 kí t . Ta ph i l p l i công vi c này
80 lần c th y b ng l nh LOOP. Mu n dùng l n này, ngay t đầu ta ph i n p vào thanh
ghi CX s lần hi n th , n i dung c a CX đ c t đ ng gi mă đi1ă doătácă đ ng c a l nh
LOOP.
SauăđơyălƠămẩuăch ngătrìnhăth c hi n các công vi c trên:
MOV CX, 80 ; s lần hi n th trong CX
MOV AH, 2 ; AH ch a s hi u hàm hi n th ,
MOV DL, '$' ; DL ch a kí t cần hi n th ,
HIEN: INT 21H ; hi n th
LOOP HIEN ; c m t dòng kí t .
RA: ; l i ra c a c u trúc.
64
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
Công vi c Đi u ki n
sai
đúngăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăă
Bài t p 3-6
Đ m s ký t đ căđ c t bàn phím, khi g p ký t CR thì thôi.
Gi i
Ta có th th c hi n công vi c trên b ng mẩuăch ngătrìnhăsau:
XOR CX, CX ; t ng s ký t đ căđ călúcăđầu là 0
MOV AH, 1 ;ăhƠmăđ c ký t t bàn phím.
TIEP: INT 21H ;ăđ c 1 ký , Al ch a mã ký t .
CMP AL, 13 ;ăđ căđ c CR?
JE RA ;ăđúng, ra.
INC CX ; sai, thêm 1 ký t vào t ng.
RA: ; l i ra c a c u trúc.
65
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
66
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
B ng 3-2. M t s d ch v ng t DOS
4.1 Víăd ă1
Trong phầnăđầu c aăch ngătrìnhăh p ng ta có gi i thi u m tăch ngătrìnhăhi n
l i chào bĕngă ti ng Anh "Hello". Bây gi ta ph i thêm m t l i chào b ng ti ng Vi t
không d u "Chao ban" n m cách l iăchƠoă"Hello"ătr căđơyăm t s dòng nh tăđ nh nào
đó.
Gi i
Taăcũngăv n s d ngăph ngăphápăđưăđ c dùng ch ngătrìnhăm uătr căđơyăđ
hi n th l i chào 'tây', hi n các dòng giãn cách và hi n l i chào 'ta'. Trong ví d này b
b tăđiăcácădòngăcáchă đầu và cu iăđ ch ngătrình.
. Model Small
. Stack 100
. Data
CRLF DB 13, 10, '$'
Chao tay DB 'hello!$'
ChaoTa DB 'Chao ban!$'
. Code
MAIN Proc
67
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
69
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
70
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
71
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
(Ví d : n uănh ălúcăđầu thanh ghi BX ch a giá tr 1234H thì sau khi bi năđ i, BX
s ch a giá tr 3241H. v. v. . . )
Gi i
Th c ch tăđơyălƠăki u bài toán c th này, sau khi xem xét d ng th c c a thanh ghi
BXătr c và sau khi bi năđ i, ta th y có th thuăđ c k t qu môt cách r tăđ năgi n b ng
cách quay trái thanh ghi BX nguyên g căđiă4 bít r iăsauăđóăquayăti păthanhăghiăBHăđiă4ă
bít.
SauăđơyălƠăch ngătrìnhăth c hi n công vi c trên.
. Model Small
. Stack 100
. Code
MAIN Proc
MOV CL, 4
ROL BX, CL ;ăquayăBXăđiă4 bít
MOV CL, 4
72
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088
73
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086
74
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
Bít S6 = 0 liên t c, bít S5 ph n ánh giá tr bít IF c a thanh ghi c . Hai bít S3 và
S4 ph i h p v iănhauăđ ch ra vi c truy nh păcácăthanhăghiăđo n nh ătrongăb ng.
CLK [I]: Tín hi uăđ ng h (xung nh p).cung c p xung nh p làm vi c cho CPU.
Vcc [I]: Chân ngu n cung c p 5V
GND [O]: đi m 0V c a ngu n nuôi.
MN/MX [I]: Chơnăđi u khi n ho tăđ ng c a CPU theo ch đ MIN/MAX.
a) Ch đ MIN (Chân MN/MX cầnăđ c n i thẳngăvƠoă+5VămƠăkhôngăquaăđi n
tr )
o Trong ch đ MIN t t c các tín hi uăđi u khi năliênăquanăđ n các thi t b
ngo i vi truy n th ng và b nh gi ngănh ătrongăh 8085ăđ u có s n trong
8086.
o WR [O]: Xung cho phép ghi. KhiăCPUăđ aăraă WR =0 thì trên buýt d li u
các d li uă đưă nă đ nh và chúng s đ c ghi vào b nh ho c thi t b
ngo i vi t i th i đi m WR = 1. Chân WR tr ng thái tr kháng cao khi P
ch p nh n treo.
o INTA [O]: Tín hi u báo cho các m ch bên ngoài bi t CPU ch p nh n yêu
cầu ng t INTR. Lúcă nƠyă CPUă đ aă raă INTAă =ă 0ă đ báoă lƠă nóă đangă ch
m chăngoƠiăđ aăvƠoăs hi u ng t (ki u ng t) trên buýt d li u.
DEN [O]: Tín hi u báo cho bên ngoài bi t là lúc này trên buýt d n kênh
AD có d li u năđ nh. Chân này tr ng thái tr kháng cao khi P ch p
o
nh n treo.
B ng 4-2. Các chu kỳ c a buýt qua các tín hi u SS0 , IO/ M , DT/ R
0 0 0 Đ c mã l nh
0 0 1 Đ c b nh
0 1 0 Ghi b nh
0 1 1 Buýt r i (ngh )
1 0 0 Ch p nh n yêu cầu ng t
1 0 1 Đ c thi t b ngo i vi
1 1 0 Ghi thi t b ngo i vi
1 1 1 D ng (halt)
o HLDA [O]: Tín hi u báo cho bên ngoài bi t yêu cầuă treoă CPUă đ dùng
các buýt đưăđ c ch p nh n, và CPU 8086 đưătreoăcácăbuýt A, buýt D và
m t s tín hi u c a buýt C.
SSO [O]: Tín hi u tr ng thái đ c dùng k t h p v i IO/M và DT/ R đ
o
gi i mã các chu kỳ ho tăđ ng c a buýt.
b) Ch đ MAX (Chân MN/MX n iăđ t)
o Trong ch đ MAX m t s tín hi uăđi u khi n cần thi tăđ c t o ra trên
c ăs các tín hi u tr ng thái nh dùng m chăđi u khi n buýt 8288. Ch đ
MAXăđ c s d ng khi có b đ ng x lý toán h c 8087.
o S 2 S1 và S 0 [O]: Các chân tr ng thái dùng trong ch đ MAXăđ ghép
v i m chăđi u khi n buýt 8288. Các tín hi uănƠyăđ că8288ădùngăđ t o
ra các tín hi uăđi u khi n trong các chu kỳ ho tăđ ng c a buýt nh ătrong
b ng d iăđơy.
B ng 4-3. Các tín hi uăđi u khi n c a 8288.
78
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
0 0 Khôngăho tăđ ng
79
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
li u). Đ i v i các chân d năđ a ch /tr ng thái cũngăph iălƠmăt ngăt . Đ h tr cho vi c
tách thông tin, CPUăđ aăraăthêmăxungăALE sao cho khi ALE m c cao s có tác d ng
báo cho bên ngoài bi t lúc này thông tin v đ a ch t i các chân d n kênh có giá tr . Xung
ALEăđ cădùngăđ m các m ch ch tăvƠătáchăđ c các thông tin v đ a ch b d n kênh.
Mu n nâng cao t i c a các buýt đ đ m nh n vi c nuôi các m ch bên ngoài. Các tín
hi u ra và vào CPU cần ph iăđ c khu chăđ i thông qua các m chăđ m m t chi u ho c
hai chi u v iăcácăđầuăraăth ng ho căđầu ra 3 tr ng thái.
DIR
EN#
74LS245
74LS245 D15:D0
x2
ADDR/Data x2
80
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
AEN1 , AEN 2 : Tín hi u cho phép ch năđầuăvƠoăt ngă ng RDY1, RDY2 làm
tín hi u báo tình tr ng s n sàng c a b nh ho c thi t b ngo i vi.
F/ C : Dùngăđ ch n ngu n tín hi u chuẩn cho 8284. Khi chân này m c cao thì
xungă đ ng h bên ngoài s đ c dùng làm xung nh p cho 8284, ng c l i thì
xungăđ ng h c a m chădaoăđ ng bên trong dùng th ch anh s đ c ch năđ làm
xung nh p.
EFI: l i vào cho xung t b daoăđ ng ngo i.
CLK: Xung nh p fCLK=fx/3v iăđ r ng 77% n iăđ n chân c a CLK c a 8086.
PCLK: Xung nh p fCLK=fx/6v iăđ r ng 50% dành cho thi t b ngo i vi.
OSC: Xung nh păđưăđ c khu chăđ i có tần s b ng fx c a b daoăđ ng.
81
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
S 2 , S1 , S 0 [I, I, I]: là các tín hi u tr ng thái l y thẳng t CPU. Tuỳ theo các
tín hi u này mà m ch 8288 s t o ra các tín hi u đi u khi n khác nhau t i các
chân ra c aănóăđ đi u khi n ho tăđ ng c a các thi t b n i v i CPU.
CLK [I]: đầu vào n i v iăxungăđ ng h h th ng (t m chă8284)ăvƠădùngăđ
đ ng b toàn b cácăxungăđi u khi năđiăraăt m ch 8288.
82
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
CEN [I]: tín hi uăđầu vào đ choăphépăđ aăraătínăhi u DEN và các tín hi u
đi u khi n khác c a 8288.
IOB [I]: tín hi uăđ đi u khi n m ch 8288 làm vi c các ch đ buýt khác
nhau.
Khi IOB = 1 8288 làm vi c ch đ buýt vào/ra, khi IOB = 0 m ch 8288 làm
vi c ch đ buýt h th ngă(nh ătrongăcácămáyăIBMăPC).
MRDC [O]: tín hi uăđi u khi năđ c b nh . Nó kích ho t b nh đ aăd li u
ra buýt.
MWTC [O] AMWC [O]: là các tín hi uăđi u khi n ghi b nh ho c ghi b nh
kéo dài.
Đóă th c ch t là các tín hi u gi ngă nh ă MEMW , nh ngă AMWC (advanced
memory write command) ho tăđ ng s m lên m tăchútăđ t o ra kh nĕngăchoă
các b nh ch măcóăthêmăđ c th i gian ghi.
IORC [O]: tín hi uăđi u khi năđ c thi t b ngo i vi. Nó kích ho t các thi t b
đ c ch năđ các thi t b nƠyăđ aăd li u ra buýt.
IOWC [O] AIOWC [O]: là các tín hi uăđi u khi năđ c thi t b ngo i vi ho c
đ c thi t b ngo i vi kéo dài. Đóăth c ch t là các tín hi u gi ngănh ă IOW ,
nh ngă AIOWC (advanced I/O write command) ho tăđ ng s m lên m t chút
đ t o ra kh nĕngăchoăcácăb nh ch măcóăthêmăđ c th i gian ghi.
INTA [O]: đầu raăđ thông báo là CPU ch p nh n yêu cầu ng t c a thi t b
ngo i vi và lúc này các thi t b ngo i vi ph iăđ aăraăs hi u ng t ra buýt đ
CPUăđ c.
DT/ R [O]: tín hi uăđ đi u khi năh ngăđiăc a d li u trong h vào hay ra so
v i CPU (DT/ R = 0: CPUăđ c d li u, DT/ R = 1 CPU ghi d li u).
DEN [O]: đơyălƠătínăhi uăđ đi u khi n buýt d li u tr thành buýt c c b hay
buýt h th ng.
MCE/ PDEN [O]: tín hi uădùngăđ đ nh ch đ làm vi c cho m chăđi u khi n
ng t PIC 8259 đ nó làm vi c ch đ ch .
ALE [O]: tín hi u cho phép ch t đ a ch t i các chân d năkênhăđ a ch - d
li u AD0 - AD7.
1.5 Bi uăđ ăth iăgianăc aăcácăl nhăghi/đ c
Hình 4-6 và Hình 4-7 là các bi uă đ th i gian đưă đ că đ nă gi n hoá c a các tín
hi uăc ăb n trong CPU 8086 cho các l nhăghi/đ c b nh ho c thi t b ngo i vi.
M t chu kỳ ghi/đ c bìnhăth ng (còn g i là chu kỳ buýt) c a CPU kéo dài 4 chu kỳ
đ ng h . Các chu kỳ đ ng h đ căđánhăd u là T1, T2, T3 và T4. N u CPU làm vi c v i
83
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
tần s đ ng h 5MHz thì m t chu kỳ đ ng h kéo dài T=200ns và m t chu kỳ buýt kéo
dài 4*T=800ns.
Chúng ta mô t tóm t t các hi năt ng x y ra trong m t chu kỳ T nói trên.
Chu kỳ T1:
Trong chu kỳ nƠyă đ a ch c a b nh hay thi t b ngo iă viă đ că đ aă raă trênă cácă
đ ngăđ a ch , ho căđ a ch /d li uăvƠăđ a ch / tr ng thái. Các tín hi uăđi u khi n ALE,
DT/ R ,IO/ M cũng đ căđ aăraăđ giúp vi c hoàn t t vi c gi thôngătinăđ a ch này.
Chu kỳ T2:
Trongă chuă nƠyă CPUă đ aă raă cácă tínă hi uă đi u khi n RD ho c WR , DEN và tín
hi u d li u trên D0 - D7 n u là l nh ghi. DEN th ngădùngăđ m các b đ m c a buýt
d li u n uănh ăchúngăđ c dùng trong h . T i cu i kỳ T2 (và gi a m i chu kỳ T c a Tw,
n u có) CPU l y m u tín hi uăREADYăđ x lý trong chu kỳ ti p theo khi nó ph i làm
vi c v i b nh ho c thi t b ngo i vi ch m.
T1 T2 T3 T4
CLOCK
__
DT/R
ALE
AD15
A15 – A0 Rác Dữ liệu ngoài
- AD0
__
IO/M
____
RD
______
DEN
Xung đọc
Truy nhập
địa chỉ
Xác lập
Trễ địa dữ liệu
chỉ
84
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
T1 T2 T3 T4
CLOCK
__
DT/R
ALE
Độ rộng xung
ghi
2 xung nhịp
Trễ điều
Chờ dữ liệu khiển
Chu kỳ T3:
Trong chu kỳ này CPU dành th i gi cho b nh hay thi t b ngo i vi khi nh p d
li u. N u là chu kỳ đ c d li u thì t i cu i T3 CPU s l y m u tín hi u c a buýt d li u.
N u t i cu i chu kỳ đ ng h T2 (ho c gi a m i chu kỳ T c a Tw) mà CPU phát
hi n ra tín hi u READY=0 (do b nh hay thi t b ngo iăviăđ aăđ n) thì CPU t xen vào
sau T3 m t vài chu kỳ Tăđ t o chu kỳ đ i Tw = n*T nh m kéo dài th i gian th c hi n
l nh, t oăđi u ki n cho b nh ho c thi t b ngo iăviăcóăđ th i gian hoàn t t vi căghi/đ c
d li u.
Chu kỳ T4:
Trong chu kỳ này các tín hi u trên buýt đ căđ aăv tr ng thái b đ ng đ chuẩn b
cho chu kỳ buýt m i. Tín hi u WR trong khi chuy n tr ng thái t 0 lên 1 s kích ho t
đ ngăquáătrìnhăđ aăvƠoăb nh hay thi t b ngo i vi.
Trên các bi uăđ đ c ghi cũngăbi u di n các thông s quan tr ng v m t th i gian
liênăquanăđ n t căđ ho tăđ ng t i thi u cần thi t c a các b nh ho c thi t b ngo i vi
n u chúng mu n làm vi c v i CPU 5MHz.
Trong bi uăđ th iăgianăđ c (Hình 4-6) ta th y vi c truy nh p b nh kéo dài trong
kho ng th i gian t T1 - T3 (gần 3 chu kỳ đ ng h 3*T = 600 ms). Trong t ng s th i
85
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
gian này ph iătínhăđ n th i gian tr khi chuy năđ a ch ttr đ a ch = 110ns, th i gian gi c a
d li uăkhiăđ c tgi R = 30 ns và th i gian tr do vi c truy n tín hi u qua các m chăđ m
nhi u nh t là ttr đ m = 40ns. Nh ăv y các b nh n i v i 8086 - 5MHz cần ph i có th i
gian truy nh p nh h n:
3*T - ttr đ a ch - tgi R - ttr đ m = 600 - 110 - 30 - 40 = 420ns.
M t khác v i CPU 8086 5MHză thìă đ r ngă xungă đ c là TRD = 325ns, đóă lƠă th i
gianăđ dƠiăđ cho b nh v i th i gian truy nh p c 420ns làm vi c.
Trong bi uăđ th i gian ghi (Hình 4-7) ta th y ph i có m t th i gian gi d li u t i
thi uăđ ghi tgi W = 88ns sau khi WR đ t bi n t 0 lên 1. trong th c t th i gian này gần
nh ăb ngă0ăđ i v i b nh thông d ng. Đ dài c aăxungăghiăđ i v i CPU 8086 - 5MHz là
tWR = 340ns cũngălƠăphùăh p v i các b nh v i th i gian truy nh p c 450ns.
86
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
2.2.1 Ải i ỏểi Ố
M i m ch nh n i ghép v i CPU cần ph iă đ c CPU tham chi u chính xác khi
th c hi năcácăthaoătácăghi/đ c. Đi uăđóăcóănghĩaălƠăm i m ch nh ph iăđ c gán cho m t
vùng riêng bi tăcóăđ a ch xácăđ nh n mătrongăkhôngăgianăđ a ch t ng th c a b nh .
Vi căgánăđ a ch c th cho m ch nh đ c th c hi n nh m t xung ch n vi m ch l y t
m ch gi iă mưăđ a ch . Vi căphơnăđ nhăkhôngă gianăđ a ch t ng th thành các cùng nh
khácănhauăđ th c hi n nh ng ch cănĕngănh tăđ nh g i là phân vùng b nh . Vi c phân
vùng ô nh tùy thu c vào thi t k c a h vi x lý.
V nguyên t c m t b gi iămưăđ a ch khái quát th ng có c u t oănh ătrênăHình
4-9 d iăđơy. Đầu vào c a b gi i mã là các tín hi uăđ a ch và tín hi uăđi u khi n. Các
tín hi uăđ a ch g m các bít đ a ch có quan h nh tăđ nh v i các tín hi u ch n v đầu
ra.ăTh ng là các tín hi uăđ a ch t ngă ng v i d iăđ a ch c p cho vi m ch nh s sinh
ra tín hi u ch n v t ngă ng. Tín hi uăđi u khi năth ng là tín hi u IO/ M dùngăđ phân
bi tăđ iăt ng mà CPU ch n làm vi c là b nh hay thi t b vào/ra. M ch gi i mã là m t
trong nh ng khâu tĕngăthêm tr th i gian c a tín hi u t CPU t i b nh ho c thi t b
ngo i vi. Tuỳ theo quy mô c a m ch gi i mã mà ta có th có đầu ra m t hay nhi u tín
hi u ch n v .
88
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
89
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
90
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
F8 1111 1 0 0 0
F9 1111 1 0 0 1
FA 1111 1 0 1 0
91
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
FB 1111 1 0 1 1
FC 1111 1 1 0 0
FD 1111 1 1 0 1
FE 1111 1 1 1 0
FF 1111 1 1 1 1
92
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
A A A A A A A A O O O O O O O O
7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7
1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1
1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1
1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1
1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1
1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
Theo b ng trên, trong d iăđ a ch t F8H-FFH c a ROM ta ghi 8 giá tr sao cho tín
hi u d li uăđầu ra ch có duy nh t m t tín hi u m c th p còn t t c các tín hi u còn l i
đ u m c cao. Ngoài 8 ô nh này, t t c các ô nh khác c aăROMăđ uăđ căđi n giá tr
FFH.
93
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
94
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
3.2.1 Ải i ỏểi Ố
Vi c gi iă mưă đ a ch cho thi t b vƠo/raă cũngă gần gi ngă nh ă gi iă mưă đ a ch cho
m ch nh . Thôngăth ng các c ngăcóăđ a ch 8 bít t i A0-A7, trong m t s h vi x lý
khác các c ng có 16 bít t i A0 - A15. Tuỳ theoăđ dài c a toán h ng trong l nh là 8 hay
16 bít ta có 1 c ng 8 bít cóăđ a ch liênănhauăđ t o nên t v iăđ dƠiăt ngă ng.
Các m ch gi iămưăđ năgi n có th t oăđ c t m ch lô-gícăđ năgi n nh ăsau:
95
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
3.2.2 CáẾ m Ếể Ế ỉỂ đ ỉ Ểi ỉ
Trong th c t có r t nhi u vi m ch t h p c v a có th đ c dùng làm c ng ph i
ghép v i b vi x lỦăđ vào/ra d li u. Các m chănƠyăth ngăđ c c u t o t các m ch
ch t 8 bít cóăđầu ra 3 tr ng thái (74LS373: kích theo m c;ă74LS374:ăkíchătheoăs n), các
m ch khu chă đ iă đ m 2 chi u 8 bít đầu ra 3 tr ng thái (74LS245). Chúngă đ c dùng
trong các ph iăghépăđ năgi năđ làm cho CPU và thi t b ngo i vi ho tăđ ngăt ngăthíchă
v i nhau, ví d nh ăđ đ m buýt ho c các m ch c ngăđ t o ra các tín hi u móc n i. . .
D iăđơyălƠăm t s ví d
96
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
4.1.1 Ải i ỏểi Ố
Vi m ch 8255A là thi t b giao ti p ngo i vi l pă trìnhă đ c (Programmable
Peripheral Interface-PPI) dùng cho h th ng máy tính Intel. Thi t b có th đ c l p
trình mà không cần thi t b logicăngoƠiăđ giao ti p v i thi t b ngo i vi.
98
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
Nhóm A
Điều
Cổng A
khiển
(8)
nhóm A
Nhóm A
Cổng C
(4)
Đệm
dữ liệu
Nhóm B
Cổng C
(4)
Lô-gíc Điều
điều khiển
khiển nhóm B Nhóm B
ghi/đọc Cổng B
(8)
99
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
Buýt dữ liệu
Đ uăvƠoă Đ uăraă
STB:ăKi mătraăđầuăvƠoă(m căth p) OBF:ăD ăli uăraăs năsƠngă(m căth p)
IBF:ăD ăli uăs năsƠngă(m căcao) ACK:ăNh năxongăd ăli uă(m căth p)
INTR:ăBáoăng tăCPUă(m căcao) INTR:ăBáoăng tăCPUă(m căcao)ă
Các tín hi uă đi u khi n c a hai c ng A và B l y t c ngă Că nh ă sau:
100
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
101
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
102
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
nƠyă cũngă đ că dùngă đ xác l p tr ng thái c a các tín hi uă đi u khi n trên c ng C khi
8255A ho t đ ng ch đ 1 ho c 2.
103
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
104
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
105
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
106
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
A0 RD WR Ch n ra
0 0 1 Thanhăghiăđ m d li u thu
0 1 0 Thanhăghiăđ m d li u phát
1 0 1 Thanh ghi tr ng thái
1 1 0 Thanhăghiăđi u khi n
Thanh ghi ch đ :
107
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
108
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
Giá tr trên các bít thanh ghi này cho ta bi t tình tr ng ho tăđ ng c a 8251A
109
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
110
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA
111
Cả NẢ 6. CÁC B VI ĐI U KảI N
1. GI IăTHI U
112
Cả NẢ 6. CÁC B VI ĐI U KảI N
113
Cả NẢ 6. CÁC B VI ĐI U KảI N
Các m ch k t n i trong Hình 4-17 và Hình 4-18 là các ví d tiêu bi uăchoăph ngă
pháp vào/ra l p trình. V i bàn phím, CPU liên t c ki m tra tr ng thái các phím và n u có
phímăđ c b m CPU s đ c thông tin trên c ngăvƠoăđ xácăđ nhăphímă nƠoăđ c b m.
V i b hi n th LED, CPU liên t căđ aăd li u ra các c ngăraăđ thi t b có th hi n th
các thông tin.
Khi s l ng các thi t b vƠo/raătĕngălênăthìăth i gian dành cho vi c xácăđ nh tr ng
thái c a thi t b vƠo/raăcũngătĕngălênănhanhăchóngănh ătrongăHình 5-1. CPU ki m tra lần
l t các thi t b đ phát hi n tr ng thái s năsƠngătraoăđ i d li u c a t ng thi t b và th c
hi n các l nhătraoăđ i d li u. Các thi t b đ c ki mătraăthĕmădòătheoătr t t ng u nhiên
ho c theo m că đ uă tiênă c a các thi t b . Cách th că nƠyă dùă đ nă gi n song có nh c
đi m là th i gian quét tr ng thái c a các thi t b chi m tỷ tr ng r tăđángăk trong su t quá
trình vào/ra nh t là khi các thi t b ch aăcóăd li uăđ traoăđ i.
3. VÀO/RAăB NGăNG T
3.1 Gi iăthi u
Nh căđi m c a vào/ra thĕmădò là máy tính cần ki m tra bít tr ng thái b ng cách
ch . V i các thi t b ch m, vi c ch làm gi m kh nĕngăx lý d li u khác c a máy tính.
Kỹ thu t ng t cho phép gi i quy t v năđ này.
V i vào/ra b ng ng t, thi t b kh iăx ng vi cătraoăđ i vào/ra. Thi t b đ c n i
v i chân tín hi u ng t (INT) trên vi m ch c a vi x lý. Khi thi t b cầnătraoăđ i d li u,
thi t b sinh ra tín hi u ng t. Máy tính s hoàn thành câu l nh hi n th iăvƠăl uăn i dung
c a b đ măch ngătrìnhăvƠăcácăthanhăghiătr ng thái. Sauăđó, máy tính t đ ng n păđ a
ch c a ch ngă trìnhă ph c v ng tă vƠoă thanhă ghiă đ mă ch ngă trình. Ch ngă trìnhă nƠyă
th ngădoăng i dùng vi t và máy tính th c hi năch ngătrìnhănƠyăđ traoăđ i d li u v i
thi t b . Câu l nh cu i c aă ch ngă trìnhă nƠyă khôiă ph că thanhă ghiă đ mă ch ngă trìnhă b
d ng và thanh ghi tr ng thái c a vi x lý.
Vi x lỦăth ng cung c p m t hay nhi u tín hi u ng t trên vi m ch. Nh ăv y, đ x
lý các yêu cầu ng t t nhi u thi t b cầnă cóă c ă ch đ c bi t. Th ng có các cách sau:
thĕmădò và quay vòng. Thĕmădòăs d ng phần m m chung cho t t c các thi t b vì v y
làm gi m t căđ đápă ng ng t. Khi có tín hi u ng t phần m mă thĕmădòăki m tra tr ng
thái c a các thi t b theo th t uătiênăb tăđầu v i thi t b đ că uătiênăcaoănh t. Khi xác
đ nhăđ c thi t b yêu cầuătraoăđ i d li u, phần m măthĕmădòăchuy n quy năđi u khi n
cho phần m m ph c v ng t.
3.2 B ăx ălỦăng tă uătiên 8259
Trongătr ng h p có nhi u yêu cầu ng tăcheăđ c t bên ngoài ph i ph c v máy
tính th ng dùng vi m ch có s nă8259Aăđ gi i quy t v năđ uătiên. Vi m ch 8259A
114
Cả NẢ 6. CÁC B VI ĐI U KảI N
Thanh ghi IRR: ghi nh các yêu cầu ng t có t iăđầu vào IRi.
Thanh ghi ISR: ghi nh các yêu cầu ng tăđangăđ c ph c v trong s các
yêu cầu ng t IRi.
Thanh ghi IMR: ghi nh m t n ng tăđ i v i các yêu cầu ng t IRi.
Logicăđi u khi n: kh i này có nhi m v g i yêu cầu ng t t i INTR c a
8086 khi có tín hi u t i các chân IRi và nh n tr l i ch p nh n yêu cầu
ng t INTA t CPUăđ r iă đi u khi n vi căđ aăraăki u ng t trên buýt d
li u.
Đ m buýt d li u:ădùngăđ ph i ghép 8259A v i buýt d li u c a CPU
Logicăđi u khi năghi/đ c: dùng cho vi c ghi các t đi u khi năvƠăđ c các
t tr ng thái c a 8259A.
115
Cả NẢ 6. CÁC B VI ĐI U KảI N
116
Cả NẢ 6. CÁC B VI ĐI U KảI N
117
Cả NẢ 6. CÁC B VI ĐI U KảI N
Đ xácăđ nh các thanh ghi bên trong ta cần s d ng tín hi uăđ a ch A0 và th t ghi
đ ghi d li u cho các t đi u khi n. Ví d A0 = 0 là d u hi uăđ nh n bi t r ng ICW1
đ căđ aăvƠoăthanhăghiăcóăđ a ch ch n trong PIC, còn khi A0 = 1 thì các t đi u khi n
kh iăđầu ICW2, ICW3, ICW4 s đ căđ aăvƠoăcácăthanhăghiăcóăđ a ch lẻ trong m ch
PIC.
o ICW1
Bít D0 c a ICW1 quy tăđ nh 8259A s đ c n i v i h vi x lý nào. Đ làm vi c
v i h 16-32bít (h x86) thì ICW nh t thi t ph i có ICW4ă=ă0ă(vƠănh ăv y các bít c a
ICW4 s b xóa v 0). Các bít còn l i c aăICW1ăđ nh nghĩaăcáchăth cătácăđ ng c a xung
yêu cầu ng tă(tácăđ ngătheoăs n hay theo m c) t i các chân yêu cầu ng t IR c a m ch
8259A và vi c b trí các m ch 8259A khác trong h làm vi căđ nălẻ hay theo ch đ n i
tầng.
118
Cả NẢ 6. CÁC B VI ĐI U KảI N
o ICW2
T đi u khi n kh iăđầu này cho phép ch n ki u ng t (s hi u ng t) ng v i các
bít T3-T7ăchoăcácăđầu vào yêu cầu ng t. Các bít T0-T2ăđ c 8259A t đ ng gán giá tr
tùyă theoă đầu vào yêu cầu ng t c th IRi. Ví d n u ta mu nă cácă đầu vào c a m ch
8259A có ki u ng t là 40-47H ta ch cần ghi 40H vào các bít T3-T7. N uălƠmănh ăv y thì
IR0 s có ki u ng t là 40H, IR1 s có ki u ng t là 41H. . .
o ICW3
T đi u khi n kh iăđầu này ch dùngăđ n khi bít SNGL thu c t đi u khi n kh i
đầu ICW1 có giá tr 0, nghĩaălƠătrongăh có các m ch 8259A làm vi c ch đ n i tầng.
Chính vì v y t n t i 2 lo i ICW3: 1 cho m ch 8259A ch và 1 cho m ch 8259A th .
119
Cả NẢ 6. CÁC B VI ĐI U KảI N
ICW3 cho m ch ch : dùngăđ ch raăđầu vào yêu cầu ng t IRi nào c a nó có tín
hi u INT c a m ch th n i vào.
ICW3 cho m ch th : dùngălƠmăph ngăti năđ các m chănƠyăđ c nh n bi t. Vì
v y t đi u khi n kh iăđơùuănƠyăph i ch a mã s i ng v iăđầu vào Iri c a m ch ch mà
m ch th đưăchoăn i vào. M ch th s so sánh mã s này v i mã s nh năđ c CAS2-
CAS0. N u b ng nhau thì s hi u ng t s đ căđ aăraăbuýt khi có INTA.
o ICW4
T đi u khi n kh iăđầu này ch dùngăđ n khi trong t đi u khi n ICW1 có IC4 = 1
(cần thêm ICW4). Bít PM cho ta kh nĕngăch n lo i vi x lỦăđ làm vi c v i 8259A.
Bít PM = 1 cho phép các b vi x lý t 8086/88 ho c cao h n làm vi căv óiă8259A.
120
Cả NẢ 6. CÁC B VI ĐI U KảI N
OCW1ădùngăđ ghi giá tr c a các bít m t n vào thanh ghi m t n ng t IMR. Khi
m t bít m t n nào đóăc aăđ c l p thì yêu cầu ng tăt ngă ng v i m t n đóăs không
đ c 8259A nh n bi t n a (b che). T đi u khi n này ph iăđ căđ aăđ n 8259A ngay
sau khi ghi các ICW vào 8259A. Tình tr ng m t n ng t hi n t i có th đ căxácăđ nh
b ngăcáchăđ c IMR (xem trong th iăđi m hi n t i yêu cầu ng t nào b che)
121
Cả NẢ 6. CÁC B VI ĐI U KảI N
o OCW2
Các bít R. SL và EOI ph i h p vói nhau cho phép ch n ra các cách th c k t thúc
yêu cầu ng t khác nhau. M t vài cách th c yêu cầu ng tă cònătácăđ ng t i các yêu cầu
ng tăđ c ch đíchădanhăv i m că uătiênăđ c gi i mã hóa c a 3 bít L2, L1, L0. D iăđơyă
là các ch đ làm vi c c a 8259A.
Ch đ uătiênăc đ nh:
Đơyă lƠă ch đ làm vi c ngầmă đ nh c aă 8259Aă sauă khiă đ c n p các t đi u
khi n kh iăđầu. Trong ch đ này, cácăđầu vào IR7-IR0 đ c gán cho các m c
uătiênăc đ nh: IR0 đ c gán cho m că uătiênăcaoănh t còn IR7 m că uătiênă
th p nh t. M că uă tiênă nƠyă đ c gi khôngă thayă đ iă choă đ n khi ghi m ch
8259A b l pătrìnhăkhácăđiădoăOCW2.
Trong ch đ uătiênăc đ nh t i m t th i đi m ch có m t yêu cầu ng tăiăđ c
ph c v (bít ISRi = 1) lúc này t t c các yêu cầu khác v i m că uătiênăth păh nă
đ u b c m.
Ch đ quay m că uătiênă( uătiênăluơnăphiên) t đ ng:
ch đ này sau khi m t yêu cầu ng tăđ c ph c v xong, 8259A s xoá bít
t ngă ng c aănóătrongăthanhăghiăISRăvƠăgánăchoăđầu vào c a nó m că uătiênă
th p nh tăđ t oăđi u ki n cho các yêu cầu ng tăkhácăcóăc ăh i đ c ph c v .
122
Cả NẢ 6. CÁC B VI ĐI U KảI N
123
Cả NẢ 6. CÁC B VI ĐI U KảI N
Các thanh ghi IRR và ISR có th đ căđ c sau khi n p vào 8259A t đi u khi n
OCW3 v i bít RR = 1: bít RIS = 0 s choăphépăđ c IRR. Bít RIS = 1 s choăphépăđ c
ISR. D ng th c c a các thanh ghi này bi u di n trên hình d iăđơy.
124
Cả NẢ 6. CÁC B VI ĐI U KảI N
D7 D6 D5 D4 D3 D2 D1 D0
125
Cả NẢ 6. CÁC B VI ĐI U KảI N
4.2.1 TraỊ đ i Ế m ỏ m ỉỂ ế ệi Ố
Trong ch đ này CPU b treo trong su tăquáătrìnhătraoăđ i m ng d li u. Ch đ
nƠyăđ c dùng khi ta có nhu cầuătraoăđ i d li u v i đĩaăho căđ aăd li u ra hi n th .
Cácăb căđ chuy n m t m ng d li u t b nh ra thi t b ngo i vi:
1. CPU ph i ghi t đi u khi n và t ch đ làm vi căvƠoăDMACăđ quyăđ nh cách
th c làm vi c, đ a ch đầu c a m ng nh , đ dài c a m ng nh , . . .
2. Khi thi t b ngo i vi có yêu cầu trao đ i d li u, nóăđ aăDREQ =1ăđ n DMAC.
3. DMACăđ aăraătínăhi uăHRQăđ n chân HOLD c aăCPUăđ yêu cầu treo CPU. Tín
hi u HOLD ph i m căcaoăchoăđ n h tăquáătrìnhătraoăđ i d li u.
4. Nh năđ c yêu cầu treo, CPU k t thúc chu kỳ buýt hi n t i, sauăđó nó treo các
buýt c a mình vƠă đ aă raă tínă hi uă HLDAă báoă choă DMACă đ c toàn quy n s
d ng buýt.
5. DMACăđ aăraăxungăDACKăđ báo cho thi t b ngo i vi bi t là có th b tăđầu trao
đ i d li u.
6. DMAC b tăđầu chuy n d li u t b nh ra thi t b ngo i vi b ngăcáchăđ aăđ a
ch c aăbyteăđầu ra buýt đ a ch vƠăđ aăraătínăhi uăMEMR=Oăđ đ c m t byte t
b nh ra buýt d li u. ti păđóăDMACăđ aăraătínăhi uăIOWă=0ăđ ghiăđ aăd li u
ra thi t b ngo i vi. DMACă sauă đóă gi m b đ m s byte còn ph i chuy n, c p
nh tăđ a ch c a byte cần đ c ti p, và l p l iăcáăcăđ ng tác trên cho t i khi h t s
đ m (TC).
7. Quá trình DMA k t thúc, DMAC cho ra tín hi uăHRQ=0ăđ báo cho CPU bi tăđ
CPU dành l i quy năđi u khi n h th ng.
128
Cả NẢ 6. CÁC B VI ĐI U KảI N
4.3.1 Ải i ỏểi Ố
DMAC 8237A có th th c hi n truy n d li u theo 3 ki u: ki uăđ c (t b nh ra
thi t b ngo i vi), ki u ghi (t thi t b ngo iăviăđ n b nh ) và ki u ki m tra. Trong ch
đ truy n ki uăđ c thì d li uăđ căđ c t b nh r iăđ aăraăthi t b ngo i vi. Trong ch
đ truy n ki u ghi thì d li uă đ că đ c t thi t b ngo i vi r iă đ a vào b nh . Khi
8237A làm vi c ch đ ki mă traăthìătuyăđ a ch đ căđ aăđ n b nh nh ngăDMACă
không t oăraăcácăxungăđi u khi năđ ti năhƠnhăcácăthaoătácăghi/đ c b nh hay thi t b
ngo i vi.
Ngoài ra m ch 8237A còn h tr vi cătraoăđ i d li u gi a các vùng khác nhau c a
b nh vƠăcũngăch riêng trong ch đ làm vi c này, d li u cầnătraoăđ i m i ph i di qua
DMACănh ngăv i t căđ caoăh năkhiăđiăquaăCPUănh ngăv i t căđ caoăh năkhiăđiăquaă
CPUă(trongătr ng h p này ta có th đ căđ c d li uăđóătrongăthanh ghi t m).
S ă đ kh i c u trúc bên trong c a m ch 8237A -5ă đ c th hi n trên hình d i
đơy.
129
Cả NẢ 6. CÁC B VI ĐI U KảI N
130
Cả NẢ 6. CÁC B VI ĐI U KảI N
131
Cả NẢ 6. CÁC B VI ĐI U KảI N
132
Cả NẢ 6. CÁC B VI ĐI U KảI N
133
Cả NẢ 6. CÁC B VI ĐI U KảI N
Các bít c a thanh ghi này quy tă đ nhă cácă ph ngă th c làm vi c khác nhau c a
8237A. Ta s gi iăthíchăsauăđơyăỦănghĩaăc a các bít.
Bít D0 cho phép DMAC dùngă kênhă 0ă vƠă kênhă 1ă đ chuy n d li u gi a 2 vùng
nh . Đ a ch c a byte d li u vùngăđíchăđ c ch aătrongăthanhăghiăđ a ch c a kênh 1.
134
Cả NẢ 6. CÁC B VI ĐI U KảI N
S byte chuy năđ căđ trongăthanhăghiăđ m c a kênh 1. Byte cần chuy nălúcăđầuăđ c
đ c t vùng g c vào thanh ghi t măđ r i t đóănóăđ c g iăđ năvùngăđíchătrongăb c
ti p theo (ho tăđ ngănh ăl nhăMOVSBănh ngăv i t căđ cao).
Bít D1=1ădùngăđ cho phép kênh 0 gi nguyênăđ a ch trong ch đ truy n gi li u
gi a 2 vùng nh . Đi u này khi n cho toàn b các ô nh vùngăđích đ c n p cùng m t
byte d li u.
Bít D2 cho phép DMAC ho tăđ ng hay không.
Bít D3 quy tăđ nh byte cần chuy năđ c truy n v i 4 hayă2ăchuăkìăđ ng h .
Bít D4 cho phép ch n ch đ uă tiênă c đ nh (kênh 0 có m că uă tiênă caoă nh t.
Kênh 3 có m că uătiênăth p nh t) ho c ch đ uătiênăluơnăphiên (kênhă0ălúcăđầu có m c
uătiênăcaoănh t. SauăkhiăkênhănƠyăđ c ch năđ chuy n d li uăthìănóăđ c nh n m c
uătiênăth p nh t. Kênh 1 l i tr thành kênh có m că uătiênăcaoănh t)
Bít D5 cho phép ch n th iă giană ghibìnhă th ng hay kéo dài cho ti t b ngo i vi
ch m.
Các bít D6 và D7 cho phép ch n c c tính tích c c c a các xung DRQ0-DRQ4 và
DACK0- DACK4.
135
Cả NẢ 6. CÁC B VI ĐI U KảI N
Trong ch đ DMA theo yêu cầu. DMAC ti n hành chuy n d li uăchoăđ n khi có tín
hi u EOP t bên ngoài ho căchoăđ n khi không còn yêu cầu DMA n a (DREQ tr nên
không tích c c)
Trong ch đ DMA chuy n t ng byte, ch ng nào v n còn yêu cầu DMA (DREQ
v n là tích c c)ă thìă DMACă đ aă raă HRQ=0ă trongă th i gian 1 chu kì buýt sau m i lần
chuy n sang 1 byte. Sauăđóănóăl iăđ aăraăHRQ=1. C nh ăv y DMAC và CPU luân phiên
nhau s d ng buýt choăđ năkhiăđ m h t (TC).
Trong ch đ DMA chuy n c m ng, c m t m ng g m m t s byte b ng n i dung
b đ măđ c chuy n li n m t lúc. Chân yêu cầu chuy n d li u DREQ không cần ph i
gi đ c m c tích c c su t trong quá trình chuy n. Ch đ n i tầng đ c dùng khi có
nhi u b DMAC đ c dùng trong h th ngăđ m r ng s kênh có th yêu cầu DMA.
D7 D6 D5 D4 D3 D2 D1 D0
D7=1: Kênh 0 có yêu cầu D0=1:ăKênhă0ăđ t s đ m
D6=1: Kênh 1 có yêu cầu D1=1:ăKênhă1ăđ t s đ m
D5=1: Kênh 2 có yêu cầu D2=1:ăKênhă2ăđ t s đ m
D4=1: Kênh 3 có yêu cầu D3=1:ăKênhă3ăđ t s đ m
138
Cả NẢ 6. CÁC B VI ĐI U KảI N
OUT Lenh, AL
MOV AL, 0CH ; B m t n kênh 0,1
OUT MatNa, AL
MOV AL,4 ; Kênh 0 yêu cầu DMA
OUT YeuCau, AL
LAP: IN AL,TThai
TEST AL,2 ; Ki m tra b đ m kênh 1 xong?
JZ LAP
139
Cả NẢ 6. CÁC B VI ĐI U KảI N
140
Cả NẢ 6. CÁC B VI ĐI U KảI N
1.1 Gi iăthi u
H viăđi u khi n là m tămáyătínhătrongăđóăcácăviăm ch cần thi tăđ c b trí trên
m t vi m ch duy nh t. T t c cácămáyătínhăđi u có m t s đi măchungănh ăsau:
Đ năv x lý trung tâm (CPU) th c hi năcácăch ngătrình
B nh truy nh p ng u nhiên RAM ch a d li uăthayăđ i
B nh ch đ c ROM ch căcácăch ngătrình
Các thi t b vƠo/raăđ liên l c v i th gi iăbênăngoƠiănh ăbƠnăphím, mƠnăhìnhă…
H viăđi u khi n có th đ c mô t b ngăcácăđ cătr ng khác. N u m t máy tính có
cácăđ căđi măchungănh ăth thì chúng có th coiănh ălƠăh viăđi u khi n. H viăđi u khi n
có th :
đ c nhúng bên trong các thi t b khácă(th ng là các s n phẩmătiêuădùng)ăđ
ki m soát các ch cănĕngăhayăho tăđ ng c a s n phẩm. H viăđi u khi năcũngă
đ căcoiănh ăb đi u khi n nhúng;
ch dùng cho m t nhi m v và ch y m tăch ngătrìnhăxácăđ nh. Ch ngătrìnhă
nƠyăth ngăđ căl uătrongăROMăvƠăkhôngăthayăđ i;
là thi t b tiêu th đi n th p. B viăđi u khi n s d ng pin có th tiêu th ch 50
mA.
B viă đi u khi n có th nh nă đầu vào t thi t b vƠă đi u khi n thi t b này b ng
cách g i các tín hi u t i các b ph n khác nhau trong thi t b đ căđi u khi n. B viăđi u
khi năth ng nh và chi phí th p. B x lỦăđ c dùng trong m t b viăđi u khi n có th
thayăđ i r t nhi u. Trong nhi u s n phẩmănh ălòăviăsóng, yêu cầu v CPU khá th p và
s c ép v giá thành l i l n nên các nhà s n xu t l a ch n các vi m chă viă đi u khi n
chuyên d ng. Đóă lƠă cácă thi t b CPU nhúng, giá rẻ, tiêu th đi n th p. Các vi m ch
Motorola 6811 và Intel 8051 là các ví d tiêu bi u. Các vi m chăviăđi u khi n c p th p
th ng có s n 1KB ROM và 20 B RAM trên vi m ch cùng v i 8 tín hi u vào/ra.
1.2 Cácăki uăviăđi uăkhi n
H viăđi u khi n ch y u là 8 bít do kích c t này r t ph bi n v i phần l n các
công vi c mà các thi t b này cần ph i th c hi n. Đ dài t 8ăbítăđ căcoiălƠăđ cho hầu
h t các ng d ng và có l i th giao ti p v i các vi m ch nh cũngănh ălô-gíc hi n có.
C u trúc d li u ASCII n i ti păcũngăđ c b trí theo byte nên vi c truy n thông v i các
141
Cả NẢ 6. CÁC B VI ĐI U KảI N
142
Cả NẢ 6. CÁC B VI ĐI U KảI N
ROM 4K 8K -
B đ nh th i 2 3 2
Tín hi u vào/ra 32 32 32
C ng n i ti p 1 1 1
Ngu n ng t 6 8 6
2.1 S ăđ ăkh i
143
Cả NẢ 6. CÁC B VI ĐI U KảI N
Hình 6-1 cho th y kh i ch că nĕngă đ că tr ngă choă viă đi u khi nă đóă lƠ:ă ROMă vƠă
RAM, các c ng vào/ra, b đ nh th i và kênh thông tin n i ti p. Hình 6-2 cho bi tăs ăđ
tín hi u c a 8051, Ủănghĩaăcácătínăhi uăđ c gi i thích trong B ng 6-3.
Tín hi u ụănghĩa
144
Cả NẢ 6. CÁC B VI ĐI U KảI N
RD Đ c d li u b nh ngoài
RST Kh iăđ ng l i
Các tín hi u ng t c a 8051 có th chia thành 2 lo i bên trong và bên ngoài kh i
x ng. Khi ng t di n ra, ch ngă trìnhă đangă ch y s b d ngă vƠă ch ngă trìnhă ph c v
ng tăđ c kích ho t. Khi k t thúc, viăđi u khi n s quay tr l iăch ngătrìnhăb d ngănh ă
ch aăcóăgìăx y ra. Ng t x yăraăđ ng th iăđ c x lỦătheoăđ uătiên.
B đ nh th i hay b đ m là chu i m ch l tăthayă đ i tr ng thái theo t ng tín hi u
vào/ra. Hai b đ m T0, T1 có th đ c l p trình chia 256, 8192 hay 65536 và sinh ra các
tín hi u ng t khi k t thúc. Tín hi u này có th đ c phát hi n thông qua phần m m.
2.2 Các thanh ghi
Thanhăghiăđ măch ngătrìnhă(PC)ăvƠăconătr d li u (DPTR) là các thanh ghi 16 bít
choăphépăxácăđ nh v trí 1 ô nh . B nh ch ngătrìnhăn m trong d i 0000-FFFFh trong
145
Cả NẢ 6. CÁC B VI ĐI U KảI N
147
Cả NẢ 6. CÁC B VI ĐI U KảI N
148
Cả NẢ 6. CÁC B VI ĐI U KảI N
149
Cả NẢ 6. CÁC B VI ĐI U KảI N
150
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
151
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
Cácă thanhă ghiă đ u phẩyă đ ng x87FPU: bao g m 8 thanh ghi d li u, thanh ghi
đi u khi n, thanh ghi tr ng thái, thanh ghi l nh, thanh ghi con tr toán h ng, thẻ
và mã l nh. Các thanh ghi này cho phép th c hi n các phép toán v iăđ chính xác
kép m r ng hay v i s nguyên 8 byte.
Các thanh ghi MMX: bao g m 8 thanh ghi h tr c ăch th c hi n 1 l nh và nhi u
d li u v i các thao tác các s nguyên (1 byte, 2ăbyteăhayă4ăbyte)ăđ c x p vào
gói 64 bít.
Các thanh ghi XMM: h tr các thao tác s nguyên và s th căđ c x p vào các
gói 128 bít.
Các vi x lý th h sau h tr IA-32 áp d ngăcácătínhănĕngăth c thi l nh tiên ti n
cho phép th c hi năđ c nhi uăh nă1ăl nh trong 1 chu trình l nhănh ăkỹ thu tăđ ng ng,
siêuăvôăh ng, hay siêu phân lu ng. Các th h Pentium đầu tiên s d ng các vi ki n trúc
siêuăvôăh ng cho phép th c hi n 3 l nh trong m t chu kỳ xung nh p v iăcácăsiêuăđ ng
ngă12ăđo năvƠăc ăch th c thiăvôăh ng (out-of-order execution). Vi ki n trúc Netburst
trong Hình 7-1. Vi ki n trúc Netburst tĕngăc ngătínhănĕng ki n trúc Pentium th h đầu
b ng vi că tĕngă c ngă nĕngă l c c aă đ nă v x lý, nĕngă caoă hi uă nĕngă c a b đ m tích
h p, m r ng giao ti p buýt. Các vi x lý IA-32 th h m i còn h tr c ăch đaănhơnă
(multi-core) bên c nh ki n trúc siêu phân lu ng cho phép ch y nhi u ng d ngăđ ng th i.
Vi c k t h p hai ki nătrúcălƠmăchoăcácăch ngătrìnhă ng d ng có th s d ng 4 b vi x
lý lô-gíc trên 2 bô vi x lý v t lý. Bên c nhăđó, b x lý th h m i h tr công ngh o
hóa cho phép nhi u h đi u hành và ng d ng ch y trên các máy o khác nhau cùng chia
sẻ h th ng phần c ng.
152
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
153
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
B ng 7-1. Vi x lý h tr IA-32 th h đ u
Buýt d
Nĕmăs n T ns S thanh B nh
Vi x lý li u mở B đ m
xu t (MHz) ghi t iăđa
r ng
80386DX 1985 20 32GP 32 4GB
Intel 32GP
1989 25 32 4GB 8KB L1
486DX 80 FPU
32GP
Pentium 1993 60 64 4GB 16KB L1
80 FPU
16KB L1
Pentium 32GP
1995 200 64 64GB 256-
Pro 80 FPU
512KB L2
32GP 32KB L1
Pentium II 1997 266 80 FPU 64 64GB 256-
64 MMX 512KB L2
32GP
Pentium 80 FPU 32KB L1
1999 500 64 64GB
III 64 MMX 512KB L2
128 XMM
154
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
Bĕngă
S
Nĕmă Vi ki n T ns thông B nh B
Vi x lý thanh
s n xu t trúc (GHz) buýt h t iăđa đ m
ghi
th ng
32 GP
8KB
80 FPU
Pentium L1
2000 Netburst 1, 5 64 MMX 3, 2GB/s 64GB
4 256KB
128 L2
XMM
32 GP
8KB
Netburst, 80 FPU
Pentium L1
2002 Siêu phân 3, 06 64 MMX 4, 2GB/s 64GB
4 256KB
lu ng 128 L2
XMM
32 GP
64KB
80 FPU
Pentium Pentium L1
2003 1, 6 64 MMX 3, 2GB/s 64GB
M M 1MB
128 L2
XMM
32 GP
16KB
Pentium Netburst, 80 FPU
L1
4 2005 Siêu phân 3, 73 64 MMX 8, 5GB/s 64GB
Extreme lu ng 2MB
128 L2
XMM
32 GP
64KB
Pentium 80 FPU
Core 5, 3 L1
2006 M, Lõi 2, 16 64 MMX GB/s 4GB
Duo 2MB
kép 128 L2
XMM
32 GP
56KB
80 FPU
Atom Atom, o L1
2008 1, 86 64 MMX 4, 2GB/s 4GB
Z5xx hóa 512KB
128 L2
XMM
155
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
B ng 7-3. Vi x lý h tr IA-64
Bĕngă
Nĕmă T n
S thanh thông B nh B
Vi x lý s n Vi ki n trúc s
ghi buýt h t iăđa đ m
xu t (GHz)
th ng
32, 64 GP
Netburst, 16KB
80 FPU
Siêu phân L1
Xeon 2004 3, 6 64 MMX 6, 4GB/s 64GB
lu ng, IA- 1MB
64 128 L2
XMM
16KB
32, 64 GP
Netburst, L1
80 FPU
Siêu phân 1MB
Xeon 2005 3, 03 64 MMX 5, 3GB/s 1024GB
lu ng, IA- L2
64 128
8MB
XMM
L3
156
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
32, 64 GP 16KB
Netburst, L1
Dual- 80 FPU
Siêu phân 2MB
Core 2005 3 64 MMX 6, 4GB/s 64GB
lu ng, Đa L2
Xeon 128
nhân, IA-64 (T ng
XMM 4MB)
Netburst, 32, 64 GP
16KB
Siêu phân 80 FPU
Pentium L1
2005 lu ng, IA- 3, 8 64 MMX 6, 4GB/s 64GB
4 672 2MB
64, o hóa, 128 L2
Đaănhơn XMM
Netburst, 32, 64 GP
64KB
Core 2 Siêu phân 80 FPU
L1
Extreme 2006 lu ng, IA- 2, 93 64 MMX 8, 5GB/s 64GB
4MB
X6800 64, o hóa, 128 L2
Đaănhơn XMM
64KB
L1
Netburst, 32, 64 GP
1MB
Siêu phân 80 FPU
Xeon 12, 8 L2
2006 lu ng, IA- 3, 40 64 MMX 64GB
7140 GB/s (t ng
64, o hóa, 128 2MB)
Đaănhơn XMM
16MB
L3
157
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
32, 64 GP 56KB
Atom, IA- L1
80 FPU
64, o hóa, 12, 8 512KB
Atom 2008 1, 60 64 MMX 64GB
Đaănhơnă(4 GB/s L2
nhân) 128 (T ng
XMM 1MB)
Netburst, 64KB
32, 64 GP
Siêu phân L1
80 FPU
lu ng, IA- 6, 4 256KB
Core i7 2008 3, 20 64 MMX 64GB
64, o hóa, GT/s L2
Đaănhơnă(4 128
8MB
nhân) XMM
L3
158
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
Đ mă
S ă S ă Đ mă
Nĕmă d ă
T năs ă lu ng chân l nhă Đ măL2ă
Tên s nă li uă
MHz xăS ă tín L1 (k)
xu t L1
nhân hi u (k)
(k)
UltraSPARC IIi
333ậ480 1998 1×1 587 16 16 2048
(Sapphire-Red)
UltraSPARC IIe
400ậ500 1999 1×1 370 16 16 256
(Hummingbird)
UltraSPARC IIi
550ậ650 2000 1×1 370 16 16 512
(IIe+) (Phantom)
UltraSPARC III
600 2001 1×1 1368 64 32 8192
(Cheetah)
UltraSPARC
1002ậ1200 2001 1×1 1368 64 32 8192
III Cu (Cheetah+)
159
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N
UltraSPARC IIIi
1064ậ1593 2003 1×1 959 64 32 1024
(Jalapeño)
UltraSPARC IV
1050ậ1350 2004 1×2 1368 64 32 16384
(Jaguar)
UltraSPARC IV+
1500ậ2100 2005 1×2 1368 64 64 2048
(Panther)
UltraSPARC T1
1000ậ1400 2005 4×8 1933 8 16 3072
(Niagara)
UltraSPARC T2
1000ậ1600 2007 8×8 1831 8 16 4096
(Niagara 2)
UltraSPARC T2
Plus (Victoria 1200ậ1600 2008 8×8 1831 8 16 4096
Falls)
160
TÀI LI U TảAM Kả O
TÀIăLI UăTHAMăKH O
4. Hari BalaKrishnan & Samel Madden. The lecture notes on Computer Systems
Engineering, Open Courses Ware. Massachusets Institute of Technology.
161