Download as pdf or txt
Download as pdf or txt
You are on page 1of 161

H C VI N CÔNG NGH B UăCHệNHăVI N THÔNG

*****

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.ă

Ch ngă1 gi i thi u các khái ni m t ng quan c a h vi x lý và các b ph năcĕnă


b n c u thành h vi x lý nói chung. Ch ngănƠyă cũngă tóm t t quá trình phát tri n và
phân lo i các b vi x lỦăđ n nay.
Ch ngă2ătrìnhăbƠyăchiăti t v vi x lý Intel 8086 bao g măs ăđ kh i và cách t
ch c b nh . Ngoài ra, ch ngănƠyăgi i thi u t p l nh x86 và quá trình th c hi n l nh.
Ch ngă3ăcungăc p các ki n th căcĕnăb năđ l p trình v i vi x lý 8086 b ng cách
gi i thi u các c uătrúcăch ngătrìnhăvƠăcác c u trúc r nhánh và l p tiêu bi u k t h p v i
các ví d .

Ch ngă 4ă t p trung gi i thi u cách th c ghép n i vi x lý 8086 v i các thi t b


khácăđ t o thành h vi x lỦăcĕnăb n.ăCh ngănƠyătrìnhăbƠyăchuătrìnhăđ c/ghi c a vi x
lỦă8086.ăĐơyălƠăc ăs đ ti n hành ghép n i d li u v i các thi t b khácănh ăb nh hay
các thi t b vào/ra khác. Ch ngănƠyăgi i thi uăc ăch truy n thông n i ti p và cách th c
ghép n i v i vi x lý 8086.
Ch ngă5ăcungăc p các ki n th căcĕnăb n v các kỹ thu tătraoăđ i d li u v i các
thi t b ghép n i v i h vi x lý nói chung bao g măvƠo/raăthĕmădòă(l p trình), vào/ra s
d ng ng t và vào/ra tr c ti p b nh .ăTrongăbaăph ngăpháp,ăvƠo/raătr c ti p b nh cho
phépătraoăđ i kh iăl ng d li u l n v i t căđ cao và cần có vi m chăđ c bi t.ăCh ngă
nƠyăcũngăgi i thi u vi m ch tr giúpăchoăcácăph ngăphápăvƠoăraănh ăviăm chăđi u khi n
ng t, vi m chăđi u khi n vào ra tr c ti p b nh .
Ch ngă6ătrìnhăbƠyăs ăb các khái ni m v các h viăđi u khi n (hay h vi x lý
trên m t vi m ch).ăCh ngănày còn cung c păcácăthôngătinăcĕnăb n v h viăđi u khi n
Intel 8051 và m t s ng d ng.
Ch ngă 7,ă ch ngă cu i cùng, gi i thi u m t s b vi x lý tiên ti n c a Sun
Microsystems và Intel d a trên ki n trúc IA-32 và IA-64.

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

3.2.1 Chế độ địa chỉ thanh ghi ......................................................................... 30


3.2.2 Chế độ địa chỉ tức thì .............................................................................. 30
3.2.3 Chế độ địa chỉ trực tiếp........................................................................... 30
3.2.4 Chế độ gián tiếp qua thanh ghi ............................................................... 31
3.2.5 Chế độ địa chỉ tương đối cơ sở ............................................................... 31
3.2.6 Chế độ địa chỉ tương đối chỉ số cơ sở..................................................... 32
3.2.7 Phương pháp bỏ ngầm định thanh ghi đoạn........................................... 32
3.3 T p l nh c a 8086 ............................................................................................... 33
3.3.1 Các lệnh trao đổi dữ liệu. ....................................................................... 33
3.3.2 Các lệnh tính toán số học và lô gíc. ........................................................ 35
3.3.3 Điều khiển, rẽ nhánh và lặp. ................................................................... 38
3.3.4 Điều khiển vi xử lý. ................................................................................. 39
4. NG T VÀ X LÍ NG T TRONG 8086 ........................................................... 40
4.1 S cần thi t ph i ng t CPU ................................................................................. 40
4.2 Các lo i ng t trong h 8086 ................................................................................ 40
4.3 Đápă ng c a CPU khi có yêu cầu ng t ............................................................... 41
4.4 X lỦă uătiênăkhiăng t ......................................................................................... 43
Ch ngă3. L P TRÌNH H P NG V I 8086 ........................................................... 45
1. GI I THI U KHUNG C AăCH NGăTRỊNH H P NG ............................ 45
1.1 Cú pháp c aăch ngătrìnhăh p ng ..................................................................... 45
1.2 D li uăchoăch ngătrình .................................................................................... 46
1.2.1 Biến và hằng............................................................................................ 47
1.2.2 Khung của một chương trình hợp ngữ .................................................... 50
2. CÁCH T O VÀ CH YăCH NGăTRỊNHăH P NG ................................... 58
3. CÁC C U TRÚC L PăTRỊNHăC ăB N ......................................................... 59
3.1 C u trúc tuần t ................................................................................................... 60
3.1.1 Cấu trúc IF - THEN ................................................................................ 60
3.1.2 Cấu trúc IF - THEN - ELSE .................................................................... 61
3.1.3 Cấu trúc CASE ........................................................................................ 62
3.1.4 Cấu trúc lặp FOR - DO........................................................................... 63
3.1.5 Cấu trúc lặp WHILE - DO ...................................................................... 65
3.1.6 Cấu trúc lặp REPEAT - UNTIL .............................................................. 65

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

4.2.1 Mạch USART 8251A ............................................................................. 105


Ch ngă5. T NG QUAN V CỄCăPH NGăPHỄPăVÀOăRAăD LI U........... 112
1. GI I THI U ..................................................................................................... 112
2. VÀO/RA B NGăPH NGăPHÁPăTHĔMăDọ .............................................. 113
3. VÀO/RA B NG NG T ................................................................................... 114
3.1 Gi i thi u .......................................................................................................... 114
3.2 B x lý ng tă u tiên 8259 ............................................................................... 114
3.2.1 Các khối chức năng chính của 8259A .................................................. 115
3.2.2 Các tín hiệu của 8259A......................................................................... 116
3.2.3 Lập trình cho PIC 8259A...................................................................... 117
4. VÀO/RA B NG TRUY NH P TR C TI P B NH ................................. 126
4.1 Khái ni m v ph ngăphápătruyănh p tr c ti p vào b nh ............................. 126
4.2 Cácăph ngăphápătraoăđ i d li u ..................................................................... 128
4.2.1 Trao đổi cả một mảng dữ liệu ............................................................... 128
4.2.2 Treo CPU để trao đổi từng byte............................................................ 129
4.2.3 Tận dụng thời gian CPU không dùng buýt để trao đổi dữ liệu............. 129
4.3 B đi u khi n truy nh p tr c ti p vào b nh Intel 8237A .............................. 129
4.3.1 Giới thiệu .............................................................................................. 129
4.3.2 Các tín hiệu của 8237A -5..................................................................... 130
4.3.3 Các thanh ghi bên trong của DMAC 8237A......................................... 132
4.3.4 Các lệnh đặc biệt cho DMAC 8237A.................................................... 137
4.3.5 Lập trình cho các thanh ghi địa chỉ và thanh ghi số đếm:.................... 137
Ch ngă6. CÁC B VIăĐI U KHI N ...................................................................... 141
1. GI I THI U V VIăĐI U KHI N VÀ CÁC H NHÚNG ............................ 141
1.1 Gi i thi u .......................................................................................................... 141
1.2 Các ki u vi đi u khi n ...................................................................................... 141
2. H VIăĐI U KHI N Intel 8051 ...................................................................... 142
2.1 S ăđ kh i ......................................................................................................... 143
2.2 Các thanh ghi .................................................................................................... 145
2.3 T p l nh ............................................................................................................ 146
3. GI I THI U M T S NG D NG TIÊU BI U C AăVIăĐI U KHI N ... 147

8
M CL C

3.1 Chuy năđ i s t ngăt (D/A) .......................................................................... 147


3.2 Chuy năđ iăt ngăt s (A/D) .......................................................................... 148
Ch ngă7. GI I THI U M T S VI X LÍ TIÊN TI N ..................................... 151
1. CÁC VI X LÍ TIÊN TI N D A TRÊN KI N TRÚC INTEL IA-32 .......... 151
1.1 Gi i thi u IA-32 ................................................................................................ 151
1.2 Các vi x lý h tr IA-32 .................................................................................. 154
2. CÁC VI X LÍ TIÊN TI N D A TRÊN KI N TRÚC INTEL IA-64 .......... 156
3. CÁC VI X LÍ TIÊN TI N C A SUN MICROSYSTEMS .......................... 158
TÀI LI U THAM KH O ............................................................................................ 161

9
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ

Ch ngă1. T NGăQUANăV ăVIăX ăLụăVÀăH ăVIăX ăLụ

1. GI IăTHI UăV ăVIăX LÍ

M t máy tính thôngă th ng bao g m các kh i ch cănĕngăc ăb nănh :ăkh i x lí


trung tâm CPU (Central Processing Unit), b nh , và kh i ph i ghép v i thi t b ngo i vi
(I/O, input/output). Tuỳ theoăquyămô,ăđ ph c t p hi uănĕngăc a các kh i ch cănĕngăk
trênămƠăng iătaăphơnăcácămáyătínhăđi n t đưăvƠăđangăs d ng ra thành các lo i sau:
Máy tính l n (Mainframe) là lo iămáyătínhăđ c thi t k đ gi i các bài toán l n
v i t căđ nhanh.ăMáyătínhănƠyăth ng làm vi c v i s li u t 64 bít ho c l năh năn a và
đ c trang b nhi u b x lý t căđ cao và b nh r t l n. Chính vì v yămáyătínhăcũngă
l n v kíchăth c v tălỦ.ăChúngăth ngăđ cădùngăđ tínhătoánăđi u khi n các h th ng
thi t b dùng trong quân s ho c các h th ng máy móc c aăch ngătrìnhănghiênăc uăvũă
tr ,ă đ x lỦă cácă thôngă tină trongă ngƠnhă ngơnă hƠng,ă ngƠnhă khíă t ng, các công ty b o
hi m...
Máy tính con (Minicomputer) là m t d ng thu nh v kíchăth căcũngănh ăv tính
nĕngăc a máy tính l n.ăNóăraăđ i nh m tho mãn các nhu cầu s d ng máy tính cho các
ng d ng v a ph i mà n u dùng máy tính l năvƠoăđóăthìăs gây lãng phí. Máy tính con
th ngăđ c dùng cho các tính toán khoa h c kỹ thu t, gia công d li u quy mô nh hay
đ đi u khi n quy trình công ngh .
Máy vi tính (Microcomputer) là lo i máy tính r t thông d ng hi n nay. M t máy vi
tính có th là m t b viăđi u khi n (microcontroller), m t máy vi tính trong m t vi m ch
(one-chip microcomputer), và m t h vi x lí có kh nĕngălƠmăvi c v i s li uăcóăđ dài
1 bít, 4 bít, 8 bít, 16 bít ho c l năh n.ăHi n nay m t s máyăviătínhăcóătínhănĕngăcóăth so
sánhăđ c v i máy tính con, làm vi c v i s li uăcóăđ dài t là 32 bít (th m chí là 64
bít). Ranh gi iă đ phân chia gi a máy vi tính và máy tính con chính vì th ngày càng
không rõ nét.
Các b vi x lý hi n có tên th tr ngăth ngăđ c x p theo các h ph thu c vào
các nhà s n xu t và chúng r tăđaăd ng v ch ng lo i. Các nhà s n xu t vi x lý n i ti ng
có th k t i Intel v i các s n phẩm x86, Motorola v i 680xx, Sun Microsystems v i
SPARC.ăTínhăđ n th iă đi m hi nănayăcácăch ngătrìnhăvi t cho t p l nh x86 c a Intel
chi m tỷ l ápăđ oătrongămôiătr ng máy vi tính.

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ý

Trongăs ăđ này ta th y rõ các kh i ch cănĕngăchínhăc a h vi x lý g m:


 Kh i x lý trung tâm (CPU)
 B nh bán d n (ROM-RAM)
 Kh i ph i ghép v i các thi t b ngo i vi (I/O)
11
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ

 Các buýt truy n thông tin.


Ba kh i ch cănĕngăđầu liên h v i nhau thông qua q păcácăđ ng dâyăđ truy n tín
hi u g i chung là Buýt hệ thống. Buýt h th ng bao g m 3 buýt thành phần ng v i các
tín hi uăđ a ch , d li uăvƠăđi u khi n ta có buýt địa chỉ, buýt dữ liệu và buýt điều khiển.
CPUăđóngăvaiătròăch đ o trong h vi x lỦ.ăĐơyălƠăm t m ch viăđi n t cóăđ tích
h p r t cao. Khi ho tăđ ng, CPU đọc mã lệnh đ căghiăd i d ng các bít 0 và bít 1 t b
nh ,ăsauăđó s giải mã các l nhănƠyăthƠnhăcácădưyăxungăđi u khi n ng v i các thao tác
trong l nhăđ đi u khi n các kh i khác thực hiện t ngăb c cácăthaoătácăđó.ăĐ lƠmăđ c
vi cănƠyăbênătrongăCPUăcóăthanhăghiădùngăđ ch aăđ a ch c a l nh s p th c hi n g i là
thanh ghi con trỏ lệnh (Instruction Pointer, IP) ho c bộ đếm chương trình (Program
Counter, PC), m t s thanhă ghiă đaă nĕngă khácă cùngă bộ tính toán số học và lô-gíc
(Arithmetic Logic Unit ALU) đ thao tác v i d li u. Ngoài ra đơyăcònăcóăcácăh th ng
m chăđi n t r t ph c t păđ giải mã lệnh và t đóăt oăraăcácăxungăđi u khi n cho toàn
h .
Bộ nhớ bán dẫn hay còn g i là bộ nhớ trong là m t b ph n khác r t quan tr ng
c a h vi x lý. T iăđơyătaăcóăth l u ch ngătrìnhăđi u khi n ho tăđ ng c a toàn h đ
khi b tăđi n thì CPU có th l y l nh t đơyăđ kh iăđ ng h th ng. M t phần c aăch ngă
trìnhă đi u khi n h th ng,ă cácă ch ngă trìnhă ng d ng, d li u cùng các k t qu c a
ch ngătrìnhăth ngăđ c đ t trong RAM. Các d li uăvƠăch ngătrìnhămu năl uătr lâu
dài ho căcóădungăl ng l n s đ c đ t trong b nh ngoài.
Khối phối ghép vào/ra (I/O) t o ra kh nĕngăgiaoăti p gi a h vi x lý v i th gi i
bên ngoài. Các thi t b ngo iă viă nh ă bƠnă phím,ă chu t, màn hình, máy in, chuy nă đ i
s /t ngăt (D/A Converter, DAC) và chuy năđ iăt ngăt /s (A/D Converter, ADC),
đĩaăt .ă.ă.ăđ u liên h v i b vi x lý qua b ph n này. B ph n ph i ghép c th gi a
buýt h th ng v i th gi iăbênăngoƠiăth ngăđ c g i là cổng. Nh ăv y ta s có các cổng
vào đ l y thông tin t ngoài vào và các cổng ra đ đ aăthôngătinăt trong ra. Tùy theo
nhu cầu c th c a công vi c, các m ch c ng này có th đ c xây d ng t các m ch
lôgicăđ năgi n ho c t các vi m ch chuyên d ng l pătrìnhăđ c.
Buýt địa chỉ (address bus) th ng có t 16,ă20,ă24,ă32ăhayă64ăđ ng dây song song
chuy n t i thông tin c aăcácăbítăđ a ch .ăKhiăđ c/ghi b nh CPU s đ aăraătrênăbuỦtănƠyă
đ a ch c a ô nh liên quan. Khả năng phân biệt địa chỉ (s l ngăđ a ch cho ô nh mà
CPU có qu nălỦăđ c) ph thu c vào s bít c aăbuỦtăđ a ch . Ví d n u m t CPU có s
đ ngădơyăđ a ch là N=16 thì nó có kh nĕngăđ a ch hóaăđ c 2N = 65536 =64 kilô ô
nh khác nhau (1K= 210 =1024).ăKhiăđ c/ghi v i c ngăvƠo/raăCPUăcũngăđ aăraătrênăbuỦtă
đ a ch cácăbítăđ a ch t ngă ng c a c ng.ăTrênăs ăđ kh i ta d nh n ra tính một chiều
của buýt địa chỉ qua m t chi u c aămũiătên.ăCh có CPU m i có kh nĕngăđ aăraăđ a ch
trênăbuỦtăđ a ch .

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Í

ii. B đ mă ch ngă trình:ă ch aă đ a ch c a l nh hay mã th c thi (op-code). Thông


th ng, thanh ghi này ch aăđ a ch c a câu l nh k . ThanhăghiănƠyăcóăđ căđi m
sau:
1. Khi kh iăđ ng l i, đ a ch c a l nhăđầuătiênăđ c th c hi năđ c n p vào
thanh ghi này.
2. Đ th c hi n l nh, vi x lý n p n i dung c a b đ mă ch ngă trìnhă vƠoă
buỦtăđ a ch vƠăđ c ô nh đ a ch đó. Giá tr c a b đ măch ngătrìnhăt
đ ngătĕngătheoăb lô-gíc trong c a vi x lý. Nh ăv y, vi x lý th c hi n
các l nh tuần t tr phiăch ngătrìnhăcóăcácăl nhălƠmăthayăđ i tr t t tính
toán.
3. Kích c c a b đ măch ngătrìnhăph thu c vào kích c c aăbuỦtăđ a ch .
4. Nhi u l nhălƠmăthayăđ i n i dung c a thanh ghi này so v i trình t thông
th ng. Khiăđó, giá tr c aăthanhăghiăđ c xácăđ nhăthôngăquaăđ a ch ch
đ nh trong các l nh này.

Các thanh ghi


Đ năv s h c và
lô-gíc ALU Thanh ghi l nh
Buýt d li u

Thanhăghiăđ a ch

Thanh ghi t m

Đ năv đi u khi n
CU

Hình 1-2.ăS ăđ kh i ch cănĕngăviăx lý

iii. Thanhăghiăđ a ch b nh : ch aăđ a ch c a d li u. Vi x lý s d ngăcácăđ a ch


nƠyănh ălƠăcácăconătr tr c ti p t i b nh . Giá tr c aăcácăđ a ch này chính là d
li u đangăđ cătraoăđ i và x lý.

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.2 Đ ỉ ố x ệý s ểọẾ ốỢ ệô-gíc ALU


ALU th c hi n t t c các thao tác x lý d li u bên trong vi x lỦănh ălƠăcácăphépă
toán lô-gíc, s h c. Kích c ALUăt ngă ng v i kích c t c a vi x lý. Vi x lý 32 bít
s có ALU 32 bít. M t vài ch cănĕngătiêuăbi u c a ALU:
1. C ng nh phân và các phép lô-gíc
2. Tính s bù m t c a d li u
3. D ch ho c quay trái ph i các thanh ghi dùng chung.

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), …

3.1.3.a Thực hiện chương trình


Đ ch yă ch ngă trình, vi x lý th ng l p l iă cácă b c sau đ hoàn thành t ng
l nh:
1. N p (Fetch). Vi x lý n pă(đ c) l nh t b nh chính vào thanh ghi l nh
2. Gi i mã (Decode). Vi x lý gi i mã hay d ch l nh nh đ nă v đi u khi n
CU. CU nh p n i dung c a thanh ghi l nh và gi iămưăđ xácăđ nh ki u l nh.
3. Th c hi n (Execute). Vi x lý th c hi n l nh nh CU. Đ hoàn thành nhi m
v , CU sinh ra m t chu i các tín hi uăđi u khi năt ngă ng v i l nh.
Quáă trìnhă trênă đ c l pă điă l p l iă choă đ n câu l nh cu i cùng c aă ch ngă trình.
Trong các vi x lý tiên ti n quá trình th c hi n l nhăđ c c i ti n cho phép nhi u l nh
đ c th c hi n xen k v i nhau. T c là, câu l nh k ti p s đ c th c hi n mà không cần

15
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ

ch câu l nh hi n th i k t thúc. Kỹ thu tătrênăđ c g i là kỹ thu tăđ ng ng (pipeline).


Vi c th c hi n xen k cho phép nâng cao t căđ th c hi n c a vi x lý và làm gi m th i
gian ch yăch ngătrình.

3.1.4 Ki ỉ ỏrúẾ ậISC ốỢ CISC


Có hai ki n ki n trúc vi x lý: máy tính v i t p l nh rút g n (Reduced Instruction
Set Computer-RISC) và máy tính v i t p l nh ph c t p (Complex Instruction Set
Computer-CISC). Vi x lý RISC nh n m nhă tínhă đ nă gi n và hi u qu . Các thi t k
RISC kh iăđầu v i t p l nh thi t y u và v aăđ . RISCătĕngăt căđ x lý b ng cách gi m
s chu kỳ đ ng h trên m t l nh. M căđíchăc aăRISCălƠătĕngăt căđ hi u d ng b ng cách
chuy n vi c th c hi năcácăthaoătácăkhôngăth ng xuyên vào phần m m còn các thao tác
ph bi n do phần c ng th c hi n. Nh ă v yă lƠmă tĕngă hi uă nĕngă c a máy tính. Cácă đ c
tr ngăcĕnăb n c a vi x lý ki u RISC:
1. Thi t k vi x lý RISC s d ngă đi u khi n c ng (hardwired control)
không ho c r t ít s d ng vi mã. T t c các l nhăRISCăcóăđ nh d ng c
đ nh vì v y vi c s d ng vi mã không cần thi t.
2. Vi x lý RISC x lý hầu h t các l nh trong m t chu kỳ.
3. T p l nh c a vi x lý RISC ch y u s d ng các l nh v i thanh ghi, n p
vƠăl u. T t c các l nh s h c và lô-gíc s d ng thanh ghi, còn các l nh
n păvƠăl uădùngăđ truy nh p b nh .
4. Các l nh có m tăđ nh d ng c đ nh và ít ch đ đ a ch .
5. Vi x lý RISC có m t s thanh ghi dùng chung.
6. Vi x lý RISC x lý m t vài l nhăđ ng th iăvƠăth ng áp d ng kỹ thu t
đ ng ng (pipeline).
Vi x lỦă RISCă th ng phù h p v i các ng d ng nhúng. Vi x lý hay b đi u
khi nănhúngăth ngăđ c nhúng trong h th ng ch . NghĩaălƠ, các thao tác c a các b
đi u khi n này th ngăđ c che d u kh i h th ng ch . ng d ngăđi u khi n tiêu bi u
cho ng d ng nhúng là h th ng t đ ngăhóaăvĕnăphòngănh ămáyăinălade, máyăđaăch c
nĕng. Vi x lỦăRISCăcũngăr t phù h p v i các ng d ngănh ăx lý nh, rô-b tăvƠăđ h a
nh có m c tiêu th đi n th p, th c thi nhanh chóng.
M t khác, vi x lý CISC bao g m s l ng l n các l nh và nhi u ch đ đ a ch mà
nhi u ki u r tăítăđ c s d ng. V i CISC hầu h t các l nhăđ u có th truy nh p b nh
trongăkhiă đóăRISCăch có các l nh n păvƠăl u. Do t p l nh ph c t p, CISC cầnăđ năv
đi u khi n ph c t păvƠăviăch ngătrình. Trongăkhiăđó, RISC s d ng b đi u khi n k t
n i c ngănênănhanhăh n. Ki n trúc CISC khó tri n khai kỹ thu tăđ ng ng.
uăđi m c aăCISCălƠăcácăch ngătrìnhăph c t p có th ch cần vài l nh v i vài chu
trình n p còn RISC cần m t s l ng l n các l nhă đ th c hi n cùng nhi m v . Tuy
16
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ

nhiên, RISC có th c i thi n hi uă nĕngă đángă k nh xung nh pă nhanhă h n, kỹ thu t


đ ng ng và t iă uă hóaă quáă trìnhă biênă d ch. Hi n nay, các vi x lý CISC s d ng
ph ngăphápălai, v i các l nhăđ năgi n CISC s d ng cách ti p c n c aăRISCăđ th c thi
xen k (kỹ thu tăđ ng ng) v i các câu l nh ph c t p s d ngăcácăviăch ngătrìnhăđ
đ m b oătínhăt ngăthích.
4. L CHăS ăPHỄTăTRI NăVÀăPHỂNăLO IăCỄCăB ă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-16s/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Í

4.3 Giaiăđo nă1978-1982


Các b vi x lý trong th h nƠyă cóă đ i di n là các b vi x lý 16 bít
8086/80186/80286 c a Intel ho c 86000/86010 c a Motorola. uăđi m h năhẳn so v i
các b vi x lý 8 bít th h tr c là các b vi x lý 16 bít có t p l nhăđaăd ng v i các l nh
nhân, l nh chia và các l nh thao tác v i chu i kí t . Kh nĕngăphơnăbi tăđ a ch cho b
nh ho c cho thi t b ngo i vi c a các vi x lý th h nƠyăcũngăl năh nă(t 1MBăđ n 16
MB cho b nh và t i 64Kăđ a ch cho thi t b ngo iăviăđ i v i h Intel). ĐơyălƠăcácăb vi
x lý đ c dùng trong các máy IBM PC, PC/XT, PC/AT và các máy Macintosh c a
Apple. Phần l n các b vi x lý trong th h nƠyă đ uă đ c s n xu t b ng công ngh
HMOSăvƠăchoăphépăđ tăđ c t căđ t 0, 1-1s/l nh v i tần s đ ng h fclk =5-10 MHz.
4.4 Giaiăđo nă1983-1999
Các b vi x lỦăđ i di n trong th h này là các vi x lý 32 bít 80386/80486 và 64
bít Pentium c a Intel g m có Pentium Pro v i thi t k b đ m trên cùng vi m ch x lý,
Pentium MMX v i các m r ng cho đaă ph ngă ti n, Pentium II, Pentium III. Hãng
Motorolaă cũngă đ aă ra các vi x lý 32 bít 68020/68030/68040 và các vi x lí 64 bít
68060/64. Đ căđi m c a các b vi x lý có s l ng transistor r t l n (t vài 3 tri uăđ n
trên 50 tri u transistor. Phần l n các b vi x lí m i th c hi n nhi uăh nă1 l nh trong m t
chu kỳ và tích h p đ năv x lí d u phẩyăđ ng FPU (Floating-Point Unit). Chúng có các
thanh ghi dùng chung 16-32 bít. Nhi u lo i có phân bi t các t p thanh nghi 32 bít
(register file) choă đ nă v nguyên IU (interger unit) và t p thanh ghi 32 bít cho FPU.
Chúng có b nh đ m bên trong m c 1 v iădungăl ng lên t i 64 KB. Đaăs b nh đ m
m că 1ă đ c phơnă đôi: dùng cho l nh (Instruction cache-Icache) và dùng cho d li u
(Data cache-Dcache). Các b vi x lí công ngh cao hi n nay (advanced
microprocessors)ăđưătho mãn các yêu cầu ch t o các máy tính l n và các siêu máy tính.
Các vi x lí th i này có buỦtăđ a ch đ u là 32 bít (phân bi t 4 GB b nh ) và có kh nĕngă
làm vi c v i bộ nhớ ảo. Ng iătaăcũngăápăd ngăcácăc ăch ho c các c uătrúcăđưăđ c s
d ng trong các máy tính l n vào các b vi x lí: c ăch xử lý xen kẽ liên tục dòng mã
lệnh (pipeline), bộ nhớ đệm (cache), bộ nhớ ảo. Các b vi x lỦănƠyăđ u có bộ quản lý bộ
nhớ (MMU). Chính nh các c i ti năđóămƠăcácăb vi x lý th h này có kh nĕngăc nh
tranhăđ c v i các máy tính nh trong r t nhi uălĩnhăv c ng d ng. Phần l n các b vi
x lý th h này đ uăđ c s n xu t b ng công ngh HCMOS.
Bên c nh các b vi x lý v nănĕngătruy n th ngăth ngăđ cădùngăđ xây d ng các
máy tính với tập lệnh phức tạp (complex instruction set computer, CISC)ăđưănóiă trên,
trong th iăgianănƠyăcũngăxu t hi n các b vi x lý c i ti nădùngăđ xây d ng các máy tính
với tập lệnh rút gọn (reduced instruction set computer, RISC) v i nhi uătínhănĕngăcóăth
so sánh v i các máy tính l n các th h tr c. ĐóălƠăcácăb vi x lý Alpha c a Digital,

18
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ

PowerPC c a t h p hãng Apple- Motorola- IBM... S raăđ i c a các vi x lý lo i RISC


chính là s b tăđầu cho m t th h khác trong l ch s phát tri n c a các th h vi x lý.
4.5 Giaiăđo n 2000-2006
Các vi x lý Intel trong th i gian này th hi năquanăđi m nâng cao hi uănĕngăc a
b vi x lý và h th ng máy tính b ng vi c nâng cao xung nh p. Phiên b n Intel Pentium
4ăđưătĕngăxungăh p t 1,5ăGHzănĕmă2000ăt iă3GHzăvƠoănĕmă2002. Vi ki n trúc tiêu bi u
cho các vi x lý này là Netburst v i kh nĕngănơngăcaoăxungănh p g p 4 lần xung nh p
c a h th ng. Ngoài ra, Intel gi i thi u công ngh siêu phân lu ngătĕngăhi uănĕng cho h
th ngăđaănhi măvƠăđaălu ng. V lô-gíc, cácăch ngătrìnhăphần m m có th s d ng 2 b
vi x lý trên 1 b vi x lý v t lý.
Vi c nâng cao xung nh p nhanhă chóngă đẩy các b vi x lý t iă ng ng v t lý v
đi n và nhi tănĕngăt a ra. Th c t cho th yăđơyăkhôngăph iălƠăph ngăphápăhi u qu đ
tĕngăhi uănĕngăc a h th ng. Hãng AMD, m t trong nh ngăđ i th c nh tranh tr c ti p
c a Intel, nh n m nh vi cătĕngăhi uănĕngăquaăvi c nâng cao t căđ th c hi n các l nh
trong m t chu kỳ máy. AMD là m t trong nh ngăhưngăđầu tiên tích h p nhi u b gi i mã
và b đi u khi n b nh vƠoăbênătrongăđ năv x lý trung tâm CPU, b nh đ m m c 1
l n t i 128KB. Các b vi x lý Athlon 64, Opteron là b vi x lý tiêu bi u c a AMD, có
t căđ xung nh p th păh nănh ăhi uănĕngăthìăkhôngăh thua kém Intel. Đ c bi t v tiêu
th đi n và m c t a nhi t thì t tăh năhẳn Intel nh có các công ngh ki m soát tiêu th
đi n.
Trongăgiaiăđo nănƠyăcũngăch ng ki n s bùng n v vi c phát tri n b vi x lý cho
các máy tính xách tay. Yêu cầu r t quan tr ng v i thi t b này là hi uănĕngăx lỦăđ m nh
nh ngăm c tiêu th đi n ph iăđ th păđ máy tính có th ho tăđ ng lâu dài b ng pin. Các
b vi x lỦădiăđ ng c aăIntelăPentiumăMobileăđưătri n khai các gi i pháp dung hòa hai
yêu cầu trên b ng các nâng cao kh nĕngăx lý l nh trên 1 chu kỳ xung nh p, nâng cao b
đ m m c 2 lên 1MB, ki m soát xung nh p vi x lý (Speedstep) theo yêu cầu c a ng
d ng. B vi x lỦă diă đ ngă đầu tiên ho tă đ ng tần s 1,6GHz có th gi m xu ng t i
200MHz khi r i có hi uănĕngăngangăng a v i Pentium 4 tần s trên 2GHz.
M t s ki n quan tr ngătrongăgiaiăđo n này là s raăđ i c a các b vi x lý 2 nhân
cho các máy vi tính. Các h th ngăđaăx lý tr c kia ch có trong môi tr ng máy ch
ho c máy tr m hi uănĕngăcao. Nĕmă2005ăIntelăđ aăraăviăx lỦăđaănhơnăđầu tiên Pentium
D v i hai vi x lý riêng bi t trên cùng m t vi m ch. Ngayăsauăđó, AMDăcũngăđ aăraăviă
x lỦă đaă nhơnă c a mình Athlon×2. Th c t cho th y thi t k c a AMD mang l i hi u
nĕngăt tăh năsoăv i Intel.

19
Cả NẢ 1. T NẢ ẬUAN V VI X LÍ VÀ ả VI X LÍ

4.6 Giaiăđo nă2007-nay


Giaiăđo n này ti p t c ch ng ki n s giaătĕngăs nhân bên trong b vi x lý gi a
các hãng s n xu t vi x lỦănh ăIntelăvƠăAMD. Ngoài ra các yêu cầu v tiêu th đi n và
t a nhi t c a b vi x lỦăcũngăđ căquanătơmăh n. Intel c i ti n thi t k vi ki n trúc nhân
(Core micro-architecture) thay th Netburstă vƠă đ aă raă th h b vi x lý hai nhân m i
Core-2. B vi x lý này kh c ph căcácăđi m y u c a th h tr căđóăđ c bi t v t ngă
quan gi a hi uănĕngăvƠăm c tiêu th đi n. Nĕmă2006ăch ng ki n s ki n m iăIntelăđ aăraă
các b vi x lý v i b nănhơnăchoămôiătr ng máy ch Intel Xeon Quadcore 5355 và máy
vi tính Intel Core-2 Extreme QX6700. Vi c k t h p v i công ngh siêu phân lu ng trong
các b vi x lý Core i7 c a Intel cho phép nâng s vi x lý lô-gíc lên t i 8 cho các các
ch ngătrìnhă ng d ng.
Bên c nh các b vi x lý cho máy PC và máy ch , các hãng s n xu t vi x lỦăcũngă
phát tri n các dòng vi x lý nhúng cho các thi t b tính toán cá nhân. uăth c a các vi
x lý nhúng so v i vi x lý k trên là m c tiêu th đi nănĕng, nĕngăl c x lý và chi phí.
Intel cung c p các vi x lý nhúng Atom có kh nĕngăx lý b ng m t n a Pentium M
cùng xung nh p v i m c tiêu th đi n kho ng 3W. Ngoài vi x lý Intel Atom, trên th
tr ng còn có vi x lý ARM do hãng Acon phát tri n, VIA Nano c a hãng VIA. . .

20
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088

Ch ngă2. B ăX ăLụăINTEL 8086

1. C UăTRÚCăBểNăTRONGăC Aă8086

Intel 8086 là b vi x lý 16ăbítăđầu tiên c a Intel và là vi x lỦăđầu tiên h tr t p


l nh x86. Vi x lý đ c s d ng trong nhi uălĩnhăv c khác nhau, nh t là trong các máy
IBM PC/XT. Các b vi x lý thu c h này s cònăđ c s d ng r ng rãi trong th i gian
t i do tính k th a c a các s n phẩm trong h x86. Cácăch ngătrìnhăvi t cho 8086 v n
có th ch y trên các h th ng tiên ti n sau này.
1.1 S ăđ ăkh i

Hình 2-1.ăS ăđ kh i 8086

Trongăs ăđ kh i, vi x lý 8086 có hai kh i chính BIU và EU. V chi ti t, vi x


lý này bao g măcácăđ năv đi u khi n, s h c và lô-gíc,ăhƠngăđ i l nh và t p các thanh
ghi. Chi ti t các kh iăvƠăđ năv ch cănĕngănƠyăđ c trình bày trong phần sau.

21
Cả NẢ 2. BÔ X LÍ INTEL 8086

1.1.1 Đ ỉ ố ỂiaỊ ỏi ị ẽỐýỏ ốỢ ỏểựẾ ỏểi EU


Theoă s ă đ kh i trên Hình 2-1 CPU 8086 có 2 kh i chính: khối phối ghép BIU
(Bus Interface Unit) và khối thực hiện lệnh EU (Execution Unit). Vi c chia CPU ra thành
2 phần làm vi căđ ng th i có liên h v iănhauăquaăđ m l nhălƠmătĕngăđángăk t căđ x
lý c a CPU. Các buýt bên trong CPU có nhi m v chuy n t i tín hi u gi a các kh i.
Trong s cácăbuỦtăđóăcóăbuỦtăd li u 16 bít c a ALU, buýt các tín hi uăđi u khi n EU
và buýt trong c a h th ng BIU. Tr căkhiăđiăraăbuỦtăngoƠiăho căđi vào buýt trong c a
b vi x lý, các tín hi u truy nătrênăbuỦtăth ngăđ căchoăđiăquaăcácăb đ măđ nâng cao
tínhăt ngăthíchăchoăn i ghép ho c nâng cao ph i ghép.
BIUăđ aăraăđ a ch , đ c mã l nh t b nh , đ c/ghi d li u t vào c ng ho c b
nh . Nói cách khác BIU ch u trách nhi măđ aăđ a ch raăbuỦtăvƠătraoăđ i d li u v i buýt.
EU bao g m m t đơn vị điều khiển, kh i này có mạch giải mã lệnh. Mã l nh
đ c vào t b nh đ căđ aăđ năđầu vào c a b gi iămư,ăcácăthôngătinăthuăđ c t đầu ra
c a nó s đ căđ aăđ n m ch t oăxungăđi u khi n, k t qu lƠătaăthuăđ c các dãy xung
khácănhauătrênăkênhăđi u khi n (tuỳ theo mã l nh)ăđ đi u khi n ho tăđ ng c a các b
ph n bên trong và bên ngoài CPU. Ngoài ra, EU còn có khối số học và lôgic (Arithmetic
and Logic Unit - ALU)ădùngăđ th c hi n các thao tác khác nhau v i các toán h ng c a
l nh. Tóm l i, khi CPU ho tăđ ng EU s cung c p thông tin v đ a ch choăBIUăđ kh i
nƠyăđ c l nh và d li u, còn b năthơnănóăthìăđ c l nh và gi i mã l nh.
Trong BIU còn có m t bộ nhớ đệm lệnh v iădungăl ng 6 byteădùngăđ ch a các
mã l nh đ ch EU x lý (b đ m l nhănƠyăcònăđ c g i là hàng đợi lệnh).

1.1.2 Các thanh ghi

1.1.2.a Các thanh ghi đoạn


Thôngăth ng b nh c a ch ngătrìnhămáyătínhăđ căchiaălƠmăcácăđo n ph c v
các ch cănĕngăkhácănhauănh ăđo n ch a các câu l nh, ch a d li u. Trong th c t b vi
x lý 8086 cung c p các các thanh ghi 16 bít liênăquanăđ năđ a ch đầu c aăcácăđo n k
trênăvƠăchúngăđ c g i là các thanhăghiăđo n (Segment Registers) c th :
 Thanhăghiăđo n mã CS (Code-Segment)
 Thanhăghiăđo n d li u DS (Data Segment)
 Thanhăghiăđo năngĕnăx p SS (Stack Segment)
 Thanhăghiăđo n d li u ph ES (Extra Segment).
Cácăthanhăghiăđo n 16 bít này ch raăđ a ch đầu c a b năđo n trong b nh , dung
l ng l n nh t c a m iăđo n nh này là 64 KByte và t i m t th iăđi m nh tăđ nh b vi
x lý ch làm vi căđ c v i b năđo n nh 64 KByte này. Đ xácăđ nh chính xác v trí
22
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088

m t ô nh c aăch ngătrìnhăcácăthanhăghiăđo n s ph i ph i h p v iăcácăthanhăghiăđ c


bi t khác còn g i là các thanh ghi l ch hayăphơnăđo n (offset register). Chi ti tăđ c trình
bày phần 1.2.

1.1.2.b Các thanh ghi đa năng


Trong kh i EU có b nă thanhă ghiă đaă nĕngă 16ă bít AX, BX, CX, DX. Đi uă đ c
bi t là khi cần ch a các d li u 8 bít thì m i thanh ghi có th tách ra thành hai thanh ghi 8
bít cao và th păđ làm vi căđ c l p, đóălƠăcácăt p thanh ghi AH và AL, BH và BL, CH và
CL, DH và DL (trongăđóăHăch phần cao, L ch phần th p). M i thanh ghi có th dùng
m t cách v nănĕngăđ ch a các t p d li uăkhácănhauănh ngăcũngăcóăcôngăvi căđ c bi t
nh tăđ nh ch thao tác v i m tăvƠiăthanhăghiănƠoăđó. Chính vì v yăcácăthanhăghiăth ng
đ c gán cho nh ngăcáiătênăcóăỦănghĩa. C th :
 AX (accumulator): thanh ghiătíchălũy. Các k t qu c aăcácăthaoătácăth ng
đ c ch a đơyă (k t qu c a phép nhân, chia). N u k t qu là 8 bít thì
thanhăghiăALăđ c coi là thanh ghi ch a.
 BX (base):ăthanhăghiăc ăs th ng ch aăđ a ch c ăs c a m t b ng.
 CX (count): b đ m. CXăth ngăđ cădùngăđ ch a s lần l pătrongătr ng
h p các l nh LOOP (l p), còn CLă th ng cho ta s lần d ch ho c quay
trong các l nh d ch ho c quay thanh ghi.
 DX (data): thanh ghi d li u DX cùng BX tham gia các thao tác c a phép
nhân ho c chia các s 16 bít. DXăth ngădùngăđ ch aăđ a ch c a các c ng
trong các l nh vào/ ra d li u tr c ti p.

1.1.2.c Các thanh ghi con trỏ và chỉ số


Trong 8086 còn có ba thanh ghi con tr và hai thanh ghi ch s 16 bít. Các thanh
ghi này (tr IP) đ u có th đ cădùngănh ăcácăthanhăghiăđaănĕng, nh ngă ng d ng chính
c a m iăthanhăghiălƠăchúngăđ c ngầmăđ nhănh ălƠăthanhăghiăl chăchoăcácăđo năt ngă
ng. C th :
 IP: con tr l nh (Instruction Pointer). IP luôn tr vào l nh ti p theo s đ c
th c hi n n mătrongăđo n mã CS. Đ a ch đầyăđ c a l nh ti p theo này ng
v iăCS:IPăvƠăđ căxácăđ nh nh ătrìnhăbƠyătrongăphần 1.2.
 BP: con tr c ă s (Base Pointer). BP luôn tr vào m t d li u n m trong
đo năngĕnăx p SS. Đ a ch đầyăđ c a m t phần t trongăđo năngĕnăx p ng
v iăSS:BPăvƠăđ căxácăđ nh nh ătrìnhăbƠyătrongăphần 1.2.

23
Cả NẢ 2. BÔ X LÍ INTEL 8086

 SP: con tr ngĕnăx p (Stack Pointer). SP luôn tr vƠoăđ nh hi n th i c aăngĕnă


x p n mătrongăđo năngĕnăx p SS. Đ a ch đ nhăngĕnăx p ng v i SS:SP và
đ căxácăđ nh nh ătrìnhăbƠyătrongăphần 1.2.
 SI: ch s g c hay ngu n (Source Index). SI ch vào d li uă trongă đo n d
li uăDSămƠăđ a ch c th đầyăđ ng v iăDS:SIăvƠăđ căxácăđ nh nh ătrìnhă
bày trong phần 1.2.
 DI: ch s đíchă(Destination Index). DI ch vào d li uătrongăđo n d li u DS
mƠăđ a ch c th đầyăđ ng v iăDS:DIăvƠăđ căxácăđ nh nh ătrìnhăbƠyătrongă
phần 1.2.
Riêng trong các l nh thao tác v i d li u ki u chu i thì c p ES:DI luôn ng v i
đ a ch c a phần t thu c chu iăđíchăcònăc p DS:SI ng v iăđ a ch c a phần t thu c
chu i g c.

1.1.2.d Thanh ghi cờ FR (flag register)


ĐơyălƠăthanhăghiăkháăđ c bi t trong CPU, m i bít c aănóăđ cădùngăđ ph n ánh
m t tr ng thái nh tă đ nh c a k t qu phép toán do ALU th c hi n ho c m t tr ng thái
ho tăđ ng c a EU. D a vào các c nƠyăng i l p trình có th có các l nh thích h p ti p
theo cho b vi x lý (các l nh nh yăcóăđi u ki n). Thanh ghi c g m 16 bít nh ngăng i
ta ch dùng h t 9 bít c aănóăđ làm các bít c nh ăhìnhăv d iăđơy.

Hình 2-2. Thanh ghi c

 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

 S ho c SF (sign flag): c d u. SF = 1 khi k t qu âm.


 O ho c OF (Overflow Flag): cò tràn. OF = 1 khi k t qu là m t s bùă2ăv t
qua ngoài gi i h n bi u di n dành cho nó.
TrênăđơyălƠă6ăbít c tr ng thái ph n ánh các tr ng thái khác nhau c a k t sau m t
thaoătácănƠoăđó, trongăđóă5ăbít c đầu thu c byte th p c a thanh c là các c gi ngănh ă
c a b vi x lý 8 bít 8085 c a Intel. Chúngăđ c l p ho c xoá tuỳ theoăcácăđi u ki n c
th sau các thao tác c a ALU. Ngoài ra, b vi x lý 8086 còn có các c đi u khi n sau
đơyă(các c nƠyăđ c l p ho c xoá b ng các l nh riêng):
 T ho c TF (Trap Flag): c b y. TF = 1 thì CPU làm vi c ch đ ch y t ng
l nh (ch đ này dùng khi cần tìm l i trong m tăch ngătrình).
 I ho c IF (Interrupt Enable Flag): c cho phép ng t. IF = 1 thì CPU cho phép
các yêu cầu ng t (cheăđ c) đ cătácăđ ng.
 D ho c DF (Direction Flag): c h ng. DF = 1 khi CPU làm vi c v i chu i
ký t theo th t t ph i sang trái (vì v y D chính là c lùi)
1.2 Phơnăđo năb ănh ăc aă8086
Kh iăBIUăđ aăraătrênăbuỦtăđ a ch 20 bít đ a ch , nh ăv y 8086 có kh nĕngăphơnă
bi tăraăđ c 220 = 1.048.576 = 1M ô nh hay 1Mbyte, vì các b nh th ng t ch c theo
byte. Trong không gian 1Mbyte b nh cầnăđ c chia thành các vùng khác nhau (đi u
này r t có l i khi làm vi c ch đ nhi uăng i s d ng ho căđaănhi m) đ :
 Ch aămưăch ngătrình.
 Ch a d li u và k t qu không gian c aăch ngătrình.
 T o ra m t vùng nh đ c bi t g iălƠăngĕnăx p (stack) dùng vào vi c qu n lý
các thông s c a b vi x lý khi g iăch ngătrìnhăconăho c tr v t ch ngă
trình con.
Trong th c t b vi x lý 8086 có các thanh ghi 16 bít liênăquanăđ năđ a ch đầu c a
các vùng (cácă đo n) k trênă vƠă chúngă đ c g iă lƠă cácă thanhă ghiă đo n (Segment
Registers). Đóă lƠă thanhă ghiă đo n mã CS (Code-Segment), thanhă ghiă đo n d li u DS
(Data sement), thanhăghiăđo năngĕnăx p SS (Stack segment) vƠăthanhăghiăđo n d li u
ph ES (Extra segment). Cácăthanhăghiăđo n 16 bít này ch raăđ a ch đầu c a b năđo n
trong b nh , dungăl ng l n nh t c a m iă đo n nh này là 64 KByte và t i m t th i
đi m nh tăđ nh b vi x lý ch làm vi căđ c v i b năđo n nh 64 KByte này. Vi c thay
đ i giá tr c a các thanhăghiăđo nălƠmăchoăcácăđo n có th d ch chuy n linh ho t trong
ph m vi không gian 1 Mbyte. Vì v yăcácăđo n này có th n m cách nhau khi thông tin
cầnăl uăđòiăh iădungăl ngăđ 64 KByte ho căcũngăcóăth n m trùm nhau do có nh ng
đo n không cần dùng h tăđo n dài 64 KByte và vì v y nh ngăđo n khác có th b tăđầu

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

th c hi n (phần t  trên Hình 2-1).


đ a ch v tălỦăđ r iăđ căđ aălênăbuỦtăđ a ch . Vi c chuy năđ i này do m t b t oăđ a ch

Ví d : c p CS:IP s ch raăđ a ch c a l nh s p th c hi nătrongăđo n mã. T i


m t th iăđi m nào đóătaăcóăCSă=ăF00HăvƠăIPă=ăFFF0H thì
CS:IP~F000Hx16 + FFF0H = F000H + FFF0H = FFFF0H
Do t ch cănh ăv y nên d năđ n tínhăđaătr c aă cácăthanhă ghiă đo n và thanh ghi
l chătrongăđ a ch logic ng v i m tăđ a ch v t lý. T m t đ a ch v t lý ta có th t o ra
các giá tr khác nhau c aăthanhăghiăđo n và thanh ghi l ch
Ví d : Đ a ch v t lý 12345H có th đ c t o ra t các giá tr :
Thanhăghiăđo n Thanh ghi l ch
1000H 2345H
1200H 0345H
1004H 2305H

26
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088

2. B ăĐ NGăX ăLệăTOỄNăH C 8087

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.

Hình 2-3.ăS ăđ kh i 8087

Đ năv đi u khi n nh n và gi i mã l nh, đ c và ghi các toán h ng, ch y các l nh


đi u khi n riêng c a 8087. Doăđó, CU có th đ ng b v iăCPUătrongăkhiăNUăđangăth c
hi n các công vi c tính toán. CU bao g m b đi u khi n buýt, b đ m d li u và hàng
l nh.
Ngĕnăx p thanh ghi có t t c 8 thanh ghi t R0 - R7, m i thanh ghi dài 80 bít trong
đóăbít 79 là bít d u, bít 64 - 78 dùng cho s mũăvƠăphần còn l i là phầnăđ nh tr . D li u
truy n gi aăcácăthanhăghiănƠyăđ c th c hi n r tănhanhădoă8087ăcóăđ r ng buýt d li u
là 84 bít và không cần ph i bi năđ iăđ nh d ng. Ngay sau khi kh iăđ ng l i PC, b đ ng

27
Cả NẢ 2. BÔ X LÍ INTEL 8086

x lý ki mătraăxemănóăcóăđ c n i v i PC hay không b ngăcácăđ ng BHE /S7. B đ ng


x lý 8087 s đi u ch nhăđ dài c a hàng l nh cho phù h p v i CPU.

3. T PăL NHăC A 8086

3.1 Kháiăni măl nh, mưăhoáăl nhăvƠăquáătrìnhăth căhi năl nh


L nh c a b vi x lỦă đ c ghi b ng các ký t d i d ng g i nh (memonic) đ
ng i s d ngăđ nh n bi t. Đ i v i b n thân b vi x lý thì l nhăđ cămưăhoáăd i d ng
các s 0 và 1 (còn g i là mã máy) vìăđóălƠăd ng bi u di n thông tin duy nh t mà máy hi u
đ c. Do l nhăđ căchoăd i d ng mã nên sau khi nh n l nh, b vi x lý ph i th c hi n
vi c gi i mã l nh r iăsauăđóăm i th c hi n lênh.
M t l nh có th cóăđ dài m t vài byte tuỳ theo thi t k b vi x lý. S l ng các
bít n dùngăđ mã hóa vi l nh (opcode) cho bi t s l ng t iăđaăcácăl nh (2n) có trong b
vi x lý. V i 1 byte b vi x lý có th mưăhoáăđ c t iăđa 256 l nh. Trong th c t vi c
mã hoá l nh cho b vi x lý là r t ph c t p và b chi ph i b i nhi u y u t khác n a. Đ i
v i b vi x lý 8086 m t l nh có th cóăđ dài t 1ăđ n 6 byte. Ta s ch l yătr ng h p
l nh MOVăđ gi i thích cách ghi l nh nói chung c a 8086.
L nh MOV đích, gốc dùngăđ chuy n d li u gi a thanh ghi và ô nh . Ch nguyên
v i các thanh ghi c a 8086, n u ta lầnăl tăđ t các thanh ghi vào các v trí toán h ngăđíchă
và toán h ng g c ta th yăđưăph i cần t i r t nhi u mã l nhăkhácănhauăđ mã hoá t h p
các này.

Hình v trên bi u di n d ng th căcácăbyteădùngăđ mã hoá l nh MOV. Nh ăv y đ


mã hoá l nh MOV cần ít nh t là 2 byte, trongăđóă6ă bít c aăbyteăđầuădùngăđ ch a mã
l nh. Đ i v i các l nh MOV. Bít Wădùngăđ ch ra r ng 1 byte (W = 0) ho c 1 t (W = 1)
s đ c chuy n. Trong các thao tác chuy n d li u, m t toán h ng luôn b t bu c ph i là
thanh ghi. B vi x lý dùng 2 ho c 3 bít đ mưăhoáăcácăthanhăghiătrongăCPUănh ăsau:

28
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088

Bít Dădùngăđ ch h ngăđiăc a d li u. D = 1 thì d li uăđiăđ n thanh ghi cho b i


bít c a REG. 2 bít MOD (ch đ ) cùng v i 3 bít R/M (thanh ghi/b nh ) t o ra 5 bít dùng
đ ch ra ch đ đ a ch cho các toán h ng c a l nh.
B ng d iăđơy cho ta th y cách mã hoá các ch đ đ a ch (cách tìm ra các toán
h ng b ng các bít này).

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. Ch đ đ a ch tr c ti p (direct addressing mode).


4. Ch đ đ a ch gián ti p qua thanh ghi (register indirect addressing
mode).
5. Ch đ đ a ch t ngă đ iă c ă s (based indexed relative addressing
mode).
6. Ch đ đ a ch t ngăđ i ch s (indexed relative addressing mode).
7. Ch đ đ a ch t ngă đ i ch s c ă s (based indexed relative
addressing mode).

3.2.1 Cể đ đ a Ếể ỏểaỉể Ểểi


Trong ch đ đ a ch này, ng iătaădùngăcácăthanhăghiăbênătrongăCPUănh ălƠăcácă
toán h ngăđ ch a d li u cần thao tác. Vì v y khi th c hi n l nh có th đ t t căđ truy
nh păcaoăh n so v i các l nh có truy nh păđênăb nh .
Ví d 2-1
MOV BX, DX ; chuy n n i dung DX vào BX.
MOV DS, AX ; chuy n n i dung AX vào DX
ADD AL, DL ; c ng n i dung AL và DL r iăđ aăvƠo

3.2.2 Cể đ đ a Ếể ỏứẾ ỏểử


Trong ch đ đ a ch này, toán h ngăđíchălƠăm t thanh ghi hay m t ô nh , còn toán
h ng ngu n là m t h ng s và v trí c a toán h ng này ngay sau mã l nh. Ch đ đ a
ch này có th đ c dùng đ n p d li u cần thao tác vào b t kỳ thanh ghi nào (ngo i tr
cácăthanhăghiăđo n và thanh c ) ho c vào b t kỳ ô nh nƠoătrongăđo n d li u DS.
Ví d 2-2
MOV CL, 100 ; chuy n 100 vào CL.
MOV AX, 0FF0H ; chuy n 0FF0HăvƠoăAXăđ r iăđ a
MOV DS, AX ; vào DS (vì không th chuy ntr c ti p vào thanh ghi
đo n)
MOV (BX), 10 ; ch DS:BX.

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.4 Cể đ Ểiáỉ ỏi ị qỐa ỏểaỉể Ểểi


Trong ch đ đ a ch này m t toán h ng là m tăthanhăghiăđ c s d ngăđ ch aăđ a
ch l ch c a ô nh ch a d li u, còn toán h ng kia ch có th lƠăthanhăghiămƠăkhôngăđ c
là ô nh (8086 không cho phép tham chi u b nh 2 lầnăđ i v i m t l nh).
Ví d 2-4
MOV AL, (BX) ; chuy n ô nh cóăđ a ch DS:BX vào AL.
MOV (SI), CL ; chuy n CL vào ô nh cóăđ a ch DS:SI.
MOV (DI), AX ; chuy n AX vào 2 ô nh liên ti p t i DS:DI và DS: (DI + 1).

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

 Theoăcáchăđ nhănghĩaănƠyăthìăđ a ch hi u d ng c a m t phần t th BX


nƠoă đóă (k t 0) trong m ng Table (BX) thu că đo n DS là EA =
Table+BX và c a phần t đầu tiên là EA = Table.

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.

3.2.7 Pể ỉỂ ịểáị ẽ ỉỂầm đ ỉể ỏểaỉể Ểểi đỊ ỉ


Nh ătrongăcácăphầnătr căđưănói, cácăthanhăghiăđo n và thanh ghi l chăđ c ngầm
đ nhăđiăkèmăv i nhau t ng c pădùngăđ đ a ch hoá các toán h ng trong các vùng khác
nhau c a b nh . B ng 2-1 ch ra các c păđôiăngầmăđ nh c aăcácthanăghiăđo n và thanh
ghi l chăth ng dung. Vì tính ngầmăđ nh này nên trong các l nh ta ch cần vi t các thanh
ghi l chălƠăđ c ăs đ tínhăraăđ căđiaăch c a toán h ng.
Tuy nhiên, ngoài các t h p ngầmăđ nhăđưăk , 8086 còn cho phép ta làm vi c v i
các t h p ngầmăđ nhăđư k , 8086 còn cho phép ta làm vi c v i các t h p khác c a các
thanhăghiăđo n và thanh ghi l ch. Mu n lo i b các t h p ngầmăđ nh nói trên, trong khi
vi t l nh ph iăghiărõăthanhăghiăđo n s dùngăđ tínhăđ a ch .

B ng 2-1. Các c păthanhăghiăđo n và thanh ghi l ch ng m đ nh

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

MOV AL, ES:[BX]


Trongă đóă taă đưă dùngă ES: đ lo i b thanhă ghiă đo n ngầmă đ nhă DSă vƠă đ ch rõ
thanhăghiăđo n m i dùng trong l nh này bây gi là ES.
3.3 T păl nhăc aă8086
B x lý 8086 có t p l nh g m 111 l nh, chi u dài c a l nh t 1ăbyteăđ n vài byte.
T p l nh 8086 h tr các nhóm thaoătácăcĕnăb nănh ăd iăđơy.

3.3.1 CáẾ ệ ỉể ỏraỊ đ i ế ệi Ố.


Các câu l nhă trongă nhómă choă phépă traoă đ i d li u gi a thanh ghi và ô nh hay
gi a thi t b vào/ra v i ô nh ho c thanh ghi. Kích c d li u cho phép v i các câu l nh
này là byte (8 bít) ho c word (16 bít). Nh ăv y các câu l nhătraoăđ i d li u giúp n p d
li u cần thi t cho các thao tác tính toán c a vi x lý. Ngoài ra các l nh này choăphépăl uă
các k t qu tính toán ra b nh ho c các thi t b ngo i vi.

B ng 2-2. Các l nhătraoăđ i d li u

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

3.3.1.a MOV – Chuyển 1 byte hay word


Vi t l nh: MOVăĐích, G c.
Mô t : Đíchă G c
Trongăđóătoánăh ngăđíchăvƠăg c có th tìmăđ c theo các ch đ đ a ch khác nhau
nh ngăph iăcóăcùngăđ dƠiăvƠăkhôngăđ căphépăđ ng th i là 2 ô nh ho c 2 thanh ghi
đo n.
L nhănƠyăkhôngătácăđ ngăđ n các c .
Ví d :
MOV AL, 74H ; AL  74
MOV CL, BL ; CL  BL

33
Cả NẢ 2. BÔ X LÍ INTEL 8086

MOV DL, [SI] ; DL  [DS:SI]


MOV AL, Table [BX] ; AL [DS:(Table+BX)]

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

3.3.1.c IN- Đọc dữ liệu từ cổng vào thanh ghi ACC.


Viết lệnh: IN ACC, Port
Mô tả: ACC < - [Port]
Trongă đóă [Port ] là d li u c a c ngă cóă đ a ch là Port. Portă lƠă đ a ch 8 bít c a
c ng, nó có th có các giá tr trong kho ng 00H…FFH. Nh ăv y có th có các kh nĕngă
sau:
+N u ACC là AL thì d li u 8 bít đ căđ aăvƠoăt c ng Port.
+N u ACC là AX thì d li u 16 bít đ căđ aăvƠoăt c ng Port và c ng Port+1.
Đ a ch c ng có th đ căl uătrong thanh ghi DX. Cách này đ a ch c ng hoá
m m dẻoăh n. LúcănƠyăđ a ch c ng n m trong d i 0000H. . FFFFH và câu l nh có d ng:
IN ACC, DX
TrongăđóăDXăph iăđ c g n t tr c giá tr ng v iăđ a ch c ng. L nh này không
tácăđ ngăđ n các c .

34
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088

3.3.1.d OUT - Ghi dữ liệu từ Acc ra cổng)


Viết lệnh: OUT Port, Acc
Mô tả: Acc  [port]
Trongăđóă[port]là d li u c a c ngăcóăđ a ch là Port. PortălƠăđ a ch 8 bít c a c ng,
nó có th có các giá tr trong kho ng 00H. . . FFH. Nh ăv y ta có th có các kh nĕngă
sau:
+ N u Acc là AL thì d li u 8 bít đ căđ aăraăc ng port.
+ N u Acc là AX thì d li u 16 bít đ căđ aăraăc ng port và c ng port +1.
Có m tăcáchăkhácăđ bi u di năđ a ch c ng là thông qua thanh ghi DX theo d ng:
OUT DX, Acc
TrongăđóăDXăph iăđ c gán t tr c giá tr ng v iăđ a ch c ng. L nh này không
tácăđ ngăđ n các c .

3.3.2 CáẾ ệ ỉể ỏỬỉể ỏỊáỉ s ểọẾ ốỢ ệô ỂỬẾ.


ĐơyălƠăcácănhómăl nh th c hi n các tính toán ch y u c a vi x lý 8086.

B ng 2-3. Các l nh s h c và lô gíc

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

3.3.2.a ADD-Cộng 2 toán hạng


Viết lệnh: ADD Đích, Gốc.
Mô tả: Đích  Đích + Gốc.
Trongăđóătoánăh ngăđíchăvƠăg c có th tìmăđ c theo các ch đ đ a ch khác nhau.
Nh ngăph i ch a d li uăcóăcùngăđ dƠiă vƠăkhôngăđ căphépăđ ng th i là 2 ô nhó và
cũngăkhôngăđ călƠăthanhăghiăđo n. Có th tham kh o các ví d c a l nh ADC.
C p nh t: AF, CF, PF, SF, ZP

3.3.2.b MUL - Nhân số không dấu


Viết lệnh: MUL Gốc
Trongăđóătoánăh ng G c là s nhân và có th tìmăđ c theo các ch đ đ a ch khác
nhau.
Mô t : tuỳ theoăđ dài c a toán h ng G cătaăcóă2ătr ng h p t ch c phép nhân,
ch đ ngầmăđ nh cho s b nhân và k t qu :
N u G c là s 8 bít: AL  G c,
s b nhân ph i là s 8 bít đ trong AL.
sau khi nhân: AX  tích,
N u G c là s 16 bít: AX  G c,
s b nhân ph i là s 16 bít đ trong AX.
sau khi nhân: DXAX  tích.
N u byte cao (ho c 16 bít cao) c a 16 (ho c 32) bít k t qu ch a 0 thì CF=OF=0
Nh ăv y các c CF và OF cho bi t có th b điăbaoănhiêuăs 0 trong k t qu . Ví d :
N u cần nhân m t s 8 bít v i m t s 16 bít, s 16 bít đ t t i G c và s 8 bít AL. S 8
bít này AL cần ph iă đ c m r ng sang AH b ngăcáchă gánăAH=0ăđ làm cho s b
nhân n m trong AX. Sau cùng ch vi c dùng l nh MUL G c và k t qu có trong c p
DXAX.
C p nh t: CF, OF.
Khôngăxácăđ nh: AF, PF, SF, ZP.

3.3.2.c DIV – Chia 2 số không có dấu


Viết lệnh: DIV G c

36
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088

Trongăđóătoánăh ng G c là s chia và có th tìmăđ c theo các ch đ đ a ch khác


nhau.
Mô tả: tuỳ theoăđ dài c a toán h ng g cătaăcóă2ătr ng h p b trí phép chia. Các
ch đ ngầmăđ nh cho s b chia và k t qu :
 N u G c là s 8 bít: AX/G c. S b chia ph i là s không d u 16 bít đ
trong AX.
 N u G c là s 16 bít: DXAX/G c. S b chia ph i là s không d u 32 bít đ
trong c p thanh ghi DXAX.
 N uăth ngăkhôngăph i là s nguyênănóăđ c làm tròn theo s nguyên sát
đuôi.
 N u G c = 0 ho căth ngăthuăđ c l năh năFFHăho c FFFFH (tuỳ theoăđ
dài c a toán h ng G c) thì 8086 th c hi n l nh ng t INT 0.
Không xác định: AF, CF, OF, PF, SF, ZP.

3.3.2.d CMP- So sánh 2 byte hay 2 word


Viết lệnh: CMPăĐích, G c.
Mô tả: Đíchăậ G c.
Trongăđóătoánăh ngăđíchăvƠăg c có th tìmăđ c theo các ch đ đ a ch khác nhau.
Nh ngăph i ch a d li uăcóăcùngăđ dƠiăvƠăkhôngăđ căphépăđ ng th i là 2 ô nh .
L nh này ch t o các c , khôngăl uăk t qu so sánh, sau khi so sánh các toán h ng
không b thayăđ i. L nhănƠyăth ngăđ cădùngăđ t o c cho các l nh nh yăcóăđi u ki n
(nh y theo c ).
Các c chính theo quan h đíchăvƠăg c khi so sánh 2 s không d u:
CF ZF
Đíchă=ăG c 0 1
Đíchă>ăG c 0 1
Đíchă>ăG c 1 0
Cập nhật: AF, CF, OF, PF, SF, ZP.

3.3.2.e AND - Phép và 2 toán hạng


Viết lệnh: ANDăĐích, G c
Mô tả: Đích - Đích, G c.
Trongăđóătoánăh ngăđíchăvƠăg c có th tìmăđ c theo các ch đ đ a ch khác nhau.
Nh ngăph i ch a d li uăcùngăđ dƠiăvƠăkhôngăđ căphépăđ ng th i là 2 ô nh vƠăcũngă
khôngăđ călƠăthanhăghiăđo n. PhépăANDăth ngădùngăđ cheăđi/gi l i m t vài bít nào
37
Cả NẢ 2. BÔ X LÍ INTEL 8086

đóă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.

3.3.3 Đi Ố Ệểi ỉ, r ỉểáỉể ốỢ ệặị.


Các câu l nh thu cănhómănƠyăchoăphépăthayăđ i tr t t th c hi n các câu l nh bên
trongăch ngătrình.

B ng 2-4. Các l nh r nhánh và l p tiêu bi u

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 .

3.3.4 Đi Ố Ệểi ỉ ối x lý.


Các câu l nhănƠyătácăđ ng lên thanh ghi c lƠăthayăđ i tr ng thái ho tăđ ng c a vi
x lý.
B ng 2-5. Các l nh đi u khi n vi x lý tiêu bi u

Mã g i nh ChứẾ ỉăỉỂ

STC, CLC, CMC L p, xóa c nh

STD, CLD L p xóa c h ng

STI, CLI L p xóa c cho phép ng t

39
Cả NẢ 2. BÔ X LÍ INTEL 8086

PUSHF, POPF N p vào, l y ra thanh ghi c t i/t ngĕnăx p

NOP Không làm gì c

WAIT Ch tín hi u TEST

HLT Treo vi x lý

4. NG TăVÀăX ăLệăNG TăTRONG 8086

4.1 S ăc năthi tăph iăng tăCPU


Ng t là vi c t m d ng vi că ch ngă trìnhă đangă ch yă đ CPU có th ch y m t
ch ngătrìnhăkhácănh m x lý m t yêu cầuădoăbênăngoƠiăđ aăt i CPU nh ăyêuăcầu vào/ra
ho c do chính yêu cầu c a bên trongăCPUănh ăl i trong khi tính toán.
Trong cách t ch cătraoăđ i d li u thông qua vi căthĕmădòătr ng thái s n sàng c a
thi t b ngo i vi, tr c khi ti n hành b t kỳ m t cu cătraoăđ i d li u nào CPU ph i dành
toàn b th i gian vào vi căxácăđ nh tr ng thái s n sàng làm vi c c a thi t b ngo i vi. Đ
t n d ng kh nĕngăc aăCPUăđ lƠmăthêmăđ c nhi u công vi c khác n a, ch khi nào có
yêu cầuătraoăđ i d li u thì m i yêu cầu CPU t m d ng công vi c hi n t iăđ ph c v
vi cătraoăđ i d li u. Sau khi hoàn thành vi cătraoăđ i d li u thì CPU l i ph i quay v đ
làm ti p công vi c hi năđangăb giánăđo n.
Trong các tín hi u c a CPU 8086 có tín hi u cho các yêu cầu ng tăcheăđ c INTR
vƠăkhôngăcheăđ c NMI, chính các tín hi u này s đ c s d ng vào vi căđ aăcácăyêuă
cầu ng t t bênăngoƠiăđ n CPU.
4.2 Cácălo iăng tătrongăh ă8086
Trong h vi x lý 8086 có th x p các nguyên nhân gây ra ng t CPU vào 3 nhóm
nh ăsau:
 Nhóm các ng t c ng: đóălƠăcácăyêuăcầu ng t CPU do các tín hi uăđ n t các chân
INTR và NMI.
Ng t c ng INTR là yêu cầu ng tăcheăđ c. Các l nh CLI và STI có nhăh ng
tr c ti p t i tr ng thái c a c IF trong b vi x lý, t c là nhăh ng t i vi c CPU
có nh n bi t yêu cầu ng t t i chân này hay không. Yêu cầu ng t t i chân INTR có
th có ki u ng t N n m trong kho ng 0-FFH. Ki u ng t này ph iăđ căđ aăvƠoă
buýt d li uăđ CPU có th đ căđ c khi có xung trong chu kỳ tr l i ch p nh n
ng t.
 Nhóm các ng t m m: khi CPU th c hi n các l nh ng t d ng INT N, trongăđóăNălƠă
s hi u (ki u) ng t n m trong kho ng 00-FFH (0-255).

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.

B ng 2-6 Quan h gi a IRi và s hi u ng tăNăt ngă ng.

IR6 IR5 IR4 IR3 IR2 IR1 IR0 N

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)

4.3 Đápă ngăc aăCPUăkhiăcóăyêuăc uăng t


Khi có yêu cầu ng t ki uăNăđ n CPU và n u yêu cầuăđóăđ c phép, CPU th c
hi n các công vi c sau:
1. SP  SP-2, [SP]  FR, trongăđóă[SP] là ô nh do SP ch ra.
(ch raăđ nh m i c a ng n x p, c t thanh ghi c vƠoăđ nhăngĕnă
x p)
2. IF  0, TF  0.
(c m các ng tăkhácătácăđ ng vào CPU, cho CPU ch y ch đ
bìnhăth ng)
3. SP  SP-2, [SP]  CS.
41
Cả NẢ 2. BÔ X LÍ INTEL 8086

(ch raăđ nh m i c aăngĕnăx p, c t phầnăđ a ch đo n c aăđ a ch


tr v vƠoăđ nhăngĕnăx p)
4. SP  SP-2, [SP]  IP
(ch raăđ nh m i c aăngĕnăx p, c t phầnăđ a ch l ch c aăđ a ch
tr v vƠoăđ nhăngĕnăx p)
5. [N*4]  IP, [N*4+2]  CS
(l y l nh t iăđ a ch m i c aăch ngătrìnhăconăph c v ng t ki u
Năt ngă ng trong b ngăvect ăng t)
6. T i cu iăch ngătrìnhăph c v ng t, khi g p l nh IRET
[SP]  IP, SP  SP+2
[SP]  CS, SP  SP+2
[SP]  FR, SP  SP+2
(b vi x lý quay l iăch ngătrìnhăchínhăt iăđ a ch tr v và v i
giá tr cũăc a thanh ghi c đ c l y ra t ngĕnăx p).
V m t c uătrúcăch ngătrình, khi có ng t x yăraăthìăch ngătrìnhăchínhăt m d ng
vi c th c hi năvƠăl uăcácăthanhăghiăcần thi tănh ăthanhăghiăc . Sauăđóăconătr l nh c a
CPU s đ c tr t iăđo n mã c a ch ngătrìnhăconăph c v ng t. Khi ch ngătrìnhăconă
ph c v ng t k t thúc, CPU khôi ph c l i tr ng thái các thanh ghi c aăch ngătrìnhăchínhă
vƠăđ t con tr l nh v v trí b ng ng khi ph c v ng t. D iă đơyălƠădanhăsáchă m t s
ki u ng tăđ c bi tăđ c x păvƠoăđầu dãy ng t m m INT Nănh ăsau:
+ INT 0: Ng t m m do phép chia cho s 0 gây ra,
+ INT1: Ng t m măđ ch y t ng l nh ng v iătr ng h p c TF=1,
+ INT2: Ng t c ng do tín hi u tích c c t i chân NMI gây ra,
+ INT3: Ng t m măđ đ tăđi m d ng c aăch ngătrìnhăt i m tăđ c ch nƠoăđó
+ IN T4: (Ho c l nh INTO): ng t m m ng v iătr ng h p c tràn OF=1.
Các ki u ng t khác còn l iăthìăđ c dành cho nhà s n xu t vƠăchoăng i s d ng
đ nhănghĩa:
+ INT 5-INT 1FH; dành riêng cho Intel trong các b vi x lý cao c p khác,
+ INT 20H-INTăFFH:ădƠnhăchoăng i s d ng.
Các ki u ng tăNătrongăINTăNăđ uăt ngă ng v iăcácăđ a ch xácăđ nh c a ch ngă
trình con ph c v ng t mà ta có th traăđ c trong b ngăcácăvect ăng t. Intelăquyăđ nh
b ng này n m trong RAM b tăđầu t đ a ch 00000H và dài 1 KB (vi x lý 8086 có t t c

42
Cả NẢ 2. BÔ X LÍ INTEL 8086/8088

256 ki u ng t, m i ki u ng t ng v iă1ăvect ăng t, 1ăvect ăng t cầnă4ăbyteăđ ch aăđ a


ch đầyăđ cho CS:IP c a ch ngătrìnhăconăph c v ng t).

B ng 2-7. B ngăvect ăng t c a 8086 t iă1KBăRAMăđ u tiên

03FEH-03FFH CS c a ch ngătrìnhăconăph c v ng t INT FFH

03FCH-03FDH IP c a ch ngătrìnhăconăph c v ng t INT FFH

0082H-0083H CS c a ch ngătrìnhăconăph c v ng t INT 20H

0080H-0081H IP c a ch ngătrìnhăconăph c v ng t INT 20H

000AH-000BH CS c a ch ngătrìnhăconăph c v ng t INT 2

0008H-0009H IP c a ch ngătrìnhăcon ph c v ng t INT 2

0006H-0007H CS c a ch ngătrìnhăconăph c v ng t INT 1

0004H-0005H IP c a ch ngătrìnhăconăph c v ng t INT 1

0002H-0003H CS c a ch ngătrìnhăconăph c v ng t INT 0

0000H-0001H IP c a ch ngătrìnhăconăph c v ng t INT 0

4.4 X ălỦă u tiênăkhiăng t


Có m t v năđ r t th c t đ t ra là n u t i cùng m t th iă đi m có nhi u yêu cầu
ng t thu c các lo i ng tăkhácănhauăcùngăđòiăh i CPU ph c v thì CPU s ph iăcóăc ăch
đ x lý các yêu cầu ng t này. C ăch ph bi n là chia các ng t theo m că u tiên. CPU
8086 có kh nĕngăphơnăbi t các m că uătiênăkhácănhauăchoăcácălo i ng t (theo th t t
cao xu ng th p)ănh ăsau:
+ ng t trong: INT 0 (phép chia cho 0), INT N, INTO . . . cao nh t
+ ng tăkhôngăcheăđ c NMI
+ ng tăcheăđ c INTR
+ ng tăđ ch y t ng l ng INT 1 . . . th p nh t

43
Cả NẢ 2. BÔ X LÍ INTEL 8086

Theo th t uătiênăngầmăđ nh trong vi c x lý ng t c a CPU 8086 thì INT 0 có


m că uătiênăcaoăh năINTR, vì v yăđầu tiên CPU s th c hi năch ngătrìnhăph c v ng t
INTă0ăđ đápă ng v i l iăđ c bi t cho phép chia cho 0 gây ra và c IF b xóa v 0. Yêu
cầu ng t INTR s t đ ng b c m cho t iăkhiăch ngătrìnhăph c v ng tăINTă0ăđ c hoàn
t t và tr v nh IRET, c IFăcũăđ c tr l i. Ti pătheoăđóăCPUăs đápă ng yêu cầu ng t
INTR b ng cách th c hi năch ngătrìnhăph c v ng t dành cho INTR.

44
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088

Ch ngă3. L PăTRỊNHăH PăNG ăV I 8086

1. GI IăTHI UăKHUNGăC AăCH NGăTRỊNHăH PăNG

1.1 Cúăphápăc aăch ngătrìnhăh păng


M tă ch ngătrìnhăh p ng bao g m các dòng l nh, m t dòng l nh có th là m t
l nh th tă d i d ng ký hi u (symbolic), mƠă đôiă khiă cònă đ c g i là d ng g i nh
(mnemonic) c a b vi x lý, ho c m tă h ng d nă choă ch ngă trìnhă d ch (assembler
directive). L nh g i nh s đ c d chăraămưămáyăcònăh ng d năchoăch ngătrìnhăd ch
thìăkhôngăđ c d ch vì nó ch có tác d ng ch d n riêng th c hi n công vi c. Các dòng
l nh này có th đ c vi t b ng ch hoa ho c ch th ng và chúng s đ căcoiălƠăt ngă
đ ngăvìăđ i v i dòng l nhăch ngătrìnhăd ch không phân bi t ki u ch .
M t dòng l nh c aăch ngătrìnhăh p ng có th có nh ngătr ng sau (không nh t
thi t ph i cóăđ h t t t c cácătr ng):
Tên Mã l nh Các toán d ng Chú gi i
M t ví d dòng l nh g i nh :
TIEP: MOV AH, [BX] [SI] ; n p vào AH ô nh cóă đ a ch DS:
(BX+SI)
Trong ví d trên, t iă tr ng tên ta có nhãn TIEP, t iă tr ng mã l nh ta có l nh
MOV, t i tr ng toán h ng ta có các thanh ghi AH, BX và SI và phần chú gi i g m có
các dòng
; n p vào AH ô nh cóăđ a ch DS: (BX+SI)
M t ví d khác là các dòng l nh v iăcácăh ng d năchoăch ngătrìnhăd ch:
MAIN PROC

MAIN ENDP
Trong ví d này, tr ng tên ta có tên th t c là MAIN, tr ng mã l nh ta có các
l nh gi PROC và ENDP. ĐơyălƠăcácăl nh gi dùngăđ b tăđầu và k t thúc m t th t c có
tên là MAIN.
a) Tr ờng tên
Tr ng tên ch a các nhãn, tên bi n ho c tên th t c. Các tên và nhãn này s đ c
ch ng trình d ch gán b ngăcácăđ a ch c th c a ô nh . Tên và nh n có th cóăđ dài 1. .

45
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086

31 ký t , khôngăđ c ch a d uăcáchăvƠăkhôngăđ c b tăđầu b ng s . Các ký t đ c bi t


khác có th dùng trong tên là ?. @_$%. N u d u ch m ('. ')ăđ c dùng thì nó ph iăđ c
đ t v tríăđầu tiên c a tên. M tănhưnăth ng k t thúc b ng d u hai ch m (:).
b) Tr ờng mã l nh
Trongătr ng mã l nh nói chung s có các l nh th t ho c l nh gi . Đ i v i các l nh
th tă thìătr ng này ch a các mã l nh g i nh . Mã l nh này s đ că ch ngătrình d ch
d ch ra mã máy. Đ i v iăcácăh ng d năch ngătrìnhăd chăthìătr ng này ch a các l nh
gi và s khôngăđ c d ch ra mã máy.
c) Tr ờng toán h ng
Đ i v i m t l nhăthìătr ng này ch a các toán h ng c a l nh. Tùy theo t ng lo i
l nh mà ta có th có 0, 1 ho c 2 toán h ng trong m t l nh. Trongătr ng h p các l nh v i
1 toán h ngăthôngăth ng ta có toán h ngălƠăđíchăho c g c, cònătrongătr ng h p l nh
v i 2 toán h ng thì ta có 1 toán h ngălƠăđíchăvƠă1ătoánăh ng là g c.
Đ i v iăh ng d năch ngătrìnhăd ch thì tr ng này ch a các thông tin khác nhau
liênăquanăđ n các l nh gi c aăh ng d n.
d) Tr ờng chú gi i
L i gi i thích tr ng chú gi i ph iăđ c b tăđầu b ng d u ch m phẩy (;). Tr ng
chú gi iănƠyăđ cădƠnhăriêngăchoăng i l pătrìnhăđ ghi các l i gi i thích cho các l nh
c aăch ngătrìnhăv i m căđíchăgiúpăchoăng iăđ căch ngătrìnhăd hi u các thao tác c a
ch ngătrìnhăh n. Thôngăth ng l i chú gi i cần ph iămangăđ thôngătinăđ gi i thích v
thao tác c a l nh trong hoàn c nh c th vƠănh ăth thì m i có ích cho ng iăđ c.
1.2 D ăli uăchoăch ngătrình
D li u c a m tăch ngătrìnhăh p ng là r tăđaăd ng. Các d li u có th đ c cho
d i d ng s h hai, h m i, h m i sáu ho căd i d ng ký t . Khi cung c p s li u
choăch ngătrình, s cho h nào ph iăđ căkèmăđuôi c a h đóă(tr h m i thì không
cầnăvìălƠătr ng h p ngầmăđ nh c a assembler). Riêngăđ i v i s h m i sáu n u s đóă
b tăđầu b ng các ch (a. f ho c A. . F) thì ta ph i thêm 0 tr căđ ch ngătrìnhăd ch có
th hi uăđ căđóălƠăm t s h m i sáu ch không ph i là m t tên ho c m t nhãn.
Ví d các s vi tăđúng:
0011B ; S h hai.
1234 ;S h m i
0ABBAH ;S h m i sáu
1EF1H ;S h m i sáu.

46
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088

N u d li u là ký t ho c chu i ký t thì chúng ph iăđ căđóngătrongăc p d u trích


d năđ năho c kép, thí d 'A' hay "abcd". Ch ngătrìnhăd ch s d ch ký t ra mã ASCII
t ngă ng c a nó. Vì v y trong khi cung c p d li u ki u ký t choăch ngătrìnhătaăcóă
th dùng b n thân ký t đ căđóngătrongăd u trích d n ho c mã ASCII c a nó. Ví d , ta
có th s d ng li u ký t là "0" ho cămưăASCIIăt ngă ng là 30H, ta có th dùng '$' ho c
26H ho c 34. . .

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

1.2.2 KểỐỉỂ Ếủa m ỏ Ếể ỉỂ ỏrửỉể ể ị ỉỂ


M tăch ngătrìnhămưămáyătrongăb nh th ng bao g m các vùng nh khác nhau
đ ch a mã l nh, ch a d li u c aăch ngătrìnhăvƠăm t vùng nh khácăđ c dùng làm
ngĕnăx p ph c v ho tăđ ng c aăch ngătrình. Ch ng trình vi t b ng h p ng cũngăph i
có c uătrúcăt ngăt đ khiăđ c d ch nó s t oăraămưăt ngă ng v iă ch ngătrìnhămưă
máy nói trên. Đ t oă raă s n c a m tă ch ngătrình h p ng chúng ta s s d ng cách
đ nhănghĩaăđ năgi năđ i v i mô hình b nh dành cho ch ngătrìnhăvƠăđ i v i các thanh
ghiăđo n.

1.2.2.a Khai báo quy mô sử dụng bộ nhớ


Kíchăth c c a b nh dƠnhăchoăđo nămưăvƠăđo n d li u trong m tăch ngătrìnhă
đ căxácăđ nh nh h ng d năch ngătrìnhăd chăMODELănh ăsauă(h ng d n này ph i
đ căđ tătr căcácăh ng d năkhácătrongăch ngătrìnhăh p ng , nh ngăsauăh ng d n v
lo i CPU):
. MODEL Ki u_ăkích_th c_b _nh
Có nhi u Ki u_ăkích_th c_b _nh choăcácăch ngătrìnhăv iăđòiăh iădungăl ng
b nh khác nhau. Đ i v iă taăthôngăth ng các ng d ngăđòiă h iă mưăch ng trình dài
nh tăcũngăch cần ch a trong m tăđo n (64KB), d li uăchoăch ngătrìnhănhi u nh tăcũngă
ch cần ch a trong m tă đo n, thích h p nh t nên ch n Ki u_ă kích_th c_b _nh là
Small (nh ) ho c n uănh ăt t c mã và d li u có th gói tr năđ c trong m t đo n thì có
th ch n Tiny (hẹp):
. Model Small
ho c . Model Tiny
Ngoài Ki u_ă kích_th c_b _nh nh ho c hẹp nói trên, tuỳ theo nhu cầu c th
MASM còn cho phép s d ng các Ki u_ă kích_th c_b _nh khácă nh ă li t kê trong
B ng 3-1.

B ng 3-1. Các ki uăkíchăth c b nh choăch ngătrìnhăh p ng

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

Mã l nh không gói g n trong m tăđo n, d li u không


Compact(G n)
gói g n trong m tăđo n.
Mã l nh không gói g n trong m tăđo n, d li u không
Large (l n) gói g n trong m tăđo n, không có m ng nào l năh nă
64KB.
Mã l nh không gói g n trong m tăđo n, d li u không
Huge (Đ s ) gói g n trong m tă đo n, các m ng có th l nă h nă
64KB

1.2.2.b Khai báo đoạn ngăn xếp


Vi căkhaiă báoăđo năngĕnăx pălƠăđ dành ra m t vùng nh đ l n dùngălƠmă ngĕnă
x p ph c v cho ho tă đ ng c aă ch ngă trìnhă khiă cóă ch ngă trìnhă con. Vi c khai báo
đ c th c hi n nh h ng d năch ngătrìnhăd chănh ăsau.
. Stack Kích_th c
Kích_th c s quy tă đ nh s byteă dƠnhă choă ngĕnă x p. N u ta không khai
Kích_th c thìă ch ngă trìnhă d ch s t đ ngă gánă choă Kích_th c giá tr 1 KB, đơyă lƠă
kíchăth căngĕnăx p quá l năđ i v i m t ng d ngăthôngăth ng. Trong th c t các bài
toán c aătaăthôngăth ng v i 100-256ăbyteălƠăđ đ lƠmăngĕnăx p và ta có th khai báo
kíchăth c nh ăsau:
. Stack 100
Khaiăbáoăđo n d li u
Đo n d li u ch a toàn b cácăđ nhănghĩaăchoăcácăbi n c aăch ngătrình. Các h ng
cũngănênăđ căđ nhănghĩaă đơyăđ đ m b o tính h th ng m c dù ta có th đ chúng
trongăch ngătrìnhănh đưănóiă phần trên.
Vi că khaiă báoă đo n d li uă đ c th c hi n nh h ng d nă ch ngă trìnhă d ch
DATA, vi c khai báo và h ngăđ c th c hi n ti păngayăsauăđóăb ng các l nh thích h p.
Đi uănƠyăđ c minh ho trong ví d sau:
. Data
MSG DB 'helo!$'
CR DB 13
LF EQU 10

51
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086

1.2.2.c Khai báo đoạn mã


Đo n mã ch a mã l nh c aăch ngătrình. Vi căkhaiăbáoăđo nămưăđ c th c hi n
nh h ng d năch ngătrìnhăd ch. CODEănh ăsau:
. CODE
Bênătrongăđo n mã, các dòng l nh ph iăđ c t ch c m t cách h p lý, đúngăng
phápăd i d ng m tăch ngătrìnhăchính (CTC) và n u cần thi tăthìăkèmătheoăcácăch ngă
trình con (ctc). Cácă ch ngă trìnhă conă s đ c g i ra b ng các l nh CALL có m t bên
trongăch ngătrìnhăchính.
M t th t căđ căđ nhănghĩaănh các l nh gi PROC và ENDP. L nh gi PROCăđ
b tăđầu m t th t c còn l nh gi ENDPăđ cădùngăđ k t thúc nó. Nh ăv y m tăch ngă
trình chính có th đ căđ nhănghĩaăb ng các l nh gi PROC và ENDP theo m u sau:
Tên_CTC Proc
; Các l nh c aăthơnăch ngătrìnhăchính
CALL Tên_ ctc; g i ctc
Tên_CTC Endp
Gi ngă nh ă ch ngă trìnhă chínhă conă cũngă đ că đ nhă nghĩaă d i d ng m t th t c
nh các l nh gi PROC và ENDP theo m u sau:
Tên_ctc Proc
; các l nhăthơnăch ngătrìnhăcon
RET
Tên_ctc Endp
Trongăcácăch ngătrìnhănóiătrên, ngoài các l nh gi có tính nghi th c b t bu c ta
cầnăchúăỦăđ n s b trí c a l nh g iă(CALL)ătrongăch ngătrìnhăchínhăvƠăl nh v (RET)
trongăch ngătrìnhăcon.

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

Trong ví d trênăchúngătaăđưăs d ng các d ch v có s n (các hàm 9 và 4CH) c a


ng t INT 21H c aăDOSătrênămáyăIBMăPCăđ hi n th xâu ký t và tr v DOS m t cách
thu n l i.

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

 Ch ngătrìnhăcũngăch đ c phép s d ngăngĕnăx p m t cách h n ch (n u


không có th làm cho đ nh ngĕnăx p trong khi ho tă đ ng dâng lên nhi u v
phíaăđ a ch th p c aăđo n).
Đ a ch l ch

000H Đo năđ uăch ngătrình (PSP)

0100H JMP CONTINUE  IP


D li u n m t iăđơy

CONTINUE:
(chi u ti n c a mã & d li u)


(chi u ti n c a ngĕnăx p)
FFFEH  SP

Hình 3-1. T păch ngătrình .COM trong b nh

Tóm l i ph i ch c ch n không th x y ra hi năt ng trùm vào nhau c a các thông


tin t i vùng mã l nh ho c d li u. Khi k tăthúcăch ngătrìnhăki u .COM, đ tr v DOS
cần dùng ng t INT 20H c aăDOSăđ lƠmăchoăch ngătrìnhăg năh n. T tănhiênăcũngăcóă
th dùng hàm 4CH c a ng tă INTă 21Hă nh ă đưă dùngă trongă ch ngă trìnhă đ d ch ra t p
.EXE.
Đ k t thúc toàn b ch ngătrình,ădùngăh ng d năch ngăchínhăd ch ENDăđiăkèmă
theoănhưnăSTARTăt ngă ng v iăđ a ch l nhăđầu tiên c aăch ngătrìnhătrongăđo n mã.
Sauăđây là ví d c a m tăch ngătrìnhăh p ng đ d ch ra t păch ngătrìnhăch y
đ c v iăđuôi .COM.
Ví d 3-3. Ch ngătrìnhăHelo .COM
. Model Tiny
. Code
ORG 100H
START: IMP CONTINUE

56
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088

CRLF DB 13, 10, '$'


MSG DB !Hello! $'
CONTINUE:
MAIN Proc
; 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
MOV AH, 9
LEA DX, CRLF
INT 21H
; tr v DOS
INT 20H
MAIN Endp
END START
Trong Ví d 3-3 ta không cầnăđ n các thao tác kh iăđầu cho thanh ghi DS, nh ătaă
đưă ph i làm trong Ví d 3-1, vìă trongă ch ng trình .COM khôngă cóă đo n d li u n m
riêng r .

Stack

Ch ngă Ch ngă
trình trình

SS
CS
DS
100h ES 100h
PSP PSP

.COM .EXE

Hình 3-2.ăMôđunăch ngătrình.ăCOMăvƠ.ăEXEătrongăb nh .

57
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086

Hình 3-2 bi u di n c u trúc c aăcácăch ngătrình .COM và .EXE khiăchúngăđ c


t i vào trong b nh .

2. CỄCHăT OăVÀăCH YăCH NGăTRỊNHăH PăNG

Nh ăđưănóiătrong phầnătr c, máyăIBMăPCălƠăph ngăti nălỦăt ngăđ chúng ta t o


ra và th nghi măcácăch ngătrìnhăh p ng 8086. Cácăb c bao g m:
1. Dùng các phần m m so n th oă vĕnă b nă đ t o ra m t t pă vĕnă b nă ch ngă
trình g c b ng h p ng . T p này ph iăđ căgánăđuôi. ASM.
2. Dùngăch ngătrìnhăd chăMASMăđ d ch t p. ASMăraămưămáyăd i d ng t p.
OBJ. N uătrongăb c này n uătrongăch ngătrìnhăcóăl i cú pháp thì ph i quay
l iăb că1ăđ s a l iăch ngătrìnhăg c.
3. Dùngă ch ngă trìnhă LINKă đ n i m t hay nhi u t p OBJ l i v i nhau thành
m t t păch ngătrìnhăch yăđ c v iăđuôi .EXE.
4. N uăch ngătrìnhăg c vi tăraălƠăđ d ch ra ki u .COM thì ta ph iădùngăch ngă
trìnhă EXE2BINă (đ c là EXEtoBIN) c aă DOSă đ d ch ti p t p .EXE ra t p
ch ngătrìnhăch yăđ c v iăđuôi .COM.
5. Cho ch yăch ngătrình v a d ch

58
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088

T o ra t păvĕnăb n c aăch ngătrìnhă


*.asm

DùngăMASMăđ d ch ra mã máy *.obj

DùngăLINKăđ n i t p. obj l ithành


*.exe

D chăđ c ra.com?

đ
DùngăEXE2BINăđ d ch *.exe thành
*.com

Cho ch yăch ngătrình

Hình 3-3.ăCácăb căđ t o ra và ch yăch ngătrìnhăh p ng

3. CỄCăC UăTRÚCăL PăTRÌNH C ăB Nă

Trong khi th c hi n các kh i ch cănĕngăthƠnhăphần c aăch ngătrình, thôngăth ng


ng i ta s d ng các c u trúc l pătrìnhăc ăb năđ th c hi n các nhi m c c a kh iăđó.
Đi u này làm cho cácăch ngătrìnhăvi t ra tr thành có cấu trúc v iăcácă uăđi m chính d
phát tri n, d hi u ch nh ho c c i ti n và d l p tài li u.
Các c u trúc l pătrìnhăc ăb n bao g m:
+ C u trúc tuần t .
+ C u trúc l a ch n (IF-THEN-ELSE) và
+ C u trúc l p (WHILE. DO).
Thayă đ i các c u trúc này có th t o thêm 4 c uă trúcă khácă cũngă r t có tác d ng
trong khi vi tăch ngătrình:
+ c u trúc ch n ki u IF-THEN
+ c u trúc ch n ki u CASE,
59
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086

+ 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.

3.1.1 CấỐ ỏrúẾ Iạ - THEN


IF Đi u ki n THEN công vi c.
T ng pháp c a c u trúc IF-THEN ta th y n u tho mưnăĐi u ki n thì Công vi c
đ c th c hi n n u không Công vi c s b b qua. Đi uănƠyăt ngăđ ngăv i vi c dùng
l nh nh yăcóăđi u ki năđ b qua m tăthaoătácănáoăđóătrongăch ngătrìnhăh p ng .

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

Hình 3-6.C u trúc IF-THEN Hình 3-5 C u trúc IF-THEN-ELSE


Hình 3-6
Bài t p 3-2.
Gán cho BX giá tr tuy tăđ i c a AX.
Gi i
Đ th c hi n phép gán BX  AX ta có th dùng các l nh sau:
CMP AX, 0 ; AX<0?
JNL GAN ; không, gán luôn.
NEG AX ; đúng. đƠoăd u, r i
GAN: MOV BX, AX ; l i ra c a c u trúc.

3.1.2 CấỐ ỏrúẾ Iạ - THEN - ELSE


IF Đi uKi n THEN CôngVi c1 ELSE CôngVi c2
T ng pháp c a c u trúc IF-THEN-ELSE, n u tho mưnăĐi u_ki n thì Côngvi c1
đ c th c hi n n u không thì Côngvi c2ăđ c th c hi n. Đi uănƠyăt ngăđ ngăv i vi c
dùng l nh nh yă cóă đi u ki nă vƠă khôngă đi u ki nă đ nh yă đ nă cácă nhưnă nƠoă đóă trongă
ch ng trình.

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

CMP AX, 0 ; AX>0?.


JNS DG ; đúng.
MOV CL, l ; sai, cho CL  1 r i
JMP RA ; di ra.
DG: XOR CL, CL ; cho CL  0.
RA: ; l i ra c a c u trúc.

3.1.3 CấỐ ỏrúẾ CASE


CASE Bi uth c
Giátr 1: Côngvi c1
Giátr 2: Côngvi c2
...
Giátr N: Côngvi cN
END CASE

Bi uth c

Giátr 1 Giátr 2 GiátrịN

Côngvi c1 Côngvi c2 Côngvi cN

Hình 3-7. C u trúc l nh CASE

T ng pháp c a c u trúc ta th y n u Bi uth c có Giátr 1 thì Côngvi c1ăđ c th c


hi n. N u Bi uth c có Giátr 2 thì Côngvi c2ă đ c th c hi n và c ti p t că choă đ n
Côngvi cN. Đi uă nƠyă t ngă đ ngă v i vi c dùng các l nh nh yă cóă đi u ki n và nh y
khôngăđi u ki năđ nh yăcácănhưnănƠoăđóătrongăch ngătrìnhăh p ng . C u trúc CASE có
th th c hi n b ng các c u trúc l a ch n l ng nhau.
Bài t p 3-4.
DùngăCXăđ bi u hi n các giá tr khác nhau c a AX theo quy t c sau:
AX < 0 thì CX =-1
62
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088

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.

3.1.4 CấỐ ỏrúẾ ệặị ạOậ - DO


FOR S l n l p DO Công vi c
T ng pháp cu c u trúc FOR - DO ta th y đơyăCông_ vi căđ c th c hi n l p
điăl p l i t t c S lần l p l i. Đi uănƠyăhoƠnătoƠnăt ngăđ găv i vi c dùng l nh LOOP
trong h p ng đ l p l i CX lần m t Công vi cănƠoăđó, tr căđóătaăph i gán S lần l p
cho thanh ghi CX.

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

Hình 3-8. C u trúc l p FOR - DO.

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

3.1.5 CấỐ ỏrúẾ ệặị WHILE - DO


WHILE Đi u ki n DO Công vi c
T ng pháp c a c u trúc WHILE - DO ta th y:ă Đi u ki nă đ c ki mă traă đầu
tiên. Công vi căđ c l păđiăl p l i ch ngănƠoăĐi u ki năcònăđúng. Đi u này trong h p
ng hoƠnă toƠnă t ngă đ ngă v i vi c dùng l nh CMPă đ ki mă traă Đi u ki nă vƠă sauă đóă
dùng l nh nh yăcóăđi u ki năđ thoát kh i vòng l p.

Điều kiện Công vi c


sai
đúngăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăă

Công vi c Đi u ki n
sai
đúngăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăăă

Hình 3-10. C u trúc WHILE - DO Hình 3-10. C u trúc REPEAT - UNTIL

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.

3.1.6 CấỐ ỏrúẾ ệặị REPEAT - UNTIL


REPEAT Công vi c UMTIL Đi u ki n
T ng pháp c a c u trúc REPEAT - UNTIL ta th y: Công vi căđ c th c hi n
đầu tiên. Đi uăđóăcóănghĩaălƠăcôngăvi căđ c th c hi n ít nh t m t lần. Đi u ki năđ c

65
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086

ki mătraăsauăđó. Công vi căđ c l păđiăl p l i cho t iăĐi u ki n đ c tho mãn. Đi u này


trong h p ng hoƠnătoƠnăt ngăđ ng v i vi c dùng l nhăCMPăđ ki mătraăĐi uki n và
sauăđóădùngăl nh nh yăcóăđi u ki năđ thoát kh i vòng l p.
Bài t p 3-7
Đ c ký t t bàn phím cho t i khi g p '$' thì thôi.
Gi i
Ví d này ch làm m t phần công vi c c a ví d tr c. T iăđơyătaăch ph iăđ c các
ký t đ căđ c.
Ta có th t c hi n công vi c trên b ng mẩuăch ngătrìnhăsau:
MOV Ah, 1 ;ăhƠmăđ c ký t bàn phím.
TIEP: INT 21H ;ăđ c 1 ký t .
CMP AL, '$' ;ăđ căđ căđôlaă?
RA: ; l i ra c a c u trúc.
4. M TăS ăVệăD
Trong phần này gi i thi u m t s ch ngătrình cho các ng d ng c th , thông qua
các ví d này ta có th h căđ c các l nh, cách l păch ngătrìnhăcùngăv i cách t ch c
d li uăđ gi i quy t các bài toán c th .
D iăđơyălƠ m t s hàm c a các lo i ng t có trong máy IBM PC v i h đi u hành
MS DOS.

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

Ng t INT 20H dƠnhăriêngăđ kêtăthúcăch ngătrìnhălo i. COM


Hàm 1 c a ng t INT 21H:ăđ c 1 ký t t bàn phím
Vào: AH = 1
Ra: AL = mã ASCH c a ký t cần hi n th
Al = 0 khi ký t gõ vào là t các phím ch cănĕngă
Hàm 2 c a ng t INT 21H: hi n 1 ký t lên màn hình
Vào: AH = 2
DL = mã ASCH c a ký t cần hi n th .
Hàm 9 c a ng t INT 21H: hi n chu i ký t v i $ cu i lên màn hình
Vào: AH = 9
DXă=ăđ a ch l ch c a chu i ký t cần hi n th .
Hàm 4CH c a ng t INT 21H: k tăthúcăch ngătrìnhălo i. EXE
Vào: AH = 4CH

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

MOV AX, @ Data ; kh iăđầu thanh ghi DS


MOV DS, AX
; hi n th l i chào dùng hàm 9 c a INT 21H
MOV AH, 9
LEA DX, ChaoTay
INT 21H
; cách 5 dòng dùng hàm 9 c a INT 21H
LEA DX, CELF
MOV CX, 6 ;CX ch a s dòng cách +1
LAP: INT 21H
LOOP LAP
; hi n th l i chào dùng hàm 9 c a INT 21H
LEA DX, ChaoTa
INT 21H
; tr v DOS dùng hàm 4 CH c a INT 21H
MOV AH, 4CH
INT 21H
MAIN Endp
END MAIN
Trongăch ngătrìnhătrênădùngăthanhăghiăCXăđ ch a s dòng ph i giãn cách. V i
cách làm này m i khi mu năthayăđ i s dòng dãn cách gi a 2 l i chào ta và l i chào tây,
cần ph i g n giá tr khác cho thanh ghi CX.
4.2 Víăd ă2
Trênăc ăs ví d tr c, hãy vi tăch ngătrìnhăsaoăchoăs dòng giãn cách có th thay
đ iăđ c ngay trong khi ch yăch ngătrình.
Gi i
Mu n có s dòngă cáchă thayă đ iă đ c theo ý mu n gi a 2 l i chào ta và tây khi
ch yăch ngătrìnhămƠăkhôngăph i thay giá tr m iăchoăthanhăghiăCXăngayătrongăch ngă
trìnhănh ă ví d tr c, cần dùng thêm 1 bi n m iăđ ch a s dòng cách và vi tăch ng
trình sao cho m i khi cho ch yăthìăch ngătrìnhăcóăthêmăphầnăđ i tho iăđ ng i s d ng
có th thayăđ i giá tr c a s dòngăgiưnăcáchăđó.
SauăđơyălƠăch ngătrìnhăth c hi n công vi c trên:
. Model Small
. Stack 100
. Data
68
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088

CRLF DB 13, 10, '$'


ChaoTay DB 'Hello!S'
ChaoTa DB 'Chao ban!S'
Thongbao DB 'go vao so dong cach:S'
SoCRLF DB ?
. Code
MAIN Proc
MOV AX, @Data ; kh iăđầu thanh ghi DS
MOV DS, AX
; hi n thông báo dùng hàm 9 c a INT 21H
MOV AH, 9
LEA DX, Thongbao
INT 21H
;ăđ c s dòng cách dùng hàm 1 c a INT 21H
MOV AH, 1
INT 21H ;ăđ c s dòng cách
AND AL, OFH ;ăđ i ra h hai
MOV SoCRLE, AL ; c tăđi
; cách 1 dòng 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, ChaoTay
INT 21H
LEA DX, CFLF
XOR CX, CX
MOV CL, SoCRLE ; CX ch a s dòng cách
LAP: INT 21H
LOOP LAP
; hi n th l i chào dùng hàm 9 c a INT 21H
LEA DX, ChaoTa
INT 21H

69
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086

; tr v DOS dùng hàm 4CH c a INT 21H


MOV AH, 4CH
INT 21H
MAIN Endp
END MAIN
Trong ví d trên có m tăđi u cầnăchúăỦălƠăkhiăđ c m t ký t t bàm phím (trong
tr ng h p c th nƠyă thìă đóă lƠă s dòng cách) ta s thuă đ c trong thanh ghi AL mã
ASCII c a ký t (s ) đưăgõ. Đ s d ng nó trongătr ng h p c th nh ăm t giá tr s và
c t nó t i bi n SoCRLF, ta ph i bi nă đ i mã ASCII này thành h s hai. Đ đ i mã
ASCII c a m t s ra tr s ho căng c l i chú ý r ng gi a giá tr s và mã ASCII c a s
đóăchênhănhau 30H. Ví d s 9 có mã ASCII là 39H hay s 0 có mã ASCII là 30H (có
th đ c vi t là "0"). Nh ăv y vi c bi năđ i mã ASCII (gi thi tăđưăcóăs n trong AL) ra
giá tr s có th th c hi năđ c b ng m t trong các l nh sau:
+ SUB AL, 30H
+ AND AL, 0FH
T ngăt nh ăv y, vi c bi năđ iăng c l i t s h haiă(th ng gi thi tăđưăcóăs n
trong thanh ghi DL) ra mã ASCII có th lƠmăđ c b ng m t trong các l nh sau:
+ ADD DL, 30H
+ OR DL, 30H
4.3 Víăd ă3
Đ c t bàn phím m t s h hai (dài nh t là 16 bít), k t qu đ căđ căđ t i thanh
ghi BX. Sau đóăhi n n i dung thanh ghi BX ra màn hình.
Gi i
Công vi c c a bài này th c ch t g m hai phần, m t phầnăđầu là đ căđ c s h hai
và c t nó t i BX, trong phần ti pătheoăđ aăđ c n i dung c a thanh ghi BX ra màn hình.
SauăđơyălƠăch ngătrìnhăth c hi n công vi c trên:
. Model Small
. Stack 100
. Data
TBao DB 'Go vao 1 so he hai (max 16 bít, '
DB 'CR de thoi):$'
. Code
MAIN proc

70
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086/8088

MOV AX, @ Data


MOV DS, AX
MOV AH, 9 ; hi n th thông báo
LEA DX, TBao
INT 21H
XOR BX, BX ; BX ch a k t qu , lúcăđầu là 0
MOV AH, 1 ;ăhƠmăđ c 1 s t bàn phím
TIEP: INT 21H
CMP AL, 13 ; CR?
JF THOIDOC ;ăđúng, thôiăđ c
AND AL, OFH ; không, đ i mã ASCII ra s
SHL BX, 1 ; d chătráiăBXă1ăbítăđ l y ch
OR BL, AL ; chèn bít v aăđ c vào k t qu
JMP TIEP ; đ c ti p m t ký t
THOIDOC:MOV CX, 16 ; CX ch a s bít c a BX
MOV AH, 2 ; hàm hi n ký t
HIEN:XOR DL, DL ;ăxoáăDLăđ chuẩn b đ i
ROL BX, 1 ;ăđ aăbítăMSBăc a BX sang CF
ADC DL, 30H ;ăđ i giá tr bítăđóăraăASCII
INT 21H ; hi n th 1 bít c a BX
LOOP HIEN ; l p l iăchoăđ n h t
MOV AH, 4CH ; tr v DOS
INT 21H
MAIN Endp
END MAIN

Ch ngătrìnhăh p ng cho công vi căđưănêuăđ c hình thành t 2 phần, m t phần


v i ch cănĕngăđ c và m t phần v i ch cănĕngăhi n th .
Thu t toán cho phầnăđ c:ăđ c m t ký t s , chuy n mã ASCII ra s r i chèn s đ c
đ c vào BX theo th t t ph i qua trái, l p l i công vi c trên các s khác.
Thu t toán cho phần hi n th ng c l i so v i phầnăđ c: l y ra 1 bít c a s đóătrongă
BX theo th t t trái qua ph i, đ i s đóăraămưăASCII r i cho hi n th nó ra màn hình,
l p l i công vi c trên cho các s khác.

71
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086

Các thu t toán c a 2 phần trên v c ă b n có th ng d ngă đ că choă tr ng h p


ph iăđ c và hi n th s h m i sáu ho c h m i.
M t s Chú ý t ch ngătrìnhătrên:
 L nh xóa thanh ghi BX là r t cần thi tăđ sau này khi gõ vào các bít c a
nó không nh t thi t ph iă gõă đ 16 bít mà v nă xácă đ nhă đ c giá tr c a
thanh ghi này.
 Ch ngătrìnhănƠyădùngăl nhăROLăđ quay tròn thanh ghi BX, vì v y sau
khi quay và hi n th t t c 16 bít c a BX, giá tr c a thanh ghi BX v n
đ c b o toàn.
 Ch ngătrìnhănƠyădùngăl nh c ng có nh ADC m t cách r t hi u d ngăđ
l y ra 1 bít c a thanh ghi BX t giá tr c a c CFăvƠăđ iăluônăđ c nó ra
mã ASCII cần thi t cho vi c hi n th .
4.4 Víăd ă4
Trong thanh ghi BX có s n 4 s h m i sáu, m i s đ c bi u di n b ng 1 ô m u:

Hãy l pătrìnhăđ bi năđ i thanh ghi BX thành:

(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

ROR BH, CL ; tráo 4 bít th p và cao c a BH


MOV AH, 4CH ; tr v DOS
INT 21H
MAIN Endp
END MAIN
4.5 Víăd ă5
Có m t chu i ký t th ng trong b nh . Hãy t o ra m t chu i ký t ch hoa t
chu i trên r i c t chu iăđóătrongăb nh .
Gi i:
Ví d này và ví d tr c khi khác nhau chút ít trong vi c x lý các ký t c a chu i,
vì v y phần trên các l nh có tính ch t chuẩn b tr c và sau các thao tác v i chu i có th
coiălƠănh ănhau. Đ gi i bài toán này có th ng d ng các l nh LODSB và STOSB v i
chu iăđưăcho. Cácăb c th c hi n:
 L y t ng ký t c a chu i g că(cũ)ăb ng l nh LODSB,
 Bi năđ i thành ch hoa b ng cách tr điă20H,
 C t ký t đưăbi năđ i vào chu iăđíchă(m i) b ng l nh STOSB.
SauăđơyălƠăcáchăt ch c d li uăvƠăch ngătrìnhăchoăbƠiătoánătrênăv iăđ dài chu i
là 8 byte. Đ minh ho m t cách thao tác khác so v i cách ví d tr c trong ví d này
là dùng cách thao tácălùiăđ i v i chu i ký t .
. Model Small
. Stack 100
. Data
Str1 DB 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'
Tbao DB 'chu iăđưăđ căđ i: ', 10, 13
DB '$'
. Code
MAIN Proc
MOV AX, @Data ; kh iăđầuăđầu cho DS và ES
MOV DS, AX
MOV ES, AX
LEA SI, Str1+7 ; SI ch vào cu i chu iăcũ
LEA DI, Str2+7 ; DI ch vào cu i chu i m i
STD ;ăđ nhăh ng lùi
MOV CX, 8 ; CX ch a s byte ph iăđ i
LAP: LODSB ; l y 1 ký t c a chu iăcũ
SUB AL, 20H ;ăđ i thành ch hoa

73
Cả NẢ 3.L P TậÌNả ả P NẢ V I 8086

STOSB ; c t vào chu i m i


LOOP LAP ;ălƠmăchoăđ n h t
LEA DX, Tbao ; chuẩn b hi n chu i m i
MOV AH, 9
INT 21H
MOV AH, 4CH ; v DOS
INT 21H
MAIN Endp
END MAIN

74
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Ch ngă4. PH IăGHÉPăVIăX ăLệăV IăB ăNH VÀ CÁC


THI TăB ăVÀO/RA

1. CỄCăTệNăHI UăC AăVIăX ăLệăVÀăCỄCăM CHăPH ăTR ă

1.1 Cácătínăhi uăc aă8086

Hình 4-1. Tín hi u 8086

Hình v trên cho chúng ta th y tín hi u c a 8086. Ch cănĕngăcác tín hi u t i các


chân c th nh ăsau:
 ADO ậ AD15 [I;O: tín hi u vào và ra]: Các chân d n kênh cho các tín hi u buýt
d li u và buýt đ a ch . Xung ALE s báo cho m nh ngoài bi t khi nào trên các
đ ngăđóăcóătínăhi u d li u (ALE = 0) ho căđ a ch (ALE = 1). Các chân này
tr ng thái tr kháng cao khi P ch p nh n treo.
 A16/S3, A17/S4, A18/S5, A19/S6 [O]: Các chân d n kênh c aăđ a ch phần cao
và tr ng thái. Đ a ch A16 - A19 đ c truy n trên các chơnăđóăkhiăALEă=ă1ăcònă
75
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

khiăAELă=ă0ăthìătrênăcácăchơnăđóăcóăcácătínăhi u tr ng thái S3-S6. Các chân này


tr ng thái tr kháng cao khi P ch p nh n treo.

B ng 4-1. Các bít tr ng thái và vi c truy nh păcácăthanhăghiăđo n.


S4 S3 Truy nh păđ n
0 0 Đo n d li u ph
0 1 Đo năngĕnăx p
1 0 Đo n mã ho căkhôngăđo n nào
1 1 Đo n d li u

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.

 RD [O]: Xungăchoăphépăđ c. Khi RD = 0 thì buýt d li u s n sàng nh n s li u


t i b nh ho c thi t b ngo i vi. Chân RD tr ng thái tr kháng cao khi P
ch p nh n treo.
 READY [I]: Tín hi u báo cho CPU bi t tình tr ng s n sàng c a thi t b ngo i vi
hay b nh . Khi READY = 1 thì CPU th căghi/đ c mà không cần chèn thêm các
chu kỳ đ i. Ng c l i khi thi t b ngo i vi hay b nh có t căđ ho tăđ ng ch m,
chúng có th đ aătínăhi uăREADYă=ă0ăđ báo cho CPU bi t. Lúc này CPU t kéo
dài th i gian th c hi n l nhăghi/đ c b ng cách chèn thêm các chu kỳ đ i.
 INTR [I]: Tín hi u yêu cầu ng tăcheăđ c. Khi có yêu cầu ng t mà c cho phép
ng t IF = 1 thì CPU k t thúc l nhăđangălƠmăd , sauăđóănóăđiăvƠoăchuăkỳ ch p nh n
ng tăvƠăđ aăraăbênăngoƠiătínăhi u INTA = 0.
 TEST [I]: Tín hi u t i chơnă nƠyă đ c ki m tra b i l nh WAIT. Khi CPU th c
hi n l nhă WAITă mƠă lúcă đóă tínă hi u TEST =1, nó s ch choă đ n khi tín hi u
TEST = 0 thì m i th c hi n l nh ti p theo.
 NMI [I]: Tín hi u yêu cầu ng tă khôngă cheăđ c. Tín hi u này không b kh ng
ch b i c IF và tín hi u này s đ c CPU nh n bi t b ngăcácătácăđ ng c aăs n
lên c a xung yêu cầu ng t. Nh năđ c yêu cầu này CPU k t thúc l nhăđangălƠmă
d , sauăđóăchuy n sang th c hi năch ngătrình ph c v ng t ki u INT2.
 RESET [I]: tín hi u kh iăđ ng l i 8086. khi RESET = 1 kéo dài ít nh t trong th i
gian 4 chu kỳ đ ng h thì 8086 b bu c ph i kh iăđ ng l i: nó xoá các thanh ghi
DS, ES, SS, IP và FR v 0 và b tă đầu th c hi nă ch ngă trìnhă t iă đ a ch
CS:IP=FFFF:0000H (chú ý c IF 0ăđ c m các yêu cầu ng tăkhácătácăđ ng vào
CPU và c TF0ăđ b vi x lý không ch đ ch y t ng l nh).
76
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

 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 IO/ M [O]: Tín hi u này phân bi t trong th iă đi măđưăđ nh phần t nào


trong các thi t b vào/ra (IO) ho c b nh (M)ă đ c ch n làm vi c v i
CPU. Trên buýt đ a ch lúcăđóăs cóăcácăđ a ch t ngă ng c a các thi t b
đó. Chân này tr ng thái tr kháng cao khi P ch p nh n treo.

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.

o ALE [O]: Xung cho phép ch tăđ a ch . KhiăALEă=ă1ăcóănghĩaălƠătrênăbuýt


d năkênhăADăcóăcácăđ a ch c a thi t b vào/ra hay c a ô nh . ALE không
bao gi b th n i (trong tr ng thái tr kháng cao) khi CPU b treo thì ALE
= 0.

o DT/ R [O]: Tín hi uăđi u khi năcácăđ m 2 chi u c a buýt d li uăđ ch n

cao khi P ch p nh n treo.


chi u chuy n c a v n d li u trên buýt D. Chân này tr ng thái tr kháng

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.

o HOLD [I]: Tín hi u yêu cầuătreoăCPUăđ m ch ngoài th c hi n vi c trao


đ i d li u v i b nh b ng cách truy nh p tr c ti p. Khi HOLD = 1. CPU
8086 s t tách ra h th ng b ng cách treo t t c các buýt A, buýt D, buýt
77
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

C (các buýt tr ng thái tr khángă cao)ă đ b đi u khi n DMA (DMA


Contrroller) l y quy năđi u khi n h th ngăđ th c hi n traoăđ i d li u.

B ng 4-2. Các chu kỳ c a buýt qua các tín hi u SS0 , IO/ M , DT/ R

IO/ M DT/ R SS0 Chu kỳ đi u khi n c a buýt

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.

S2 S1 S0 Chu kỳ đi u khi n c a buýt Tín hi u

0 0 0 Ch p nh n yêu cầu ng t INTA


0 0 1 Đ c thi t b ngo i vi IORC

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 1 0 Ghi thi t b ngo i vi IOWC, AIOWC


0 1 1 D ng (halt) Không
1 0 0 Đ c mã l nh MRDC
1 0 1 Đ c b nh MRDC

1 1 0 Ghi b nh MWTC, AMWC


1 1 1 Buýt r i (ngh ) Không

o RQ / GT 0 và RQ / GT1 [I/O]: Các tín hi u yêu cầu dùng buýt c a các b


x lý khác ho c thông báo ch p nh n treo c a CPU. RQ / GT 0 có m că uă
tiênăh n RQ / GT1 .
o LOCK [O]: Tínăhi uădoăCPUăđ aăraăđ ăc mă cácăb ăx ălỦăkhácătrongăh ă
th ngădùngăbuýt trongăkhiănóăđangăthiăhƠnhăm tăl nhănƠoăđóăđ tăsauăti pă
đầuăLOCK.
o QS0 và QS1 [O]: Tínăhi uăthôngăbáoăcácătr ngătháiăkhácănhauăc aă
đ mă l nhă(hƠngăđ iă l nh) nh ătrong B ng 4-4. Khi cóăb ăđ ngăh ăx ălỦă
toánă h că 8087, cácă tínă hi uă nƠyă đ că m chă 8087ă dùngă đ ă đ ngă b ă quáă
trìnhăho tăđ ngăv iăb ăviăx ălỦ 8086.
B ng 4-4. Các tr ng thái c a l nhăđ m

QS1 QS0 Tr ngătháiăl nhăđ m

0 0 Khôngăho tăđ ng

0 1 Đ căbyteămưăl nhăđầuătiênăt ăđ măl nhă

1 0 Đ căl nhăr ngă

1 1 Đ căbyteăti pătheoăt ăđ măl nh

1.2 Phơnăkênhăđ ătáchăthôngătinăvƠăvi căđ măchoăcácăbuýt


Đ h n ch s l ng chân cho các tín hi u c a vi m ch CPU, ng iătaăđưăh n ch
s chân c a vi m ch b ng cách d n kênh nhi u tín hi u trên cùng m t chân. Các chân
AD0 ậ AD16 c a 8086 đ c d năkênhăđ có th đ aăraăbênăngoƠiăcácăthôngătinăv đ a ch
và d li u. Khi nh năđ c các tín hi uăđóă bên ngoài vi m ch, cần ph i ti n hành tách
các tín hi uăđ tái t o l i các tín hi u g c cho các buýt đ c l p (buýt đ a ch và buýt d

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.

8086 Chế độ max

Vcc CLK MRDC#


MWTC#
S0# AMWC#
S1#
8288
8284A CLK IORC#
S2# Bus
Clock READY IOWC#
Generator Controller
RESET AIOWC#
DEN
RDY DT/R# INTA#
8086 ALE
CPU
MN/MX#
LE
OE#
BHE
# 74LS373
AD15:AD0 A19:A0,
x3
ADDR/DATA BHE#
A19:A16
INTR

DIR
EN#
74LS245
74LS245 D15:D0
x2
ADDR/Data x2

Hình 4-3. Buýt h th ngă8086ăcóăđ m

Hình 4-3 cho th y m t ví d v vi c tách tín hi uăđ a ch t các tín hi u d n kênh


ch /d li u ho căđ a ch /đi u khi n b ng các m ch ch t 74LS373 và vi c s d ng các b
khu chăđ iăđ m 74LS244 và 74LS245 cho các tín hi u c a b vi x lý 8086 làm vi c
ch đ MAX. Hình 4-3 còn th hi n ghép n i v i các m ch ph tr nh : b đi u khi n
buýt 8288, b t oăraăxungăđ ng h 8284.
1.3 M chăt oăxungănh pă8284.
CPU 8086 luônăcầnăxungănh pă(xungăđ ngăh )ăt ăm chăt oăxungănh p 8284. M chă
t oăxungănh păkhôngănh ngăcungăc păxungănh păv iătầnăs ăthíchăh păchoătoƠnăh ămƠănóă
cònăcóă nhăh ngăt iăvi căđ ngăb ătínăhi uăRESETăvƠătínăhi uăREADYăc aăCPU (Hình
4-4). ụănghĩaăc a các tín hi u nh ăsau:

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.

 RDY1, RDY2: cùng v i AEN1 , AEN 2 dùngăđ t o ra các chu kỳ đ i CPU.

 ASYNC : Ch nă đ ng b hai tầng ho că đ ng b m t tầng cho tín hi u RDY1,


RDY2. Trong ch đ đ ng b m t tầng ( ASYNC = 1) tín hi u RDY có nhăh ng
đ n tín hi u READY t i s n xu ng c aăxungăđ ng h ti p theo. Còn trong ch
đ đ ng b hai tầng ( ASYNC = 0) tín hi u RDY ch có nhăh ngăđ n tín hi u
READYăkhiăcóăs n xu ng c aăxungăđ ng h ti p theo.
 READY: N iăđ năđầu READY c a CPU. Tín hi uănƠyăđ căđ ng b v i các tín
hi u RDY1, RDY2.
 X1, X2: N i v i hai chân c a th ch anh v i tần s fx, th ch anh này là m t b
ph n c a m t m chădaoăđ ng bên trong 8284 có nhi m v t o xung chuẩn dùng
làm tín hi uăđ ng h cho toàn h th ng.

 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.

 RES : Chân kh iăđ ng, n i v i m chăRCăđ 8284ăđ t kh iăđ ng khi b t ngu n.


 RESET: N i vào RESETc a 8086 và là tín hi u kh iăđ ng l i cho toàn h
 CSYNC: L iăvƠoăchoăxungăđ ng b chung khi trong h th ng có các 8284 dùng
daoăđ ng ngoài t i chân này (Hình 4-4)
Hình 4-4 bi u di nă cácă đ ng n i tín hi u chính c a 8086 và 8284. M ch 8284
nh nă đ c xung kh iă đ ng t bên ngoài thông qua m ch RC khi có ngu n ho c xung
kh iăđ ng l i khi b m công t c Reset. T xung này 8284 có nhi m v đ aăraăxungăkh i
đ ngăđ ng b cho CPU cùng v i t t c các thành phần khác c a h th 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

Hình 4-4. N i 8284 v i vi x lý

1.4 M chăđi uăkhi năbuýt 8288


Vi m ch 8288 là m chăđi u khi n buýt s d ng m t s tín hi uăđi u khi n c a CPU
và cung c p t t c các tín hi uăđi u khi n cần thi t cho h vi x lý khi CPU 8086 làm
vi c ch đ MAX. S ăđ chân và các tín hi u c a 8288.

Hình 4-5. B đi u khi n buýt 8288

Các tín hi u chính c a 8288 bao g m:

 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

A19/S6 - A16/S3 A19 - A16 S6 - S3

__
IO/M
____
RD
______
DEN

Xung đọc
Truy nhập
địa chỉ
Xác lập
Trễ địa dữ liệu
chỉ

Hình 4-6. Bi uăđ đ căđ năgi n hóa

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

AD15 - AD0 A15 – A0 D15 - D0 (tới buýt ngoài )

A19/S6 - A16/S3 A19 - A16 S6 - S3

A19 - A0 A19 - A0 from 74LS373


from 74LS373 to memory
__
IO/M
_____
WR
______
DEN

Độ rộng xung
ghi

2 xung nhịp

Trễ điều
Chờ dữ liệu khiển

Hình 4-7. Bi uăđ ghiăđ năgi n hóa

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.

2. PH IăGHÉPăVIăX ăLệăV IăB ăNH

2.1 Gi iăthi uăb ănh


Cácăb ănh ăbánăd năth ngădùngăv iăb ăviăx ălỦăbaoăg m:

 B nh c đ nh ROM (Read Only Memory) hay b nh ch đ đ c ra.


Thông tin ghi trong m ch không b m t khi m t ngu nă đi n nuôi cho
m ch.
 B nh bán c đ nh EPROM (Erasable Programmable ROM) là b nh
ROM có th l pătrìnhăđ c b ngăxungăđi năvƠăxoáăđ c b ng tia c c tím.

 B nh truy nh p ng u nhiên RAM (Random Access Memory) thông tin


ghi trong m ch b m t khi m t ngu năđi n nuôi cho m ch. Trong các b
nh RAM còn phân bi t ra lo iă RAMă tĩnhă (Static RAM), trong đóă m i
phần t nh là m t m ch l t hay tr ng thái nă đ nh) và lo iă RAMă đ ng
(Dynamic RAM ) trongă đóăm i phần t nh là m t t đi n r t nh đ c
ch t o b ng công ngh MOS.
M tăb ănh ăth ngăđ căxơyăd ngăt ănhi uăviăm chănh . M tăviăm chănh ăth ngă
cóăd ngăc uătrúcătiêuăbi uănh ăhình sau đơy.

86
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Hình 4-8. Vi m ch nh khái quát

Theoăs ăđ ăkh iănƠyătaăth yăm tăl viăm nhănh ăcóăcácănhómătínăhi uăsau:


a) Nhóm tín hi uăđ a ch :
Các tín hi uăđ a ch có tác d ng ch n ra m t ô nh c a vi m ch nh . Các ô
nh cóăđ dài khác nhau (còn g i là t nh ) tuỳ theo nhà s n xu t: 1, 4, 8,
bít. S đ ng tín hi uăđ a ch cóăliênăquanăđ nădungăl ng c a m ch nh .
V i m t m ch nh có m bít đ a ch thìădungăl ng c a m nh nh đóălƠă2m
t nh . Ví d , v iămă=ă10ădungăl ng m ch nh là 1K ô nh (1 kilô = 210 =
1024) và v iă m=20ă dungă l ng m ch nh là 1M ô nh (1 Mêga = 220 =
1048576).
b) Nhóm tín hi u d li u:
Các tín hi u d li uăth ngălƠăđầuăraăđ i v i m ch ROM ho căđầu vào/ra
d li u chung (hai chi u)ăđ i v i m ch RAM. Ngoài ra có lo i m ch nh
RAM v iăđầuăraăvƠăđầu vào d li u riêng bi t. Các m ch nh th ngăcóăđầu
ra d li u ki u 3 tr ng thái. S đ ng dây d li u quy tăđ nhăđ dài t nh
c a m ch nh . Thôngăth ngăng iătaăhayănóiărõădungăl ngăvƠăđ dài t
nh cùng m t lúc. Ví d m ch nh dungă l ng 1 Kx8 (t c là 1KB) ho c
16Kx4. . .
c) Tín hi u ch n vi m ch (ch n v ):
Các tín hi u ch n vi m ch là CS (chip select) ho c CE (chip enable)
th ngăđ cădùngăđ t o ra vi m ch nh c th đ ghi/đ c. Tín hi u ch n vi
m ch các m chăRAMăth ng la CS , còn m chăROMăth ng là CE .
Các tín hi u ch n vi m ch th ngăđ c n i v iăđầu ra c a b gi iămưăđ a
87
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

ch . Khi m t m nh nh khôngăđ c ch n thì buýt d li u c a nó b treo (


tr ng thái tr kháng cao).
d) Nhóm tín hi uăđi u khi n:
Tín hi uăđi u khi n cần có trong t t c các m ch nh . Các m ch nh ROM
th ng có m tăđầuăvƠoăđi u khi n OE (output enable)ăđ cho phép d li u
đ căđ aăraăbuỦt. Khi m ch nh khôngăđ c m b i OE thì buýt d li u
đ c treo. M t m ch nh RAM n u ch có m t tín hi uă đi u khi n thì
th ngăđó là R / W đ đi u khi năquáătrìnhăghi/đ c. N u m ch nh RAM
có hai tín hi uăđi u khi năđóăth ng là WE (write enable)ăđ đi u khi n ghi
và OE đ đi u khi nă đ c. Hai tín hi u này ph i lo i tr l n nhau (ng c
pha) đ đi u khi n vi căghi/đ c m ch nh .
M t thông s đ cătr ngăkhácăc a b nh là th i gian truy nh p tac đ căđ nhănghĩaă
nh ălƠăth i gian k t khiăcóăxungăđ a ch trênăbuỦtăđ a ch choăđ n khi có d li u ra n
đ nh trên buýt d li u. Th i gian truy nh p b nh ph thu c r t nhi u vào công ngh ch
t o.
2.2 Gi iămưăđ aăch ăchoăb ănh ă

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

Hình 4-9. M ch gi iămưăđ a ch t ng quát

Gi iămưăđầyăđ cho m t m ch nh đòiăh i ta ph iăđ aăđ năđầu vào c a m ch gi i


mã các tín hi uăđ a ch sao cho tín hi u đầu ra c a nó ch ch n riêng m ch nh đưăđ nh.
Trongătr ng h p này ta ph i dùng t h păđầy đ c aăcácăđầuăvƠoăđ a ch t ngă ngăđ
ch năđ c m ch nh . Nói cách khác, t m t t h p tín hi uăđ a ch , b gi i mã s ch
sinh ra m t tín hi u ch n v duy nh t ng v iăkhôngăgianăđ a ch c p cho vi m ch nh .
Gi iămưăđ a ch thi u hay gi i mã rút g n thì ta ch dùng m t nhóm trong s các tín
hi uăđ a ch đ sinh ra tín hi u ch n v cho m ch nh . Nh ăv y, t m t t h p các tín
hi uăđ a ch có th sinh ra nhi u tín hi u ch n v khác nhau. Vì s d ng ít tín hi uăh nă
nên m ch gi i mã thi u cần ít linh ki năh nănh ngăl i làm m tătínhăđ nătr c a xung ch n
thuăđ c đầu ra.
Ví d : Chíp nh Căcóădungăl ng 10000H ô nh vƠăđ c gán cho d iă đ a ch t
00000H-0FFFFH. Đ sinh ra tín hi u ch n v cho C ta có th s d ng duy nh t tín hi u
đ a ch A16 m c th p (A16=0) ho c c b n tín hi u A16-A19 m c th p (A16=. . .
=A19=0). V iă tr ng h p th nh t ta có gi i mã thi u do A16=0 có th do các yêu cầu
truy nh p t i d iăđ a ch 20000H-2FFFFH.
Thôngăth ng khi thi t k m ch gi iămưăng i ta hay tính d ra m t chút đ n u có
s thayăđ i do ph iătĕngăthêmădungăl ng c a b nh thì v n có th s d ngăđ c m ch
gi iămưăđưăđ c thi t k . Nói cách khác, h th ng có th m r ng thêm không gian nh
b ng các b sung thêm các vi m ch nh . Phầnăd iăđơyăs xem xét m t s ph ngăphápă
th c hi n m ch gi iămưăđ a ch b nh .

89
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.2 TểựẾ ểi ỉ m Ếể Ểi i mụ ẽằỉỂ ẾáẾ m Ếể lô-ỂỬẾ đ ỉ Ểi ỉ


Các m ch lô-gícă đ nă gi n bao g m các m ch AND, OR, NOT hay k t h pă nh ă
NAND, NOR. B ng các m ch ki u này ta có th xây d ngăđ c m ch gi iă mưăđ a ch
đ năgi n v i s đầu ra h n ch . Các m ch lô-gíc làm nhi m v t h p các tín hi uăđ a ch
vƠăđi u khi năđ c/ghi b nh sao cho v i m t t h păđ a ch choătr c s sinh ra tín hi u
ch n v t ngă ng.

Hình 4-10. M ch gi i mã dùng m ch lô-gíc

Hình 4-10 gi i thi u m ch gi i mã cho m chăEPROMă2716ăcóădungăl ng 2K ô


nh m i ô ch a 8 bít, làm vi c trong d iăđ a ch FF800H-FFFFFH. Do m ch nh có dung
l ngă2Kăt ngă ng v i d iăđ a ch 0FFH-7FFHă(t ngă ng v i A0. . . A10). Nh ăv y, s
l ng các tín hi uăđ a ch dùng sinh ra tín hi u kích ho t chíp nh này là A11-A19. V i d i
đ a ch choătr c FF800H-FFFFFH thì t h p A11=. . . =A19=1 s sinh ra tín hi u ch n v
cho EPROM 2716. Bên c nhăđó, ta cần ph i h p v i các tín hi uăđi u khi n IO/ M và
RD ( m c th p)ăđ t o ra tín hi u ch n v .

Nh ătrongăhìnhăv , các tín hi uăđ a ch và tín hi uăđ o c a IO/ M đ c liên k t tr c


ti p v i nhau b ng phép lô-gíc AND r iăđ o. Do tín ch t c a m ch AND k t qu t h p
là duy nh t. Đầu ra s ch b ng 1 khi t t c đầu vào b ng 1. Đầu ra c a m ch NAND
đ c OR v i RD (m c th p)ăđ sinh ra tín hi u ch n v (kích ho t). T ngăt , do tính
ch t c a m chăORăđầu ra s ch b ng 0 n u t t c cácăđầu vào b ng 0 nên tín hi u ch n
v là tín hi u duy nh tăđ c sinh ra ng v i thao tác truy nh p t i d iăđ a ch FF800H-
FFFFFH. Nh ăv y, m ch gi i mã trên là m ch gi iămưăđầyăđ .

90
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.3 TểựẾ ểi ỉ ẽ Ểi i mụ ếùỉỂ m Ếể Ểi i mụ ỏỬẾể ể ị


Khi ta mu n có nhi uăđầu ra ch n v t b gi i mã mà v n dùng các m ch logic
đ nă gi n thì thi t k s tr nên r t c ng k nh do s l ng các m chă tĕngă lên. Trong
tr ng h pănh ăv yătaăth ng s d ng các m ch gi i mã tích h p có s n. M t trong các
m ch gi iămưăhayăđ c s d ng là 74LS138 cho phép gi i mã 3 tín hi uăđầu vào thành 8
tín hi uăđầu ra.

Hình 4-11. 74LS138 và b ng tr ng thái

Gi s chúng ta cần xây d ng m ch gi i mã cho không gian nh 256KBăt ngă ng


v i d iăđ a ch F8000H-FFFFFHătrongăđóăm i m ch nh 2732 có dung l ng 4K×8. T
d iăđ a ch đ căgánăvƠădungăl ng c a t ng m ch nh , có th th y r ng t các tín hi u
đ a ch A13 t i A19 cần ph i sinh ra 8 tín hi u kích ho t các vi m ch nh ng v i 8 d iăđ a
ch nh ăb ngăd iăđơy:

B ng 4-5. D i tín hi u c a các m ch nh 2732

Đ aăch A19-A16 A15 A14 A13 A12

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

Qua b ng trên, ta th y ch có các tín hi u A12-A14 lƠăthayăđ i còn A15-A19 b ng 1 và


khôngăđ i. Nh ăv y ta có th s d ng m ch gi iămưă74LS138ăđ sinh ra các tín hi u ch n
v cho các m ch nh nh ăhìnhăsau:

Hình 4-12. Gi i mã s d ng 74LS138

Các tín hi u A12-A14 đ c n i tr c ti p vào tín hi u đầu vào (A-C) c a 74LS138.


Các tín hi uăđ a ch còn l i A15-A19 và các tín hi uăđi u khi n IO/ M đ c n i vào tín
hi uăđi u khi n c a 74LS138 (G2A, G2B). Tín hi u G1 luôn m c lô-gíc 1. Cácăđầu ra
c aă74LS138ăđ c n i lầnăl t v i các m ch nh ng v i d i đ a ch gánătr c.
T i ví d này ta th y m ch gi i mã có s n 74LS138 có s l ngăđầuăvƠoăđ a ch và
đầu vào cho phép h n ch . N u ta có s l ngăđầuăvƠoăchoăđ a ch l n mà ta l i ph i gi i
mưăđầyăđ đ th c hi n b gi iămưăđưăhoƠnăch nh ta v n ph i dùng thêm các m ch logic
ph . ĐơyăcũngălƠălỦădoăđ ng i ta thay th các b gi i mã ki u này b ng các b gi i mã
dùng PROM ho c PLA (Programable Logic Array) v iă uăđi m chính là chúng có r t
nhi uăđầu vào cho các bít đ a ch và vì th r t thích h p trong các h vi x lý sau này v i
khôngăgianăđ a ch l n.

92
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.4 TểựẾ ểi ỉ ẽ Ểi i mã dùng PROM

Vi c s d ng b nh ROM làm b gi i mã l i d ng s l ng l n các tín hi uăđ a


ch đầu vào, đi u khi n và d li u ra c a m ch nh ROM. V i m i t h p tín hi uăđ a ch
vƠăđi u khi năđầu vào, m ch nh ROM s sinh ra m t nhóm tín hi u trên kênh d li u.
Tr ng thái c a các tín hi u d li u này tùy thu c vào giá tr đ căl uăvƠoătrongăROMă
tr căđó. N u các tín hi u này lo i tr l n nhau thì các tín hi u d li u có th đ c dùng
làm các tín hi u ch n vi m ch nh .
D iăđơyăs d ng m ch PROM 256 byteăđ làm b gi i mã cho ví d phân vùng b
nh cho ROM trong phầnătr c. Trong b ng d iăđơyălà m u các bít đ ghi vào PROM
choătr ng h p c th này.

B ng 4-6. M u d li u ghi vào ROM

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

Hình 4-13. Gi i mã dùng ROM

M ch gi i mã cho b nh PROMăđ c th hi n trên hình trên so v i cách th c hi n


b gi i mã b ng 74LS138 chúng ta không ph iă dùngă đ n các m ch ph đi u này làm
gi măđángăk kíchăth c v t lý c a b gi i mã. Ngoài ra ta có th d dƠngăthayăđ iăđ a
ch c a các m ch nh b ngăcáchăthayăđ i v trí và giá tr d li u trong m ch nh gi i mã
ROM.

3. PH IăGHÉPăVIăX ăLệăV IăTHI TăB ăVÀOăRA

3.1 Gi iăthi uăv ăthi tăb ăvƠo/ra


Đ i v i 8086 (hay h 80x86 nói chung) có 2 cách ph i ghép CPU v i các thi t b
ngo i vi (các c ng vào/ra, I/O):
a) Thi tăb ăvƠo/raăcóăkhôngăgianăđ aăch ătáchăbi t
Trong cách ph i ghép này, b nh đ c dùng toàn b không gian 1MB mà
CPU dành cho nó. Các thi t b ngo i vi (các c ng) s đ c dành riêng m t
không gian 64KB cho m i lo i c ng vào ho c ra. Đ phân bi t các thao tác
truy nh p, ta ph i dùng tín hi u IO/ M =1, và các l nhătraoăđ i d li u m t
cách thích h p cho m iăkhôngăgianăđó. V i các thi t b này cần s d ng các
câu l nh IN, OUTăđ traoăđ i d li u.

94
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Hình 4-14. Không gian nh c a thi t b vào/ra và b nh chính

b) Thi tăb ăvƠo/raăvƠăb ănh ăcóăchungăkhôngăgianăđ aăch


Trong cách ph i ghép này, b nh và thi t b ngo i vi cùng chia nhau không
gian đ a ch 1MB mà CPU 8086 có kh nĕngăđ a ch hóa. Các thi t b ngo i
vi s chi m m tăvùngănƠoăđóătrongăkhôngăgiană1MB, phần còn l i là c a b
nh . T tănhiênătrongătr ng h p này ta dùng chung tín hi u IO/ M =0 và l nh
traoăđ i d li u ki u l nh MOV cho c b nh và thi t b ngo i vi
3.2 Gi iămưăđ aăch ăthi tăb ăvƠoăra

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:

Hình 4-15. Gi i mã thi t b dùng c ng lô-gíc

Trongătr ng h p cần nhi u xung ch n đầu ra cho các c ngăvƠo/raăcóăđ a ch liên


ti p, ta có th dùng các m ch gi i mã có s n ki u 74LS138. Nh ătrên hình d iăđơy trình
bày 2 m chăt ngăt nhauădùngă74LS138ăđ gi iămưăđ a ch cho 8 c ng vào và 8 c ng ra.

95
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Trênăc ăs m chănƠyătaăcũngăcóăth ph i h p v i c hai tín hi uăđ căvƠăghiăđ t o ra tín


hi u ch n cho vi căđ c/ghi t ng c ng vào/ra ra c th .

Hình 4-16. Gi iămưăđ a ch c ng dùng 74LS138

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

Hình 4-17. Ghép n i v i bàn phím

96
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Hình 4-17 bi u di n ghép n i gi a 8086 v i bàn phím 16 s d ng ti pă đi m. Vi


m chă 74LS374ă đ că dùngă đ đi u khi n các tín hi u hàng vƠă 74LS244ă dùngă đ đi u
khi n các tín hi u c t c a bàn phím. Nguyên t c ho tăđ ng c a m tăphímănh ăsau. N u
tín hi u X m c cao (lô-gícă1)ăthìăđi- t s khóa l i, v y nên ti păđi măYăcóăđóngăxu ng
hay không thì t iăđầuăOătaăluônăthuăđ căđi năápă5Vă(khôngăcóădòngăđi n). N u tín hi u
X m c th p (lô-gíc 0), thìăđi- t m và khi ti păđi mă Yăđóngăxu ng t iă đầu O ta thu
đ căđi n áp 0V. B ng cách quét tuần t cácăhƠngăvƠăđ c trên các c t ta s xácăđ nhăđ c
phím b m. Gi s tín hi uă đ a ch gi i mã vi m chă đ m c ng 374 là 0AH còn 244 là
0BH,ăđo nămưăsauăđơyăchoăphépăxácăđ nhăphímăCăcóăđ c b m hay không:
Hang EQU 0AH
Cot EQU 0BH
MOV AL,11111110b ; Ch có D0=0
OUT Hang, AL
Ktra: IN AL, Cot ;ăĐ c tín hi u c t
AND AL,00001000b ; Gi l i bít D3 ng v i phím C
JNZ Ktra ; Không b m
... ;ăPhímăCăđ cb m

Hình 4-18 bi u di n m t m ch hi n th s s d ng vi m ch 7447 và. LED b y


đo n.ă7447ăchoăphépăđi u khi n các LED b yăđo n b ng cách gi i mã s BCD t iăđầu
vào (A-D) và sinh ra các tín hi u kích ho t các thanh led c a LED b yăđo n (a-g).ăĐ ti t
ki măchiăphí,ă7447ăđ c dùng chung cho c 7 LED b yăđo n. Vi c kích ho t LED b y
đo năđ căđi u khi n thông qua c ng A và các transitor Q1-Q7, d li u s cần hi n th
đ c g i qua c ngăB.ăĐo nămưăsauăđơyădùngăđ ki m tra h th ng LED b ng cách hi n
th trên c 7 LED s 8. Chú ý r ngăđ b t 1 LEDi ta cầnăđ aătínăhi u d li u Di=0 trên
c ng 0AH t i transitor Qi t ngă ng.
DK_LED EQU 0AH ; C ngăđi u khi n LED
DL_LED EQU 0BH ; C ng d li u hi n th
MOV AL,FFH ; T t t t c các LED
OUT DK_LED, AL
MOV CX,64 ; Tr b ng 64 l nh NOP
Tre: NOP
LOOP Tre
97
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

MOV AL,8 ;ăĐ aăs 8 ra 7447


OUT DL_LED,AL
XOR AL,AL ;ăĐ t AL=0
OUT DK_LED,AL ; B t t t c các LED

Hình 4-18. Ghép n i hi n th s

4. GI IăTHI UăM TăS ăVIăM CHăH ăTR ăVÀOăRA

Đ th c hi nătraoăđ i d li u vào/ra, vi x lý có th s d ng m t s vi m ch chuyên


d ngăchoăphépătraoăđ i d li u ki uăsongăsongănh ăIntelă8255Aăh tr 3 c ng d li u 8
bítăhayătraoăđ i d li u n i ti pănh ăIntelă8251 hay 8250.
4.1 Ghépăn iăsongăsongădùngă8255A

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)

Hình 4-19.ăS ăđ kh i 8255A

Các tín hi u c aă8255AăcóăỦănghĩaănh ăsau :

CS: Ch năchípă(m căth p)ă PA7-PA0: C ngăAă


RD: Đ că(m căth p)ă PB7-PB0: C ngăBă
WR: Ghiă(m căth p)ă PC7-PC0: C ngăCă
A0A1: Ch năc ngă D7-D0: D ăli uă
Vi m ch 8255A cung c p 3 c ng vào/ra A, B,ăvƠăCăcóăđ r ng 8 bít, chia làm 2
nhóm A, B. Các c ng này có th đ c l pătrìnhăđ làm vi c trong ba ch đ :
a) Chế độ 0: Vào/ra cơ sở:
Ch đ này cung c păthaoătácăvƠo/raăđ năgi n cho t ng c ng, trên các c ng
khôngăăcóătínăhi uăk tăn i.ăCácăc ngăA,ăBăvƠăCăcóăth ăđ căchiaăthƠnhă2 c ng 8
bít (A,B) và 2 c ng 4 bít (C th p PC0-PC3, C cao PC4-PC7). B t kỳ c ng nào có
th dùng làm c ng vào/ra.

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 địa chỉ

Buýt điều khiển

Buýt dữ liệu

Hình 4-20. Các ch đ 0

b) Chế độ 1: Vào/ra thăm dò


Ch đ này ch đ c cung c p trên hai c ng A,B, m i c ng có kênh d li u là
8 bít và 4 tín hi uăđi u khi n l y t c ng C. D li u trên kênh có th là vào hay ra.
Các nhóm tín hi uăđi u khi năvƠo/raănh ăsau:

Đ 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:

Hình 4-21. Ghép n i các tín hi uăđi u khi n ở ch đ 1

100
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Các tín hi uăđi u khi n ra này bi năđ iănh ăhìnhăv d iăđơy

Hình 4-22. Bi uăđ th i gian tín hi u ra

V i c ng A các tín hi uăđi u khi n ho tăđ ngănh ăsau:


 OBFA (Đ m ra c aăPAăđầy). Tín hi u báo cho thi t b ngo i vi bi t CPU
đưăghiăd li u vào c ngăđ chuẩn b đ aăra.ăTínăhi uănƠyăth ngăđ c n i
v i STB c a thi t b nh n.
 ACKA (Tr l iăđưănh năđ c d li u).ăĐơyălƠătínăhi u c a thi t b ngo i vi
cho bi tălƠănóăđưănh năđ c d li u t PA c a 8255A.
 INTRA (Yêu cầu ng t t PA).ăĐơyălƠăk t qu thuăđ c t quan h gi a các
tín hi u khác c aă8255Aătrongăquáătrìnhăđ i tho i v i thi t b ngo i vi, nó
đ cădùngăđ ph n nh yêu cầu ng t c a PA t i CPU.
 INTEA là tín hi u c a m t m ch l tăbênătrongă8255Aăđ cho phép/c m yêu
cầu ng t INTRA c aăPA.ăINTEAăđ c l p/xoá thông qua bit PC6 c a PC.
Các tín hi uăđi u khi năvƠoăthayăđ iănh ăhìnhăv d iăđơy

Hình 4-23. Bi uăđ th i gian tín hi u vào

101
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

 STB (Choăphépăch tă d ăli u):ăKhiăd ăli uăđưăs năsƠngăđ ăđ căđ că


vƠoăb ngăPA,ăthi tăb ăngo iăviăph iădùngă STB đ ăbáoăchoă8255Aăbi tă
đ ăch tăd ăli u.
 IBFă (Đ mă vƠoă đầy):ă Sauă khiă 8255Aă ch tă đ că d ă li uă doă thi tă b ă
ngo iăviăđ aăđ nănóăđ aăraătínăhi uăIBFăđ ăbáoăchoăthi tăb ăngo iăviă
bi tălƠăđưăch tăxong.
 INTRă :ă Tínă hi uă đ ă báoă choă CPUă bi tă lƠă đưă cóă d ă li uă s nă sƠngă đ ă
đ căt ăPA.ăĐơyălƠăk tăqu ăthuăđ căt ăquanăh ăgi aăcácătínăhi uăkhácă
c aă8255Aătrongăquáătrìnhăđ iătho iăv iăthi tăb ăngo iăviă

c) Chế độ 2: Vào/ra hai chiều


Ch đ này ch áp d ngăđ c cho c ng A và t t c các tín hi u c a c ng C
đ c dùng làm tín hi u k t n iănh ătrongăHình 4-24. Các tín hi u k t n i bi năđ i
tuỳ thu c theo d li uăđ c g iăraăhayăđ c v t c ng A.

Hình 4-24. Các tín hi u k t n i hai chi u và bi uăđ th i gian

4.1.2 L ị ỏrửỉể 8255A


Các thanh ghi c aă8255Aăđ căxácăđ nh qua tính hi uăđ a ch A0A1 nh ăsau
A1 A0 Thanh ghi
x x Khôngăs ăd ng
0 0 C ngăAă(PA)
0 1 C ngăBă(PB)
1 0 C ngăCă(PC)
1 1 Đi uăkhi n
ụănghĩaăcácăbítăc aăthanhăghiă đi u khi n ch đ ho tă đ ngănh ătrongă Hình 4-25.
ChúăỦăkhiănƠyăbítăcóănghĩaăl n nh t c aăthanhăghiăđi u khi n nh n giá tr 1. Thanh ghi

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.

Hình 4-25.ăThanhăghiăđi u khi n ch đ

Hình 4-26.ăĐ t xoá các tín hi uăđi u khi n trên c ng C

103
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

4.2 Truy năthôngăn iăti pă


Vi c truy n thông tin gi a các b ph n n m gần nhau trong h th ng vi x lý có th
th c hi n thông qua buýt song song m r ng ho c qua các m ch ph i ghép song song
trongăđóăcácăbyteăho căđ c truy năđi trên m t t păcácăđ ng d n b ng m ch in ho c dây
cápătrongătr ng h p cần ph i truy n thông tin gi a các thi t b cách xa nhau, ta không
th dùng c t păcácăđ ngădơyănh ătrênămƠăph i có cách truy n khácăđ đ m b o ch t
l ng tín hi uăcũngănh ti t ki măđ c s đ ng dây d n cần thi t. T yêu cầu trên ra
đ iăph ng pháp truy n thông tin n i ti p, tín hi uăđ c truy năđiăliênăti p t ng bít trên
m tă đ ngădơyă (nh ăđ ngăđi n tho i chẳng h n). đầu thu tín hi u n i ti p s đ c
bi nă đ iă ng c l iă đ tái t o hi u d ng song song thích h p cho vi c x lý ti p theo.
Trong th c t cóă2ăph ngăphápătruy n thông tin ki u n i ti p: đ ng b vƠăkhôngăđ ng
b .
Trongăph ngăphápătruy năđ ng b , d li uăđ c truy n theo t ng kh i v i m t t c
đ xácăđ nh. Kh i d li uătr căkhiăđ c truy năđiăs đ c b sung thêm các phần t đ c
bi t đẩu và cu i t o thành khung. Các phần t nƠyădùngăđ đánhăd uăđi m b tăđầu
c a kh i d li u hay các thông tin giúp phát hi n l i trong quá trình truy n. Hình 4-27
bi u di n c u trúc khung d li u đ truy nă đ ng b . Đơyă th c ch t là cách đi u khi n
h ng ký t vì các ký t đ c bi tă đ că dùngă đ đánhă d u các phần khác nhau trong
khung.

Hình 4-27. C uătrúcăkhungăđ ng b

Trong cách truy n thông d b , d li uăđ c truy năđiătheoăt ng ký t riêng bi t.


Đ dài ký t có th thayăđ i t 5ăđ n 8 bít. Ký t cần truy năđiăđ c g n thêm 1 bít đánhă
d u đầuăđ báo b tăđầu kí t (Start bit) và m t ho c hai bít báo k t thúc kí t (Stop bit),
và m t bít ki m tra tính toàn vẹn d li u (Parity bit). Vì m i kí t đ c nh n d ng riêng
bi t nên nó có th đ c truy năđiăvƠoăb t kì lúc nào. Gi a các kí t truy năđiăcóăth có
các kho ng cách v th i gian. D ng th c c a d li u truy năđiătheo ph ngăphápăd b
đ c th hi n trên hình d iăđơy.

104
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Hình 4-28. C u trúc d li u truy n d b

T căđ truy n d li uătheoăph ngăphápăn i ti păđ căđoăb ng bít/chu kỳ. Ngoài ra


ng iătaăcũngăhayădùngăđ năv baud. ĐóălƠăgiáătr ngh chăđ o c a th i gian gi a các lần
thayăđ i m c tín hi u, v i d li u ch có hai m c (0 và 1) và m iăthayăđ i m c tín hi u
ch mã hoá m t bít thì t că đ baud b ng t că đ bít/s. Trongă cácă ph ngă phápă mưă hóaă
khác, ng i ta có th mã hóa nhi uăh năm t bít thông tin trên m t tr ng thái tín hi u. Các
giá tr t căđ truy n th ng g p trong th c t là 2400, 4800, 9600. . .
Đ t oăđi u ki n d dàng cho vi c ph iăghépăđ ng truy n n i ti p v i h vi x lý
vƠăđ gi m t iăđaăcácăm ch ph thêm ngoài. Ng iătaăđưăch t o ra các vi m ch t h p
c l n l p trình có kh nĕngăhoƠnăthƠnh các công vi c cần thi t trong khi ph iăghépăđóălƠă
các m ch thu phát d b v nă nĕngă (Universal Asynchronous Receiver - Transmitter
UART) và m chă thuă phátă đ ng b - d b v nă nĕngă (Universal Synchronous -
Asynchronous Receiver - Transmitter USART).
V i các m ch ph iă ghépă nh ă trên, vi c truy n tin d b chẳng h n s đ c th c
hi n nh m t c p USART đầu phát và đầu thu.

4.2.1 M Ếể USAậT 8251A

4.2.1.a Sơ đồ khối và tín hiệu


Trong phần này ta s gi i thi u m ch 8251A, đóălƠăm ch USART có th dùng cho
hai ki u truy n thông tin n i ti păđ ng b . S ăđ kh i c a m ch 8251A c aăIntelăđ c
bi u di n trên hình d iăđơy.

105
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Hình 4-29.ăS ăđ kh i 8251A

Các tín hi u c a m ch 8251A hầu h t là gi ng tín hi u c a 8086. Chân ch n v c a


8251A ph iăđ c n i v iăđầu ra c a m t m ch gi iămưăđ a ch đ đ t m ch 8251A vào
m tăđ a ch c ăb nănƠoăđó.
+ CLK [I]: Chân n iăđ năxungăđ ng h c a h th ng.
+ TxRDY [0]: Tín hi uăbáoăđ m gi r ng (s n sàng nh n ký t m i t CPU)
+ RxRDY [0]: Tín hi uăbáoăđ măthuăđầy (có ký hi u n m ch CPUăđ c vào)
+ TxEMPTY [0]: Tín hi u báo c đ măthuăvƠăđ măphátăđ u r ng.
+ C/D [I]: CPU thao tác v i thanh ghi l nh/thanh ghi d li u c a 8251A, khi
C/D=1 thì thanh ghi l nhă đ c ch n làm vi c. Chơnă nƠyă th ngă đ c n i v i A0 c a
buýt đ a ch đ cùng v i các tín hi u WR và RD ch n ra 4 thanh ghi bên trong 8251A.
+ RxC [I] và TxC [I]: Xungăđ ng h cung c p cho các thanh ghi d ch c a phần thu
và phần phát. Th ng 2 thanh này n iăchungăđ phần thu và phần phát làm vi c v i cùng
tầng s nh p. Tần s c aăcácăkhungăđ ng h đ aăđ năchơnăRxCăvƠăTxCăđ c ch n sao
cho là b i s (c th là g p 1, 16 ho c 64) c a t căđ thu hay t căđ phát theo yêu cầu.

106
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

+ DSR DTR là hai c p tín hi u yêu cầu thi t b modem s n sàng và tr l i


c a modem v i tín hi u yêu cầu.
+ RTS CTS là c p tín hi u yêu cầu modem s năsƠngăphátăvƠăđápă ng c a
modem v i tín hi u yêu cầu.
+ SYNDET/BRKDET [O]: khi 8251A làm vi c ch đ khôngăđ ng b , n u RxD
=ă0ăkéoădƠiăh năth i gian c a 2 ký t thì chân này có m căcaoăđ báo là vi c truy n ho c
đ ng truy n b giánăđo n. Khi 8251A làm vi c ch đ đ ng b , n u phần thu tìm th y
ký t đ ng b rong b nătinăthuăđ c thì chân này có m c cao.
Đ m phần phát c a m ch 8251A là lo iăđ m kép, bao g măđ m gi vƠăđ m phát.
Trong khi 1 ký t đangăđ c chuy năđiă đ m phát thì m t ký t khác có th đ aăt CPU
sangăđ m gi . Các tín hi u TxRDY và TxEMPTY s cho bi t tr ng thái c aăcácăđ m này
khi m ch 8251A ho tăđ ng.
Khiăđ m phầnăthuăđầy thì s có tin shi u RxRDY = 1. N uăchoăđ n khi phần thu
nh năđ c ký t m i mà CPU không k p th iăđ căđ c ký t cũăs b m t do b đèăb i ký
t m i nh năđ c. Hi năt ng này g iălƠăthuăđè.

4.2.1.b Các thanh ghi bên trong của 8251A


Nh ăđưănóiă trên chân C/D (gi i s nóăđ c n i vào A0 c a buýt đ a ch ) cùng các
tín hi u WR và RD s ch n ra 4 thanh ghi bên trong c a m ch USART, thanhăghiăđ m
d li u thu, thanhă ghiă đ m d li u phát, thanh ghi tr ngă tháiă vƠă thanhă ghiă đi u khi n
(B ng 4-7).
B ng 4-7. Các thanh ghi bên trong c a 8251A

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

Hình 4-30. Thanh ghi ch đ (d b )

Trong t ch đ , đ i v i ký t cần truy n ta có th ch n s bít (ki u mã) c a ký t ,


s bít stop và t căđ truy n. N u có s n tầng s xungăđ ng h cho phần thu ho c phần
phát (gi s là Fdk) và ta mu n truy n (thu/phát) d li uăv óiăt căđ X baud, ta ph i ch n
h s nhân t căđ truy n K sao cho th a mãn bi u th c.
Fdk = X. K, trongăđóăXălƠăcácăt căđ truy n tiêu chuẩn.
Ví d : n u ta có tần s xungăđ ng h phát là 19. 200Hz và ta mu n truy n d li u
v i t căđ 1. 200 baud thì ta ph i ghi t ch đ có 2 bít cu iălƠă10ăđ ch năđ c h s
nhân t căđ truy n là 16, vì 1200 x 16 = 19. 200. V i vi c dùng tần s đ ng h cho phần
thu/ăphátăcaoăh năsoăv i t căđ truy n ta s gi măđ c l i khi truy n thông tin.
Hìnhă d iă đơyă gi i thi u các giá tr c a thanh ghi l nh khi ho tă đ ng ch đ
truy năđ ng b . ch đ này ta không ph i quan tâm t i t căđ phát, thayăvƠoăđóătaăcần
xácăđ nh s l ng ký t đ ng b vƠăđ dài c a các ký t truy năđi.

108
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Hình 4-31. Thanh ghi ch đ (đ ng b )

Thanh ghi l nh:


C u trúc thanh ghi l nhănh ăsau:

Hình 4-32. C u trúc thanh ghi l nh

Thanh ghi tr ng thái

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

Hình 4-33. C u trúc thanh ghi tr ng thái

4.2.1.c Lập trình 8251A


Đ l pătrìnhăchoă8251Aătr c tiên ta cần xác l p ch đ ho tăđ ng b ng cách tính
giá tr c a thanh ghi ch đ và g i ra c ngăđi u khi n. Đ g i ho c nh n d li u ta cần
liên t c ki m tra tr ng thái c aă8251Aătheoăl uăđ đ c/ghiăđ năgi n sau:

Hình 4-34.ăL uăđ đ c/ghiăđ năgi n

110
Cả NẢ 4. Pả I ẢảÉP VI X LÍ V I B Nả VÀ CÁC TảI T B VÀO/ậA

Hình 4-35. Ghép n i 8251A

Hình 4-35 gi i thi u m ch gi i mưăđ a ch cho 8251A và ghép n i tín hi u n i ti p


theo chuẩn RS232. Vi m ch 8251A ho tăđ ng 2 c ng 78H và 79H (0111 100x). L uăđ
đ c có th đ c tri năkhaiănh ăsau:
DK EQU 79H ;ăThanhăghiăđi u khi n
TThai EQU 79H : Thanh ghi tr ng thái
DL EQU 78H ;Thanh ghi d li u
khoitao: MOV AL, 11001111b ; Xác l p ch đ 8251A d b 2 bít stop,
OUT DK,AL ; 8 bít d li u không ch n lẻ, t căđ x64

Ktra: IN AL, TThai ; Ki m tra tr ng thái


AND AL,02H ; Bít 2 thanh ghi tr ng thái RxRDY
JNZ Ktra
DocDL: IN AL, DL
.... ; X lý d li u

111
Cả NẢ 6. CÁC B VI ĐI U KảI N

Ch ngă5. T NGăQUANăV ăCỄCăPH NGăPHỄP VÀO RA


D ăLI U

1. GI IăTHI U

Kỹ thu tătraoăđ i d li u gi a máy vi tính và các thi t b ngo iăviăđ c g i là vào/ra


hay I/O (Input/Output). Thi t b liên l c v i máy vi tính qua các giao ti p vào/ra. Ng i
dùng có th nh păch ngătrìnhăvƠăd li u b ng các dùng bàn phím và ch yăcácăch ngă
trìnhăđ l y k t qu . Nh ăv y, các thi t b vào/ra k t n i t i máy vi tính cung c p cách
th c liên l c ti n l i v i th gi i bên ngoài. Các thi t b vào/ra ph bi n g m có bàn
phím, màn hình, máy in và đĩaăc ng.
Đ c tính c a các thi t b vƠo/raăth ng khác v iăđ c tính c a máy vi tính. Chẳng
h nănh ăt căđ c a các thi t b th ng ch măh nămáyăviătính, đ dài t (word)ăvƠăđ nh
d ng d li uăcũngăkhácănhauăgi a thi t b và máy tính. Đ hai bên có th liên l căđ c
v i nhau cần có các m ch giao ti p gi a thi t b vào/ra và máy tính. Giao ti p cung c p
traoăđ i d li u vào/ra qua buýt vào/ra. BuỦtănƠyăthôngăth ng chuy n t i 3 lo i tín hi u:
đ a ch thi t b , d li u và l nh.
Cóăbaăph ngăphápătraoăđ i d li u gi a máy vi tính và các thi t b vào/ra: vào/ra
l p trình (programmed I/O) hayăthĕmădò, vào/ra b ng ng t và truy nh p tr c ti p b nh
(Direct Memory Access DMA). Dùng vào/ra thĕmă dò, vi x lý ch y m tă ch ngă trìnhă
th c hi n toàn b cácătraoăđ i d li u gi a vi x lý và các thi t b bên ngoài. Đ c tính ch
y u c aăph ngăphápănƠyălƠăthi t b th c hi n các ch cănĕngăđ c ch đ nh b iăch ngă
trình bên trong b nh c a vi x lý. Nói cách khác, vi x lỦăđi u khi n hoàn toàn các trao
đ i d li u.
V i vào/ra b ng ng t, thi t b có th b t vi x lý d ng vi c th c hi năch ngătrìnhă
hi n th iă đ thi t b có th t ch yă ch ngă trìnhă khácă g iă lƠă ch ngă trìnhă ph c v ng t.
Ch ngătrìnhănƠyăđápă ng yêu cầu c a thi t b . Sau khi k t thúcăch ngătrìnhănƠy, câu
l nh tr v t ng tăđ tr l i quy n đi u khi năchoăch ngătrìnhăb ng t.
Truy nh p b nh tr c ti p là kỹ thu tăvƠo/raămƠătrongăđóăd li u có th đ c trao
đ i gi a b nh c a máy tính v i thi t b nh ă c ng mà không cần s can thi p c a vi
x lý. Thôngă th ng, ph ngă phápă nƠyă cần s d ng vi m chă đ c bi t g i là vi m ch
DMA.
Trong máy tính s d ng h đi u hành, ng iă dùngă th ng làm vi c v i thi t b
vào/ra o. Ng i dùng không ph i quan tâm t iăcácăđ c tính c a thi t b . Thay vƠoăđó,
ng i dùng th c hi nătraoăđ i d li u thông qua các d ch v v o/ra do h đi u hành cung

112
Cả NẢ 6. CÁC B VI ĐI U KảI N

c p. V cĕnăb n, h đi uăhƠnhăđóngăvaiă tròăgiaoăti p gi aăch ngătrìnhăng i dùng và


phần c ng thi t b . H đi u hành h tr t o nhi u các thi t b lô-gíc hay thi t b vào/ra o
vƠăchoăphépăng i dùng liên l c tr c ti p v i các thi t b này. Ch ngătrìnhăng i dùng
hoàn toàn không bi tăđ c vi c ánh x gi a thi t b o và thi t b v t lý. Nh ăv y, khi
thi t b o gán cho thi t b v t lý khác thì không ph i thay đ iăch ngătrìnhăng i dùng.
2. VÀO/RAăB NGăPH NGăPHỄPăTHĔMăDọ

V năđ đi u khi n vào/ra d li u s tr nên đ năgi n n u thi t b ngo i n u lúc nào


cũngăs năsƠngăđ làm vi c v i CPU. Ví d , b ph n do nhi tăđ s (nh ălƠăm t thi t b
vào) l p s n trong m t h th ngăđi u khi nălúcănƠoăcũngăcóăth cung c p s đoăv nhi t
đ c aăđ iăt ng cầnăđi u ch nh, còn m t b đènăLEDă7ănétă(nh ălƠăm t thi t b ra) dùng
đ ch th m t giá tr nƠoăđóăc a m tăđ iăl ng v t lý nh tăđ nh trong h th ng nói trên thì
lúcănƠoăcũng có th bi u hi năthôngătinăđó. Nh ăv y khi CPU mu n có thông tin v nhi t
đ c a h th ng thì nó ch vi căđ c c ng ph i ghép v i b đoănhi tăđ , và n u CPU mu n
bi u di n thông tin v aăđ căđ cătrênăđènăLEDăthìănóăch vi căđ aătínăhi uăđi u khi n t i
đó mà không cần ph i ki m tra xem các thi t b nƠyă cóă đangă s n sàng làm vi c hay
không.
Tuy nhiên trong th c t không ph iălúcănƠoăCPUăcũngălƠmăvi c v iăcácăđ iăt ng
"liên t c s năsƠng"ănh ătrên. Thôngăth ng khi CPU mu n làm vi c v i m tăđ iăt ng
nƠoăđó, tr c tiên nó ph i ki m tra xem thi t b đóăcóăđangă tr ng thái s n sàng làm vi c
hay không; n u có thì nó m i th c hi n vào vi cătraoăđ i d li u. Nh ăv y, n u làm vi c
theoăph ngăth căthĕmădòăthìăthôngăth ng CPU chia sẻ th i gian ho tăđ ng cho vi c
traoăđ i d li u và vi c ki m tra tr ng thái s n sàng c a thi t b ngo i vi thông qua các tín
hi u móc n i (handshake signal).

Hình 5-1. Vào/ra l p trình v i nhi u thi t b

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

đ c g i là m chă đi u khi n ng t l pă trìnhă đ c (Programmable Interrupt Controller,


PIC). ĐóălƠăm t vi m ch c l n có th x lỦătr căđ c 8 yêu cầu ng t v i các m că uă
tiênăkhácănhauăđ t o ra m t yêu cầu ng tăđ aăđ năđầu vào INTR (yêu cầu ng tăcheăđ c
c a CPU 8086. N u n i tầng 1 m ch 8259A ch v i 8 m ch 8259A th ta có th nâng
t ng s các yêu cầu ng t v i các m că uătiênăkhácănhauălênăthƠnhă64.

3.2.1 CáẾ Ệể i ẾểứẾ ỉăỉỂ ẾểỬỉể Ếủa 8259A


S ăđ kh i c aă8259Aăđ c trình bày trong hình v d iăđơy

Hình 5-2.ăS ăđ kh i 8259

 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

 Kh iăđ m n i tầng và so sánh: ghi nh và so sánh s hi u c a các m ch


8259A có m t trong h vi x lý.

3.2.2 CáẾ ỏỬỉ ểi Ố Ếủa 8259A


M t s tín hi u trong m ch 8259 có tên gi ngănh ăcácătínăhi u tiêu chuẩn c a h vi
x lý 8086. Ngoài ra, còn có m t s tín hi uăđ c bi t khác c a 8259A g m:
+ CAS0-CAS2 [I, O]:ălƠăcácăđầuăvƠoăđ i v i các m ch 8259A th ho căcácăđầu ra
c a m ch 8259A ch dùng khi cần n i tầngăđ tĕngăthêmăcácăyêuăcầu ng t cần x lý.

+ SP / EN [I, O]: khi 8259A làm vi c ch đ khôngăcóăđ m buýt d li uăthìăđơyălƠă


tín hi u vào dùng l pă trìnhă đ bi n m ch 8259A thành m ch th ( SP  0 ) ho c ch
( SP  1 ); khi 8259A làm vi c trong h vi x lý ch đ cóăđ m buýt d li u thì chân này
là tín hi u ra EN dùng m đ m buýt d li uăđ 8086 và 8259A thông vào buýt d li u
h th ng. Lúc này vi căđ nhănghĩaăm ch 8259A là ch ho c th ph i th c hi n thông qua
t đi u khi năđầu ICW4.
+ INT [O]: tín hi u yêu cầu ng tăđ n chân INTR c a CPU 8086.

+ INTA [I]: n i v i tín hi u báo ch p nh n ng t INTA c a CPU.


Hình v d iăđơyăth hi n ghép n i 8259A v i h th ng buýt c a 8086. N u h vi
x lý 8086 làm vi c ch đ MAXăth ng ta ph i dùng m chăđi u khi n buýt 8288 và
cácăđ m buýt đ cung c p các tín hi u thích h p cho buýt h th ng. M ch 8259A ph i
làm vi c ch đ cóăđ măđ n iăđ c v i buýt h th ng này.

116
Cả NẢ 6. CÁC B VI ĐI U KảI N

Hình 5-3. Ghép n i 8259 v i buýt 8086/8088

3.2.3 L ị ỏrửỉể ẾểỊ PIC 8259A


Đ m ch PIC 8259A có th ho tăđ ngăđ c theo yêu cầu, sau khi b t ngu n c p
đi n PIC cần ph iăđ c l p trình b ngăcáchăghiăvƠoăcácăthanhăghiă(t ngăđ ngăv i các
c ng) bên trong các từ điều khiển khởi đầu (ICW) và tiếp sau đó là các từ điều khiển
hoạt động (OCW).
Các t đi u khi n kh iăđầuădùngăđ t o nên các ki u làm vi căc ăb n cho PIC, còn
các t đi u khi n ho tă đ ng s quy tă đ nh cách th c làm vi c c th c a PIC. T đi u
khi n ho tăđ ng s đ c ghi khi ta mu năthayăđ i ho tăđ ng c a PIC.
3.2.3.a Các từ điều khiển khởi đầu ICW
PIC 8259A có t t c 4 t đi u khi n kh iă đầu là ICW1 - ICW4. Trong khi l p
trình cho PIC không ph iălúcănƠoătaăcũngăcần dùng c 4 t đi u khi n. Hìnhăd iăđơyăth
hi n th t ghiăvƠăđi u ki năđ ghiăcácăđi u khi n ICW vào 8259A.

117
Cả NẢ 6. CÁC B VI ĐI U KảI N

Hình 5-4. Trình t s d ng các thanh ghi khởiăđ u

Đ 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

Hình 5-5. D ng th c c a ICW1

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. . .

Hình 5-6. D ng th c c a ICW2

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.

Hình 5-7. D ng th c c a ICW3 cho m ch ch và th

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.

Hình 5-8. D ng th c c a ICW4

120
Cả NẢ 6. CÁC B VI ĐI U KảI N

Bít SFNM = 1 cho phép ch n ch đ uătiênăc đ nhăđ c bi t. Trong ch đ này


yêu cầu ng t v i m că uătiênăcaoănh t hi n th i t m t m ch th làm vi c theo ki u n i
tầng s đ c m ch ch nh n bi t ngay c khi m ch ch cònăđangăph i ph c v m t yêu
cầu ng t m ch th khácă nh ngă v i m că uă tiênă th pă h n. Sau khi các yêu cầu ng t
đ c ph c v xongă thìă ch ngă trìnhă ph c v ng t ph i có l nh k t thúc yêu cầu ng t
(EOI)ăđ tătr c l nh tr v (IRET)ăđ aăđ n cho m ch 8259A ch .
Khi bít SFNM = 0 thì ch đ uătiênăc đ nhăđ c ch n (IR0: m că uătiênăcaoănh t.
IR7: m că uătiênăth p nh t) th căraăđ iăv óiăm chă8259Aăkhôngădùngăđ n ICW1 thì ch
đ nƠyăđưăđ c ch nănh ălƠăngầmăđ nh. 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 IRi = 1) lúc này t t c các yêu cầu khác v i
m că uătiênăcaoăh n có th ng t yêu cầu khác v i m că uătiênăth păh n.
Bít BUFăchoăphépăđ nh nghĩaăm chă8259Aăđ làm vi c v iăCPUătrongătr ng h p
cóăđ m ho căkhôngăcóăđ m n i v i buýt h th ng. Khi làm vi c ch đ cóăđ m (BUF =
1). Bít M/S = 1/0 cho phép ta ch n m chă8259Aăđ làm vi c ch đ ch / th . SP/EN
tr thƠnhăđầu ra cho phép m đ măđ PIC và CPU thông v i buýt h th ng.
Bít AEOI = 1 cho phép ch n cách k t thúc yêu cầu ng t t đ ng. Khi AEOI = 1 thì
8259A t đ ng xóa ISRi = 0 khi xung INTA cu i cùng chuy n lên m c cao mà không
lƠmăthayăđ i th t uătiên. Ng c l i. Khi ta ch n cách k t thúc yêu cầu ng tăth ng
(AEOIă=ă0)ăthìăch ngătrìnhăph c v ng t ph i có thêm l nhăEOIăđ tătr c l nhăIRETăđ
k t thúc cho 8259A.

3.2.3.b Các từ điều khiển hoạt động OCW


Các t đi u khi n ho tăđ ng OCW s quy tăđ nh m ch 8259A s ho tăđ ngănh ăth
nào sau khi đ c kh iăđầu b ng các t đi u khi n ICW. T t c các t đi u khi n này s
đ c ghi vào các thanh ghi trong PIC khi A0 = 0, tr OCW1ăđ c ghi khi A0 = 1.
o OCW1

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)

Hình 5-9. OCW1 Tr ng thái yêu c u ng t

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 .

Hình 5-10. Tr ng thái ng t và ch đ quay m că uătiên

 Ch đ quayă(đ i) m că uătiênăch đíchădanh:

122
Cả NẢ 6. CÁC B VI ĐI U KảI N

ch đ này cần ch rõă(đíchădanh)ăđầu vào IRi nào, v i i=L2L1L0, đ c gán


m că uă tiênă th p nh t, đầu vào IRi+1 s đu c t đ ng gán m că uă tiênă caoă
nh t.
Tr l i các v năđ liênăquanăđ n OCW, vi c ph i h p các bít R, SL và EOI ph i
v iănhauăđ t o ra các l nhăquyăđ nh các cách th c k t thúc yêu cầu ng t cho các ch đ
làm vi căkhácănhauăđưănóiăđ n phần trên nh ăsau:
1. K t thúc yêu cầu ng tă th ng: ch ngă trìnhă cònă ph c v ng t ph i có l nh
EOIăđ tătr c l nh tr v IRET cho 8259A. Vi m ch này s xácăđ nh yêu cầu
ng t IRi v aăđ c ph c v và xoá bít ISRiăt ngă ng c aănóăđ t oăđi u ki n
cho chính yêu cầu ng t này ho c các ng t khác có m că uătiênăth păh năcóăth
đ cătácăđ ng.
2. K t thúc yêu cầu ng tă th ng: ch ngă trìnhă con ph c v ng t ph i có l nh
EOI ch đíchă danhă đ tă tr c l nh tr v IRET cho 8259A. 8259Aă xoáă đíchă
danh bít ISRi, v i i=L2L1L0 đ t oăđi u ki n cho chính yêu cầu ng t này ho c
các ng t khác có m că uătiênăth păh năcóăth đ cătácăđ ng.
3. Quayă(đ i) m că uătiênăkhiăk t thúc yêu cầu ng tăth ng:ăch ngătrìnhăconă
ph c v ng t ph i có l nhăEOIăđ tătr c l nh tr v IRET cho 8259A. 8259A
s xácăđ nh yêu cầu ng t th i v aăđ c ph c v . Xóa bít ISRiăt ngă ng và
gán luôn m că uătiênăth p nh tăchoăđầu vào IR, nƠyăcònăđầu vào IRi+1 s đ c
gán m că uătiênăcaoănh t.
Có th theo dõi cách th c ho tăđ ng c a m ch 8259A trong ch đ quayă(đ i)
m că uătiênăkhiăk t thúc yêu cầu ng tăth ng thông qua ví d minh h a trình
bày trên Hình 5-10.

Hình 5-11.ăOCW2ăxácăđ nh x lý các yêu c u ng t

123
Cả NẢ 6. CÁC B VI ĐI U KảI N

4. Quayă(đ i) m că uătiênătrongăch đ k t thúc yêu cầu ng t t đ ng: ch cần


m t lầnăđ aăl nh ch n ch đ đ i m că uătiênăkhiă k t thúc yêu cầu ng t t
đ ng. Có th ch n ch đ này b ng l nh l pă ắch đ quay khi có EOI t
đ ngẰ. T đóătr điă8259Aăs đ i m că uătiênăm i khi k t thúc ng t t đ ng
theoăcáchăt ngăt nh ă m c 3. Mu n b ch đ này ta có th dùng l nh xóa
ắch đ quay khi có EOI t đ ngẰ.
5. Quayă(đ i) m că uătiênăkhiăk t thúc yêu cầu ng tăđíchădanh:ăch ngătrìnhăcònă
ph c v ng t ph i có l nhă EOIă đíchă danhă choă 8259Aă đ tă tr c l nh tr v
IRET. M ch 8259A s xóa bít ISRi c a yêu cầu ng tăt ngă ng và gán luôn
m că uătiênăth p nh tăchoăđầu vào IRi, v i i = L2 L1 L0.
6. L p m că uătiên:ăch đ nƠyăchoăphépăthayăđ i m că uătiênăc đ nh ho c m c
uătiênăgánătr căđóăb ng cách gán m că uătiênăth p nh t cho yêu cầu ng t
IRi ch đíchădanhăv i t h p i = L2 L1 L0. Yêu cầu ng t IRi+1 s đ c gán m c
uătiênăcaoănh t.
o OCW3

T đi u khi n ho tăđ ngăsauăkhiăđ c ghi vào 8259A cho phép:


 Ch năcácăraăthanhăghiăđ đ c
 Thĕmădòătr ng thái yêu cầu ng t b ng cách tr ng thái c aăđầu vào yêu cầu
ng t Iri v i m că uătiênăcaoăn ht cùng mã c aăđầuăvƠoăđóăvƠ.
 Thao tác v i m t n đ c bi t.

Hình 5-12. OCW3

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

Hình 5-13. Thanh ghi IRR và ISR

B ng vi căđ aăvƠoă8259Aăt đi u khi n OCW3 v i bít P = 1 ta có th đ căđ c


trên buýt d li u lầnăđ c ti păngayăsauăđóăt thĕmădò, trongăđóăcóăcácăthôngătinăv yêu
cầu ng t v i m că uătiênăcaoănh tăđangăho tăđ ngăvƠămưăt ngă ng v i yêu cầu ng t y
theo d ng th căđ c bi u di n trên d iăđơy.

D7 D6 D5 D4 D3 D2 D1 D0

1: có ngắt X x X x Số hiệu yêu cầu ngắt

Hình 5-14. D ng th c t thĕmădòătr ng thái

Có th g iă đơyă lƠă ch đ thĕmă dòă yêuă cầu ng t và ch đ nƠyă th ng đ c ng


d ngătrongătr ng h p có nhi uăch ngăph c v ng t gi ng nhau cho m t yêu cầu ng t
và vi c ch năch ngătrìnhănƠoăđ s d ng là trách nhi m c aăng i l p trình.
Tóm l i, mu n dùng ch đ thĕmădòăc aă8259Aăđ xácăđ nh yêu cầu ng t hi n t i
ta cần làm các thao tác lầnăl tănh ăsau:
- C m các yêu cầu ng t b ng l nh CLI
- Ghi t l nh OCW3 v i bít P = 1
- Đ c t thĕmădòătr ng thái yêu cầu ng t trên buýt d li u.
Bít ESMM = 1 cho phép 8259A thao tác v i ch đ m t n đ c bi t. Bít SMM = 1
cho phép l p ch đ m t n đ c bi t. Ch đ m t n đ c bi tăđ cădùngăđ thayăđ i th t
uătiênăngayăbênătrongăch ngătrìnhăconăph c v ng t. Ví d trongătr ng h p có m t
y u cầu ng t c m (b che b iă ch ngă trìnhă ph c v ng t v i t l nh OCW1 mà ta l i
mu n cho phép các yêu cầu ng t v i m că uătiênăth păh năsoăv i yêu cầu ng t b c măđóă

125
Cả NẢ 6. CÁC B VI ĐI U KảI N

đ cătácăđ ng thì ta s dùng ch đ m t n đ c bi t. M tăkhiăđưăđ c l p, ch đ m t n


đ c bi t s t n t i cho t i khi b xóa b ng cách ghi vào 8259A m t t l nh OCW3 khác
v oi bít SMM = 0. M t n đ c bi t không nhăh ng t i các yêu cầu ng tăv óiăm că uă
tiênăcaoăh n)

3.2.3.c Hoạt động của 8086 với 8259A


Cu iăcùngăđ có cái nhìn m t cách có h th ng v ho tăđ ng c a h vi x lý v i
CPU 8086 và PIC 8259A khi có yêu cầu ng t, taătómăl t ho tăđ ng c aăchúngănh ăsau:
1. Khi có yêu cầu ng t t thi t b ngo iăviătácăđ ng vào m t trong các chân IR c a
PIC. 8259A s đ aăINTă=ă1ăđ n chân INTR c a 8086.
2. 8086 đ aăraăxungăINTAăđầuăđ n 8259A
3. 8259AădùngăxungăINTAăđầuănh ălƠăthôngăbáoăđ nó hoàn t t các x lý n i b cần
thi t, k c x lỦă uătiênăn uănh ăcóănhi u yêu cầu ng t cùng x y ra.
4. 8086 đ aăraăxungăINTAăth haiăđ n 8259A
5. Xung INTA th hai khi nă8259Aăđ aăra buýt d li u 1 byte ch a thông tin v s
hi u ng t c a yêu cầu ng t v aăđ c nh n bi t.

6. 8086 dùng s hi u ng tăđ tínhăraăđ a ch ng t c aăvect ăng tăt ngă ng.


7. 8086 c t FR, xóa các c IF và TF và c tăđ a ch tr v CS:IPăvƠoăngĕnăx p.
8. 8086 l yăđ a ch CS:IP c aăch ngătrìnhăph c v ng t t b ngăvect ăng t và th c
hi năch ngătrìnhăđó.

4. VÀO/RAăB NGăTRUYăNH PăTR CăTI PăB ăNH ă

4.1 Kháiăni măv ăph ngăphápătruyănh pătr căti păvƠoăb ănh


Trongăcácăcáchăđi u khi n vi cătraoăđ i d li u gi a thi t b ngo i vi và h vi x lý
b ngăcáchăthĕmădòătr ng thái s n sàng c a thi t b ngo i vi hay b ng cách ng t b vi x
lỦăđưătrình bày cácăch ngătr c, d li uăth ngăđ c chuy n t b nh qua b vi x
lỦăđ r i t đóăghiăvƠoăthi t b ngo i vi ho căng c l i, t thi t b ngo iăviănóăđ căđ c
vào b vi x lỦăđ r i t đóăđ c chuy năđ n b nh . Vì th t căđ traoăđ i d li u ph
thu c r t nhi u vào t căđ th c hi n c a các l nh MOV, IN và OUT c a b vi x lý và do
đóăvi cătraoăđ i d li u không th ti năhƠnhănhanhăđ c.
Trong th c t có nh ng khi ta cầnătraoăđ i d li u th t nhanh v i thi t b ngo i vi:
nh ăkhiăcầnăđ aăd li u hi n th ra màn hình ho cătraoăđ i d li u v i b đi u khi năđĩa.
Trongăcácătr ng h păđóătaăcần có kh nĕngăghiă/đ c d li u tr c ti p v i b nh thì m i
đápă ngăđ c yêu cầu v t căđ traoăđ i d li u. Đ lƠmăđ căđi u này các h vi x lý
nóiăchungăđ u ph i dùng thêm m ch chuyên d ngăđ đi u khi n vi c truy nh p tr c ti p
vào b nh DMAC (Direct Memory Access Controller)
126
Cả NẢ 6. CÁC B VI ĐI U KảI N

Ví d d iă đơyăminhăh aăđi u này. Trong khi m t m chăDMACănh ă8237Aăc a


Inter có th đi u khi n vi c chuy n m t byte trong m t m ng d li u t b nh ra thi t b
ngo i vi ch h t 4 chu kỳ đ ng h thì b vi x lý 8086 ph i làm h t c 4 chu kỳ:
; s chu kỳ đ ng h
LAP: MOV AL, (SI ) ;10
OUT PORT, AL ;10
INC SI ;2
LOOP LAP ; 17
; C NG:39 chu kỳ
Đ h tr cho vi cătraoăđ i d li u v i thi t b ngo i vi b ng cách truy nh p tr c
ti p vào b nh . CPUăth ng có tín hi u yêu cầuătreoăHOLDăđ m i khi thi t b cần dùng
buýt cho vi cătraoăđ i d li u v i b nh thì thông qua chân này mà báo cho CPU bi t.
Đ năl t CPU, khi nh năđ c yêu cầu treo thì nó t treo lên (t tách ra kh i h th ng
b ngăcáchăđ aăcácăbít vào tr ng thái tr kháng cao) vƠăđ aăxungăHLDA raăngoƠiăđ thông
báo CPU cho phép s d ng buýt.
S ăđ kh i c a m t h vi x lý có kh nĕngătraoăđ i d li u theo ki uăDMAăđ c
th hi n trên hình d iăđơy.

Hình 5-15. H vi x lý v i DMAC

Ta nh n th y trong h th ng này, khi CPU t tách ra kh i h th ng b ng cách t


treo ( ng v i v trí hi n th i c a các công t c chuy n m ch), DMAC ph i ch u trách
nhi măđi u khi n toàn b ho tăđ ngătraoăđ i d li u c a h th ng. Nh ăv y, DMAC ph i
có kh nĕngăt oăraăđ c các tín hi u đi u khi n cần thi t gi ngănh ăcácătínăhi u c a CPU
và b n thân nó ph i là m t thi t b l pătrìnhăđ c. Quá trình ho tăđ ng c a h th ng trên
có th đ c tóm t tănh ăsau:
127
Cả NẢ 6. CÁC B VI ĐI U KảI N

Khi thi t b ngo i vi có yêu cầuătraoăđ i d li u ki u DMA v i b nh , nóăđ aăyêuă


cầu DREQ=1ă đ n DMAC, DMAC s đ aă yêuă cầuă treoă HRQ=1ă đ n chân HOLD c a
CPU. Nh n đ c yêu cầu treo, CPU s treo các buýt c a mình và tr l i ch p nh n treo
qua tín hi uă HLDA=1ă đ n chân HACK c a DMAC, DMAC s thông báo cho thi t b
ngo i vi thông qua tín hi u DACK=1 là nó cho phép thi t b ngo iăviătraoăđ i d li u ki u
DMA. khi quá trình DMA k tăthúcăthìăDMACăđ aăraătínăhi u HRQ=0.
4.2 Cácăph ngăphápătraoăđ iăd ăli u
Trong th c t t n t i 3 ki uătraoăđ i d li u b ng cách truy nh p tr c ti p vào b
nh nh ăsau:
 Treo CPU m t kho ng th iăgianăđ traoăđ i c m ng d li u.
 TreoăCPUăđ traoăđ i t ng byte.
 T n d ng th i gian không dùng buýt đ traoăđ i d li u.

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.2.2 TrỀỊ CPU đ ỏraỊ đ i ỏ ỉỂ ẽỔỏỀ.


Trong cách traoă đ i d li u này CPU không b treo lâu dài trong m t lầnă nh ngă
th nh tho ng l i b treo trong kho ng th i gian r t ng nă đ đ traoă đ i 1 byte d li u
(CPU b l y m t m t s chu kỳ đ ng h ). Do b l yăđiăm t s chu kỳ đ ng h nh ăv y lên
t că đ th c hi n m t công vi că nƠoă đóă c a CPU ch b suy gi m ch không d ng l i.
Cách ho tăđ ngăcũngăt ngăt nh ăphầnătr c, ch cóăđi u m i lần DMAC yêu cầu treo
CPU thi ch có m tăbyteăđ cătraoăđ i.

4.2.3 T ỉ ế ỉỂ ỏểời Ểiaỉ CPU ỆểôỉỂ ếùỉỂ buýt đ ỏraỊ đ i ế ệi Ố.


Trongă cáchă traoă đ i d li u này, ta ph i có các logic ph bên ngoài cần thi t đ
phát hi n ra các chu kỳ x lý n i b c aăCPUă(khôngădùngăđ n buýt ngoài) và t n d ng
các chu kỳ đóăvƠoăvi cătraoăđ i d li u gi a thi t b ngo i vi v i b nh . Trong cách làm
này thì DMAC và CPU luân phiên nhau s d ng buýt và vi c truy nh p tr c ti p b nh
ki u này không nhăh ng gì t i ho tăđ ngăbìnhăth ng c a CPU.
4.3 B ăđi uăkhi nătruyănh pătr căti păvƠoăb ănh ăIntelă8237A

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

Hình 5-16.ăS ăđ kh i 8237A

M ch DMAC 8237A ch a 4ăkênhătraoăđ i d li u DMA v i m că uătiênăl p trình


đ c. DMAC 8237A có t căđ truy n 1 MB/s cho m i kênh, m t kênh có th truy n môt
m ngăcóăđ dài 64KB.

4.3.2 CáẾ ỏỬỉ ểi Ố Ếủa 8237A -5


 CLK[I]:tín hi uăđ ng h c a m ch. đ m ch có th làm vi c t t v i h 8086 thì
tín hi u CLK c a h th ngăth ngăđ căđ oătr căkhiăđ aăvƠoăCLKăc a 8237A.
 CS [I]: tín hi u ch n v 8237A chơnănƠyăth ngăđ c n i v iăđầu ra c a b gi i
mưăđ a ch . b gi iămưăđ a ch này không cầnădùngăđ năđầu vào IO/M vì b n thân
DMACăđưăđ c cung c păcácăxungăđi u khi n m i c a hên th ng.
 RESET[I]: tín hi u n i v i tín hi u kh iă đ ng c a h th ng. Khi m ch 8237A
đ c kh iăđ ng riêng thanh ghi m t n đ c l p còn các b ph n sau b xóa:
o Thanhghi l nh
o Thanh ghi tr ng thái
o Thanh ghi yêu cầu DMA
o Thanh ghi t m th i
o M ch l tăbyteăđầu /byte cu i (First/Last)
 READY[I]:tín hi u s n sàng, n i v i READY c a h th ngăđ gây ra các chu kỳ
đ iăđ i v i các thi t b ngo i vi và các b nh ch m.

130
Cả NẢ 6. CÁC B VI ĐI U KảI N

 HLDA [I]:tín hi u báo ch p nhân yêu cầu treo t CPU


 DREQ0-DREQ3[I]:các tín hi u yêu cầu treo t thi t b ngo i vi. C c tính c a các tín
hi u này có th l p trìnhăđ c. Sau khi kh iăđ ng các tín hi unày đ căđ nhănghĩa
là các tín hi u kích ho t m c cao.
 DB0-DB7[I, O]:tín hi u hai chi u n iăđ n buýt đ a ch và buýt d lli u c a h th ng
các tín hi uănƠyăđ c dùng khi l p trình cho DMAC và khi DMAC ho tăđ ng các
chân này ch a 8 bít đ a ch cao A8-A15 c a m ng nh d li u cần chuy n. Trong ch
đ chuy n d li u gi a các vùng c a b nh t i các chân này có các d li uăđ c
chuy n.
 IOR[I, O]VÀ IOW[I, O]: là các chân tín hi u hai chi u dùng trong khi l p trình cho
DMAC và trong các chu kỳ đ c và ghi.
 EOP[I, O]: là tín hi u hai chi uădùngăđ yêu cầu DMAC k t thúc quá trình DMA.
KhiălƠăđầuăraănóăđ cădùngăđ báo cho bên ngoài bi t m tăkênhănƠoăđóăđưăchuy n
xong s byte theo yêu cầu, luc nàyănóăth ngădùngănh ăm t yêu cầu ng tăđ CPU
x lý vi c k t thúc quá trình DMA.
 A0-A3[I, O]:là các tín hi u hai chi uădùngăđ ch n các thanh ghi trong 8237A khi
l pătrìnhă vƠăkhiă đ c (đầu vào), ho căđ chuy n 4 bít đ a ch th p nh t c aăđ a ch
m ng nh cần chuy nă(đầu ra).
 A4-A7[O]:cácăchơnăđ ch aă4ăbítăđ a ch phầnăcaoătrongăbyteăđ a ch th p c aăđ a ch
m ng nh cần chuy n.
 HRQ[O]:tín hi u yêu cầuătreoăđ n CPU. Tín hi uănƠyăth ngăđ căđ ng b v i tín
hi u CLK c a h th ng r iăđ căđ aăđ n chân HOLD c a 8086.
 DACK0-DACK3[0]: là các tín hi u tr l i các yêu cầu DMA cho các kênh. Các tín
hi u này có th đ c l pătrìnhăđ ho tăđ ng theo m c th p ho c m c cao. Sau khi
kh iăđ ng, các tín hi uănƠyăđ căđ nhănghĩaălƠăcácăxungătíchăc c th p.
 AEN[0]: tín hi u cho phép m ch n i vào DB0-DB7 ch t l yăđ a ch c a vùng nh
cầnătraoăđ i theo ki u DMA. Tín hi uănƠyăcũngăchoăphépăc m các m chăđ m buýt
đ a ch và d li u ho c m ch t o tín hi uă đi u khi n c a CPU n i vào các buýt
t ng ng khi DMAC ho tăđ ng.
 ADSTB[0]: xung cho phép ch t các bít đ a ch phần cao A8-A15 có m t trên DB0-
DB7.
 MEMR[0] và MEMW[0]: là các chân tín hi u do DMAC t oăraăvƠădùngăkhiăđ c/ghi
b nh trong khi ho tăđ ng.
Hình v d iă đơyă minhă h a cách ghép n i các tín hi u c a 8237A v i buýt h
th ng.

131
Cả NẢ 6. CÁC B VI ĐI U KảI N

Hình 5-17. Ghép n i 8237 v i buýt h vi x lý

4.3.3 Các thanh Ểểi ẽêỉ ỏrỊỉỂ Ếủa DMAC 8237A


Các thanh ghi bên trong DMAC 8237A đ c CPU 8086 ch năđ làm vi c nh các
bít đ a ch th p A0-A3. B ng d iăđơyăch ra cách th c ch năraăcácăthanhăghiăđó.

B ng 5-1.ăĐ a ch các thanh ghi 8237A

132
Cả NẢ 6. CÁC B VI ĐI U KảI N

Các b ng d iăđơyăchoăbi t các thanh ghi trênătheoăcácăquanăđi m ng d ng


khácănhauăđ d tra c uăđ a ch cho chúng khi l p trình v i DMAC 8237A.

B ng 5-2.ăĐ a ch các thanh ghi trong dùng cho các kênh

B ng 5-3.ăCácăthanhăghiăđi u khi n và tr ng thái

4.3.3.a Thanh ghi địa chỉ hiện thời:


ĐơyălƠăthanhăghiă16ăbítădùngăđ ch aăđ a ch c a vùng nh ph i chuy n. M i kênh
có riêng thanh ghi nƠyăđ ch aăđ a ch . Khiă1ăbyteăđ c truy năđi. Các thanh ghi này t
đ ngătĕngăhayăgi m tuỳ theoătr cănóăđ c l pătrìnhănh ăth nào.

133
Cả NẢ 6. CÁC B VI ĐI U KảI N

4.3.3.b Thanh ghi số đếm hiện thời:


Thanhă ghiă 16ă bítă nƠyă dùngă đ ch a s byte mà kênh ph i truy n(nhi u nh t là
16KB). M i kênh có thanh ghi s byte c a mình. Cácăthanhă ghiă nƠyăđ c ghi b ng s
đ m nh nh tăh nă1ăsoăv i s byte th c chuy n.

4.3.3.c Thanh ghi địa chỉ cơ sở và thanh ghi số đếm cơ sở:


CácăthanhăghiănƠyăđ cădùngăđ ch aăđ a ch và s đ m cho m i kênh khi ch đ
t đ ng kh iăđầuăđ c s d ng.
Trong ch đ này m t quá trình DMA k tăthúcăthìăcácăthanhăghiăđ a ch hi n th i và
s đ m hi n th iăđ c n p l i giá tr cũ l y t thanhăghiăđ a ch c ăs và thanh ghi s đ m
c ăs . Khi các thanh ghi đ a ch hi n th i và s đ m hi n th iăđ c l p trình thì các thanh
ghiăđ a ch c ăs và thanh ghi s đ măc ăs cũngăđ c l p trình b t k ch đ t kh iăđầu
cóăđ c s d ng hay không.

4.3.3.d Thanh ghi lệnh:


ThanhăghiănƠyădùngăđ l p trình cho DMAC. Nó b xoá khi kh iăđ ng ho c khi ta
s d ng l nh xoá toàn b các thanh ghi. D ng th c c a thanh ghi l nh nh ăsau.

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.

4.3.3.e Thanh ghi chế độ:


Dùngăđ t ch đ làm vi c cho các kênh c a DMAC. M i kênh c a DMAC có m t
thanh ghi ch đ riêng. D ng th c c a thanh ghi ch đ đ c bi u di n nh ăsau:

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.

4.3.3.f Thanh ghi yêu cầu:


ThanhăghiănƠyădùngăđ yêu cầu DMA có th đ c thi t l p/ xoá theo ý mu n b ng
ch ngătrình. Đi u này r t có l i khi ta mu n chuy n d li u gi a các vùng khác nhau
c a b nh lúc này các kênh liên quan ph iă đ c l p trình ch đ chuy n c m ng.
D ng th c c a thanh ghi yêu cầu nh ăsau:

4.3.3.g Thanh ghi mặt nạ riêng cho từng kênh:

B ng thanh ghi này ta có th l pătrìnhăđ c m (cho Bít m t n t ngă ng = 1) thay


cho phép ho tăđ ng (cho Bít m t n t ngă ngă=ă0)ăđ i v i t ng kênh m t.

4.3.3.h Thanh ghi mặt nạ tổng hợp:

V i thanh ghi này ta có th l pătrìnhăđ c m (Bít m t n t ngă ng = 1) thay cho


phép ho tăđ ng (Bít m t n t ngă ngă=ă0)ăđ i v i t ng kênh ch b ng m t l nh.
136
Cả NẢ 6. CÁC B VI ĐI U KảI N

4.3.3.i Thanh ghi trạng thái:

ThanhăghiănƠyăchoăphépăxácăđ nh tr ng thái c a các kênh trong DMAC. Kênh nào


đưătruy n xongă(đ t s đ m TC), kênhănƠoăđangăcóăyêuăcầuăDMAăđ traoăđ i d li u. Khi
m tăkênhănƠoăđóăđ t TC. Kênhăđóăs t đ ng b c m. C u trúc thanh ghi tr ngătháiănh
sau:

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

4.3.4 CáẾ ệ ỉể đặẾ ẽi ỏ ẾểỊ DMAC 8237A


Có 3 l nhăđ c bi tăđ đi u khi n ho tăđ ng c a DMAC 8237A. Các l nh này ch
th c hi n b ng các l nh OUT v iăcácăđ a ch c ngăxácăđ nh thì theo thanh ghi mà không
cầnăđ n giá tr c th c a thanh ghi AL.
1. L nh xóa m ch l tă byteă đầu/byte cu i (First/Lát, F/L): F/L là m t m ch l t bên
trong DMAC bít đ ch ra byte nào trong các thanh ghi 16bít (thanhăghiăđ a ch
ho c thanh ghi s đ măđ c ch n làm vi c. N u F/L=1 thi s đóălƠăMSB, còn n u
F/L=O) thì s đóălƠăLSB. M ch l t F/L t đ ngăthayăđ i tr ng tháiăkhiătaăghiă/đ c
cácăthanhăghiăđó. khi kh iăđ ng xong thì F/L=O
2. L nh xoá toàn b các thanh ghi: l nhănƠyăcóătácăđ ngănh ăthaoătácăkh iăđ ng. T t
c cácăthanhăghiăđ u b xoá riêng thanh ghi m t n t ng h păthìăđ c l păđ c m
các yêu cầu traoăđ i d li u.
3. L nh xoá thanh ghi m t n t ng h p: L nh này cho phép các kênh c a DMAC b t
đầu yêu cầuătraoăđ i d li u.

4.3.5 L ị ỏrửỉể ẾểỊ ẾáẾ ỏểaỉể Ểểi đ a Ếể ốỢ ỏểaỉể Ểểi s đ m:


Vi c l pătrìnhăchoăcácăthanhăghiăđ a ch và thanh ghi s đ măđ c th c hiẹn riêng cho
m i kênh. cần ph iăđ nhătr c giá tr logic c aăF/Lăđ thaoătácăchínhăxácăđ c v i LSB
và MSB c a các thanh ghi trên. ngoài ra còn ph i c m các yêu cầu DMA c a các kênh
trong khi l p trình cho chúng. Có th tuơnătheoăcácăb căsauăđơyăđ l p trình cho DMAC
8237A:
+ xoá m t l t F/L
+ c m các yêu cầu c a các kênh
+ ghi LSB r i MSB c aăthanhăghiăđ a ch
137
Cả NẢ 6. CÁC B VI ĐI U KảI N

+ ghi LSB r i MSB c a thanh ghi s đ m


D iăđơyălƠăm tăđo nămưăchoă8237Aăcóăđ a ch c ăs 70H vƠăđ c ghép v i vi x
lỦănh ătrong Hình 5-18.
ChotB EQU 010H ;ăĐ a ch m ch ch t B
FL EQU 07CH ;ăĐ a ch m ch l t
C0 EQU 070H ;ăĐ a ch kênh 0
C1 EQU 072H ;ăĐ a ch kênh 1
Dem_C1 EQU 073H ;ăĐ a ch kênh 0
CheDo EQU 07BH ;ăĐ a ch thanh ghi ch đ
Lenh EQU 078H ;ăĐ a ch thanh ghi l nh
MatNa EQU 07FH ;ăĐ a ch thanh ghi m t n
YeuCau EQU 079H ;ăĐ a ch thanh ghi yêu cầu
TThai EQU 078H ;ăĐ a ch thanh ghi tr ng thái
SoByte DW 0100H ; S byte cần chuy n
A16_19 DB 01H ;ă4ăbítăđ a ch cao
Nguon DW 00000H ;ăĐ a ch ngu n
Dich DW 04000H ;ăĐ a ch đích
MOV AL,A16_19
OUT ChotB, AL ; G iăđ a ch cao ra m ch ch t
OUT FL, AL ; Xóa m ch l t
MOV AX, Nguon ;Đ a ch ngu n ra kênh 0
OUT C0,AL
MOV AL, AH
OUT C0, AL
MOV AX, Dich ;ăĐ a ch đíchăra kênh 1
OUT C1, AL
MOV AL, AH
OUT C1, AL
DEC SoByte
MOV AX, SoByte
OUT Dem_C1, AL ; s byte cần chuy n vào b đ m kênh 1
MOV AL, AH
OUT Dem_C1, AL
MOV AL, 088H ; Ch đ kênh 0
OUT CheDo, AL
MOV AL, 085H ; Ch đ kênh 1
OUT CheDo, AL
MOV AL,1 ; Chuy n m ng

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

Hình 5-18. Ghép n i 8237A v i vi x lý ở ch đ MIN

140
Cả NẢ 6. CÁC B VI ĐI U KảI N

Ch ngă6. CÁC B ăVIăĐI UăKHI N

1. GI IăTHI UăV ăVIăĐI UăKHI NăVÀăCỄCăH ăNHÚNG

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

thi t b viă đi u khi n d dƠngăt ngăthíchăvƠăthu n ti n. Do các d ng ng d ng v i vi


đi u khi n có th thayăđ i r t l n, hầu h t các nhà s n xu t cung c p h các thi t b vi
đi u khi n mà kh nĕngăm i thành viên phù h p v i yêu cầu ch t o. Đi u này tránh tình
tr ng thi t b viăđi u khi n quá ph c t p và t n kém đ đápă ng t t c các d ng ng d ng,
đ ng th i, h n ch vi c m t s phần c aăviăđi u khi năhoƠnătoƠnăkhôngăđ c s d ng khi
ch y ng d ng. H viăđi u khi n s có t p l nh con chung, tuy nhiên các thành viên trong
h có th khác nhau v s l ng, ki u, b nh , các c ng... Nh ăv y nhà s n xu t có th
ch t o các thi t b v i chi phí hi u qu phù h p v i các yêu cầu s n xu t c th .
Vi c m r ng b nh có th s d ng các vi m chăROM/RAMăbênăngoƠiă viă đi u
khi n. M s viăđi u khi n không tích h p s năROMăcũngănh ăEPROMăhayăEEROM.
M t s ch cănĕngăb sung khác có th đ c tích h p vào vi m ch c a b viăđi u khi n
nh ăchuy năđ iăt ngăt s (Analogue-to-Digital Converter ADC). M t s viăđi u khi n
khác có s l ng tín hi uăítăh năđ gi m thi u chi phí. B ngăd iăđơyăli tăkêăđ c tính c a
m t s viăđi u khi n.
B ng 6-1. Đ c tính m t s viăđi u khi n

Mô-đen Tín hi u: RAM ROM Đ Tínhănĕngăkhác


Vào/ra (byte) (Byte) r ng
t (bít)

Intel 8051 40:32 64 1K 8 B nh m r ng 8K

Motorola 52:40 256 8K 8 C ng n i ti p ; chuy năđ iăt ngă


68HC11 t s

Zilog Z8820 44:40 272 8K 8 B nh m r ng 128K ; c ng n i


ti p

Intel 8096 68:40 232 8K 16 B nh m r ng 64K ; chuy n


đ iă t ngă t s ;c ng n i ti p;
đi u bi n xung

2. H ăVIăĐI UăKHI N Intel 8051

Viăđi u khi n 8051 lầnăđầuătiênăđ c Intel gi i thi uăvƠoănĕmă1981. ĐơyălƠăb vi


đi u khi n 8 bít v i 128 byte RAM và 4KB ROM, m t c ng n i ti p và 4 c ng 8 bít trên
m t vi m chăđ nălẻ. Dòngăviăđi u khi n này tr nên ph bi n sau khi Intel cho phép các
nhà s n xu tă khácă đ c ch t oă viă đi u khi nă t ngă thíchă v i 8051. Đ n nay viă đi u
khi n 8051 th c ra bao g m h viă đi u khi n ký hi u t 8031 t iă 8751ă đ c s n xu t

142
Cả NẢ 6. CÁC B VI ĐI U KảI N

b ng công ngh NMOS và CMOS v i nhi u ki uăđóngăgóiăkhácănhau. Phiên b n nâng


cao c aă8051ălƠă8052ăcũngăcóăcácăbi n th khác nhau. Các bi n th này nh măđ p ng
các yêu cầu ng d ng khác nhau c a các nhà phát tri n.

B ng 6-2. Thông s c a m t s viăđi u khi n h 8051

Tínhănĕng 8051 8052 8031

ROM 4K 8K -

RAM (Byte) 128 256 128

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

Hình 6-1. S ăđ kh i 8051

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.

Hình 6-2. S ăđ chân tín hi u 8051


8051 h tr 4 c ng vào/ra trong m t s bi n th các c ngănƠyăđ u có th ho tăđ ng
c hai ch đ vào và ra. C ng truy n thông n i ti păth ng x lý d li u 8 bít cho phép
g i và nh n song song. C ng n i ti p có 4 ch đ ho tă đ ng. Ch đ 0, chân TxD s
d ngănh ătínăhi u xung nh p c đ nh m c 1/12 xung nh p c aăviăđi u khi n còn chân
RxDădùngăđ thu và phát. Ch đ 1 là ch đ giao ti p UART v i 1 bít stop. Ch đ 2
gi ng ch đ 1ă nh ngă thêmă bítă ch n lẻ. Ch đ 3 gi ng ch đ 2ă nh ngă choă phépă l p
trình t căđ tín hi u.
B nh ROM trong vi m ch có th là lo i EPROM l p trình b ngă đi n. B nh
ngoài có th truy nh p thông qua tín hi u truy nh p EA=0. Vi c truy nh p ROM ngoài
đ c th c hi n thông qua tín hi u PSEN m c th păđ kích ho t vi m ch nh ROM.
B ng 6-3. ụănghĩaătínăhi u 8051

Tín hi u ụănghĩa

P0. 0-P0. 7 Tín hi u d li u c ng P0

P1. 0-P1. 7 Tín hi u d li u c ng P1

P2. 0-P2. 7 Tín hi u d li u c ng P2

144
Cả NẢ 6. CÁC B VI ĐI U KảI N

P3. 0-P3. 7 Tín hi u d li u c ng P3

A8-A15 Tín hi uăđ a ch

Xtal1-2 Tín hi u xung nh p

RxD Tín hi u thu truy n thông n i ti p

TxD Tín hi u phát truy n thông n i ti p

INT0-1 Tín hi u ng t 0-1 (m c th p)

RD Đ c d li u b nh ngoài

WR Tín hi u ghi d li u b nh ngoài

EA Tín hi u truy nh p b nh ch ngătrìnhăngoài


EA=0 dùng ROM ngoài
EA=1 dùng ROM trong

ALE Tín hi u ch tăđ a ch trên P0


ALE=1 Trên nhóm c ng P0 là tín hi uăđ a ch
ALE=0 Trên nhóm c ng P0 là tín hi u d li u

PSEN Tín hi uăchoăphépăl uăch ngătrìnhădùngăđ c b nh ch ngătrìnhă


bên 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

đóă0000-0FFFh là không gian nh ch ngătrìnhăbênătrongăviăđi u khi n. Con tr d li u


chia thành hai phần th p (8 bít) và cao (8 bít)
Thanh ghi A và B là các thanh ghi dùng chung dùng cho các thao tác tính toán c a
đ năv x lý c a 8051. Thanh ghi A là thanh ghi tíchălũy (accumulator) dùng trong các
thao tác s h c và lô-gíc. ThanhăghiănƠyăcũngădùngăđ traoăđ i d li u v i b nh ngoài.
ThanhăghiăBăth ng dùng kèm v i thanh ghi A trong các thao tác nhân chia. Ngoài ra,
8051 còn 32 thanh ghi khác n m trong b nh RAM trong chia thành b năbĕng, B0-B3,
g m 8 thanh ghi R0-R7.
C là các thanh ghi 1 bít cho bi t tr ng thái c a m t s l nhăvƠăđ c g p vào thanh
ghi t tr ngătháiăch ngătrìnhă(ProgramăStatusăWordăPSW). 8051 có các c nh C, ph
AC, tràn OV và ch n lẻ P. Các c ng i dùng F0 và GF0-1. Các c ng i dùng có th
tùy bi n theo yêu cầuăng i vi tăch ngătrìnhănh ăl uăcácăs ki n.
Con tr ngĕnăx păSPălƠăthanhăghiă8ăbítăl uăv tríăđ nhăngĕnăx p trong b nh RAM
trong c a 8051.
Các thanh ghi ch cănĕngăđ c bi t n m trong b nh RAM trong t đ a ch 00-7Fh.
Các thanh ghi này có th đ căđ t tên riêng trong m t mã l nh và tham chi uăquaăđ a ch .
Ví d thanhăghiăAăcònăđ c tham chi uăquaăđ a ch 0E0h.
2.3 T păl nh
8051 h tr các ch đ đ a ch sau:
1. Ch đ đ a ch tr c ti p: d li u dành cho l nh là m t phần trong mã l nh.
T g i nh cho ch đ này là d u #. Ví d MOV A, #100.
2. Ch đ đ a ch thanhăghi:ăthanhăghiăl uăgiáătr d li u.
3. Ch đ đ a ch tr c ti p:ăđ a ch ô nh là m t phần c a câu l nh
4. Ch đ đ a ch gián ti p: giá tr thanh ghi cho bi tăđ a ch c a d li u. T
g i nh là @. Ví d MOV A, @R0 ; N p d li u t i ô nh có giá tr R0 vào
thanh ghi A.
T p l nh 8051 h tr các thao tác di chuy n d li u, các thao tác lô-gíc, các
phép toán s h c và các câu l nh nh y và g i hàm.
Ví d 6-1
Đo năch ngătrìnhă8051
Nhan: INC 3Ch ;ăTĕngăgiáătr ô nh 3Ch lên 1
MOV A, #2Ah ; A=2Ah
XRL A, 3Ch ; XOR A v i giá tr t i ô nh 3Ch
JNZ Nhan ; Nh y t i Nhan n u k t qu XOR khác 0
NOP ;không làm gì c
146
Cả NẢ 6. CÁC B VI ĐI U KảI N

3. GI IăTHI UăM TăS ă NG D NGăTIểUăBI UăC AăVIăĐI UăKHI Nă

Vi c chuy năđ i tín hi uăt ngăt sang s vƠăng c l iăth ng g p khi ta mu n k t


n i máy tính v i th gi iăt ngăt . Trong phần này gi i thi u s d ng b viăđi u khi n
k t n i v i b chuy năđ iăt ngăt s (A/D)ăvƠăng c l i (D/A). Thôngăth ng các b
chuy năđ i cho phép k t n i thông qua kênh d li u 8 bít, ba tr ngătháiăvƠăchoăphépăđi u
khi n thôngqua các tín hi uăđ c/ghi, ch n chíp.
3.1 Chuy năđ iăs ăt ngăt ă(D/A)
Hình 6-3 gi i thi u k t n i gi aă viă đi u khi n 8051 và b chuy nă đ i D/A khái
quát. B chuy năđ iăD/Aăcóăđ căđi m sau:
Vout = -Vref×(byteăđầu vào/100H) và Vref = 10V
Th i gian chuy năđ i 5s
Trình t đi u khi n ~CS r i ~WR.
C ngă1ăđ c n i v i các tín hi u d li u c a b chuy năđ i còn c ngă3ă dùngăđ
đi u khi n. Trong ví d này, thi t b t o ra sóng hình sin v i chu kỳ 1000Hz và có th
thayăđ iătheoăch ngătrình. Vref đ t b ng -10V d ng tín hi uăđầuăraăthayăđ i t 0V t i +9,
96V. Ch ngătrìnhădùngăb ng tra c uăđ sinhăraăbiênăđ sóng sin. Chu kỳ đ c thi t l p
cĕnăc vào kho ng th i gian truy n d li u cho b chuy năđ i. V i S đi m l y m u, chu
kỳ ng t nh t Tmin= 5×S s tần s t iăđaăfmax = 200. 000/S.

Hình 6-3. Ghép n i b chuy năđ i D/A v i 8051

V i sóng có tần s 1000Hz, cần s l ng m u là 200. Tuy nhiên th c t ch y


ch ngătrìnhăchoăth y th iăgianăđ t o ra m t m u cần 6s và th iăgianăđ chuy n sang
m u k ti p m tăh nă2s. Nh ăv y th c t ch cho phép s l ng m u là 166.

147
Cả NẢ 6. CÁC B VI ĐI U KảI N

Ví d 6-2. Ch ngătrìnhăchuy năđ i D/A


. org 0000h
daconv: clr p3, 2 ; Ch n chíp
mov dptr, #bang : l yăđ a ch c ăs b ng
repeat: mov r1, #0A6h ; Kh i t o R1 = 166
next: mov a, r1 ; L yăđ a ch offset c a b ng
movc a, @a+dptr ;L y giá tr m u
mov p1, a ; G i m u ra c ng 1
clr p3, 3
setb p3, 3
djnz r1, next
sjmp repeat
; B ng chuy năđ i s d ngăhƠmăcosinăđ tính giá tr biên b c a tín hi u t iăđầu ra.
83 giá
;tr đầu th hi năbiênăđ t c căđ i t i nh h n 0, 83 giá tr còn l i t 0 t i c căđ i.
V i 83
; m u cho n a chu kỳ giá tr góc c aăhƠmăcosinăthayăđ i 2, 17ăđ cho các m u k
ti p.
bang: . db 00H ;
. db ffH ; s1:FF×cos(0)
. db feH ; s2:7FH+FF×cos(2, 17)
. db feH ; s3:7FH+FF×cos(2, 17×2)
. db 81H ; s42:7FH+FF×cos(88, 9)
.......
. db 00H ; s84:7FH+FF×cos(180)
......
. db feH ; s166:7FH+FF×cos(2, 17)
3.2 Chuy năđ iăt ngăt ăs ă(A/D)
Hình 6-4 s d ng b chuy năđ iăt ngăt s 8ăbítăcóăcácăđ c tính sau:
Tín hi u l y m u: Vin = Vref-, d li u =00h ; Vin=Vref+, d li u = FFh
Th i gian l y m u: 1 s

148
Cả NẢ 6. CÁC B VI ĐI U KảI N

Trình t đi u khi n: CS, WR r i RD ( m c tích c c th p). Trong hình v , c ng 1


c a 8051 n i v i kênh d li u c a b chuy năđ i còn c ng 3 n i v i các tín hi uăđi u
khi n.

Hình 6-4. Ghép n i 8051 và chuy năđ i A/D

Ví d 6-3. Ch ngătrìnhăchuy năđ i A/D


Đo năch ngătrìnhăsauăs hóa các tín hi n Vref v i chu kỳ 100săvƠăl uăk t qu
vào trong b nh RAM 4000H:43E7H.
. equ begin, 4000H ;Đ a ch b tăđầu
. equ delay, 74H ;tr 87s
. equ end1, 43H ;Đ a ch k t thúc byte cao
. equ end2, e8H ;Đ a ch k t thúc byte th p
adconv: mov dptr, #begin
clr p3, 2 ; G i ~CS t i b A/D
next: clr p3, 3 ; T o xung ~WR t i b A/D
setb p3, 3 ;
clr p3, 4 ;T o xung ~RD
mov a, p1 ;Đ c d li u t A/D
setb p3, 4 ;K tăthúcăđ c
mov @dptr, a ;L uăvƠoăRAM
inc dptr ;Tĕngăconătr RAM lên 1
mov a, dph ;Ki m tra k t thúc

149
Cả NẢ 6. CÁC B VI ĐI U KảI N

cjne a, #end1, wait


mov a, dpl
cjne a, #end2, wait
sjmp done ; K t thúc khi t i v trí cu i cùng
wait: mov r1, #delay ;Tr 87s
here: djnz r1, here
sjmp next
done: sjmp done
. end

150
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N

Ch ngă7. GI IăTHI UăM TăS ăVIăX ăLệăTIểNăTI N

1. CỄCăVIăX ăLệăTIểNăTI NăD AăTRểNăKI N TRÚC INTEL IA-32

1.1 Gi iăthi uăIA-32


IA-32 là ki n trúc 32 bít do hãng s n xu t Intel phát tri n lầnăđầuătiênăđ c gi i
thi u trên b vi x lý Intel386. Ki n trúc IA-32 h tr ba ch đ ho tăđ ng: ch đ b o v
(protected mode), ch đ th c (real mode) và ch đ qu n lý h th ng SMM (System
Management Mode). Các ch đ ho tă đ ng quy tă đ nh các l nh và các ch că nĕngă mƠă
ch ngătrìnhăcóăth truy nh p:

 Ch đ b o v : là ch đ cĕnăb n c a b x lý. Ch đ này cho phép ch y các


phần m mă8086ătrongămôiătr ngăđaănhi m và b o v . Ch đ nƠyăcònăđ c g i
là ch đ 8086 o.
 Ch đ đ a ch th c: Chéăđ này cung c pămôiătr ng l p trình 8086 v i m t s
tínhănĕngăm r ngănh ăchuy n sang ch đ b o v . Đ b x lý ho tăđ ng ch
đ nƠyăthôngăth ng ph i kh iăđ ng l i b x lý.
 Ch đ qu n lý h th ng - SMM: Ch đ này cung c p cho h đi uăhƠnhăcácăc ă
ch trong su t ph c v nhi m v c th nh ăqu nălỦănĕng l ng hay b o m t h
th ng. Ch đ nƠyăđ c kích ho t thông qua tín hi u SMM ho c tín hi u này nh n
đ c t b đi u khi n ng t tiên ti n.
Trong ch đ này b x lý chuy n qua l iăcácăkhôngăgianăđ a ch riêng bi t trong
khiăl uăl i ng c nhăcĕnăb n c a cácăch ngătrìnhăđangăch y. Cácăđo n mã SMM
có th đ c th c hi n hoàn toàn trong su t. Ngay khi quay tr l i t ch đ SMM,
b x lỦăđ c khôi ph c l i tr ng thái gi ngănh ătr c khi ng t SMM x y ra.
B t kỳ ch ngătrìnhăch y trên b x lý IA-32ăđ c cung c p cácătƠiănguyênăđ th c
hi n l nh, l uăđo n mã, d li u và các thông tin tr ng thái. Các tài nguyên này t o l p
nênămôiătr ng th căthiăchoăch ngătrìnhh:

 Khôngăgianăđ a ch : b t c ch ngătrìnhănƠoăđ u có th đánhăđ a ch không gian


nh tuy n tính t i 232 byteăhayă4GBăvƠăkhôngăgianăđ a ch v t lý có th lên t i
236 khi s d ngăcáchăđánhăđ a ch m r ng.
 Các thanh ghi th căthiăcĕnăb n: bao g m 8 thanh ghi dùng chung, sáu thanh ghi
đo n, thanh ghi c và con tr l nh EIP.

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

Hình 7-1. Vi ki n trúc Netburst

Ki n trúc IA-32 cung c p các ch cănĕngăh tr h đi u hành hay các phần m m h


th ng. V i các thao tác vào/ra ch đ b o v , các thao tác này b h n ch thông qua:
 C đ c quy n IOPL (I/O privilege level) và tr ng thái c a quy n vào/ra
trongăphơnăđo n tr ngătháiăch ngătrìnhăTSSă(Taskăstateăsegment)
 C ăch b o v đo n và trang b nh .
V mô hình b nh , cácăch ngătrìnhăkhôngătruyănh p tr c ti p vào b nh v t lý.
ThayăvƠoăđó, cácăch ngătrìnhăcóăth s d ng các mô hình truy nh p:
1. Tuy nă tính:ă Ch ngă trìnhă coiă b nh nh ă m t chu i liên ti p các byte.
Đo n mã, d li uăvƠăngĕnăx păđ u n mătrongăkhôngăgianăđ a ch này.
2. Phơnăđo n: B nh đ c chia thành các không gian khácănhauăđ c g i là
đo n. Thôngă th ng d li u, đo n mã, ngĕnă x p s d ngă cácă đo n khác

153
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N

nhau. B x lý h tr IA-32 có th cung c pă16383ăđo n v i các kích c


khác nhau, kích c l n nh t c aă1ăđo n là 4GB.
3. Đ a ch th c: đơyălƠămôăhìnhăb nh c a 8086.
4. Phân trang và b nh o: khi này b nh ch ngătrìnhăđ c chia thành các
trang ánh x vào b nh o. Sauă đó, b nh oă đ c ánh x vào b nh
th c. N u h đi u hành s d ng phân trang, c ăch ánh x hoàn toàn trong
su tăđ i v iăch ngătrìnhă ng d ng
1.2 Cácăviăx lỦăh ătr ăIA-32
V iă uăth c a công ngh và thi t k vi ki n trúc m i, m i m t th h vi x lý IA-
32 m iăđ uăv tăng ng t căđ (tần s ho tăđ ng)ăvƠănĕngăl c th c hi n c a các vi x lý
th h tr c. B ngăd iăđơyăli t kê các vi x lý IA-32 th h đầu không có b đ m tích
h p trong vi x lý (GP-thanh ghi dùng chung; FPU-thanh ghi d u phẩyăđ ng).

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 7-2. Vi x lý IA-32 th h sau

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

2. CỄCăVIăX ăLệăTIểNăTI NăD AăTRểNăKI N TRÚC INTEL IA-64

Ki n trúc Intel IA-64 b sungăkhôngăgianăđ a ch ch ngătrìnhă64ăbítăh tr không


gian nh v t lý t i 40 bít và ch đ IA-32e so v i ki n trúc IA-32ătr căđó. Ki n trúc IA-
64ăđ m b oătínhăt ngăthíchăng c cho phép ch yă cácăch ngătrìnhăvi t cho ki n trúc
IA-32. Các ch đ m i c a IA-64 bao g m:

 Ch đ t ngăthích: cho phép ch y các ng d ng 16 và 32 bít mà không ph i biên


d ch l i. Ch đ nƠyăt ngăt nh ăch đ b o v trong IA-32. Các ng d ng ch truy
nh păđ că4GBăđầu trong không gian nh tuy n tính. Tuy nhiên, ng d ng có th s
d ng không gian nh l năh năv i ch đ m r ngăđ a ch v t lý.
 Ch đ 64 bít. Choăphépăch ngătrìnhătruyănh p không gian nh tuy n tính 64 bít.
Ch đ này m r ng s l ng các thanh ghi dùng chung và thanh ghi XMM t 8 lên
16. Các thanh ghi dùng chung có kích c 64 bít.
Ch đ 64ăđ c kích ho tătrênăc ăs đo n mã. Kích c m c đ nhăchoăđ a ch là 64 bít
còn toán h ng 32 bít. Kích c c a toán h ng có th thayăđ i theo t ng l nh s d ng
ti n t REX. Đi u này giúp cho các câu l nhă cũă cóă th chuy n sang ch đ 64 bít
thanhăghiăvƠăđ a ch .

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

Pentium 2005 Netburst, 3, 73 32 GP 8, 5GB/s 64GB 16KB

156
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N

4 Siêu phân 80 FPU L1


Extreme lu ng, IA- 64 MMX 2MB
64 128 L2
XMM

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

Netburst, 32, 64 GP 64KB


Siêu phân L1
80 FPU
Xeon lu ng, IA- 12, 8 6MB
2007 3, 00 64 MMX 256GB
5472 64, o hóa, GB/s L2
Đaănhơnă(4 128 (T ng
nhân) XMM 12MB)

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

3. CỄCăVIăX ăLệăTIểNăTI NăC A SUN MICROSYSTEMS

Sun Microsystems h tr thi t k b x lý có th m r ng SPARC (Scalable


Processor Architecture). Ki n trúc này ch u nhă h ng c a máy tính Berkeley RISC I.
T p l nh và t ch c các thanh ghi c a b x lý SPARC r t gi ng v i Berkeley RISC.
SPARC cho phép tri n khai t các ng d ng nhúng cho t i các máy ch r t l n, t t c
đ u dùng chung m t t p l nhăcĕnăb n. Hi n nay, b x lỦăSPARCăth ngăđ c s d ng
r ngărưiătrongămôiătr ng máy ch , tr m làm vi c s d ng h đi u hành SUN, Unix và
Linux.
B x lỦă SPARCă th ng có t i 128 thanh ghi dùng chung. T i b t c th iă đi m
nào, phần m m có th s d ng t c thì 32 thanh ghi bao g m 8 thanh ghi toàn c c, 24
thanhăghiăngĕnăx p. Cácăthanhăghiăngĕnăx p có th t o thành c a s thanh ghi (register
window) t iăđa 32 c a s cho phép t iă uăcácăthaoătácăg i hàm và tr v . M i c a s có 8
thanh ghi c c b và dùng chung 8 thanh ghi v i c a s k . Các thanh ghi chia sẻ đ c
dùngăđ truy n các tham s và giá tr tr v cho các hàm còn thanh ghi c c b dùngăđ
l uăcácăgiá tr c c b gi a các l i g i hàm.
Hầu h t các l nh x lý c a SPARC ch s d ng các toán h ng thanh ghi. Các l nh
n păvƠăl uăchuyênădùngăđ traoăđ i d li u gi a các thanh ghi và b nh . Ngoài ch d
đ a ch thanh ghi, SPARC ch s d ng ch đ đ a ch d ch chuy n. Trong ch đ này, đ a
ch hi u d ng c a toán h ng đ c d ch chuy nă 1ăđo năt ngă ng v i giá tr c a thanh
ghi. Đ th c hi n câu l nh n p ho c ghi, quá trình th c hi n l nh s cầnăthêmă1ăgiaiăđo n
đ tínhăđ a ch ô nh .

158
Cả NẢ 7. ẢI I TảI U M T S VI X LÍ TIÊN TI N

Vi x lý h tr SPARC 32 bít phiên b n 8 cho phép s d ng 16 thanh ghi d u phẩy


đ ng v iăđ chính xác kép, ho c 32 thanh ghi v iăđ chínhăxácăđ n. Các c p ch n-lẻ c a
cácăthanhăghiăđ chính xác kép có th k t h p v iănhauăđ nơngăđ chính xác lên g păđôiă
m c 4. SPARC 64 bít phiên b n 9, xu t hi nă vƠoă nĕmă 1993, cóă thêmă 16ă thanhă ghiă đ
chínhăxácăképănh ngăcácăthanhăghiăm iănƠyăkhôngătáchăthƠnhăcácăthanhăghiăcóăđ chính
xácăđ năđ c.
B ngăd iăđơyăli t kê m t s tínhănĕngăc a các vi x lý s d ng SPARC.

B ng 7-4. Tínhănĕngăm t s vi x lý SPARC

Đ 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 IIs 1024 ậ


250ậ400 1997 1×1 521 16 16
(Blackbird) 4096

UltraSPARC IIs 1024ậ


360ậ480 1999 1×1 521 16 16
(Sapphire-Black) 8192

UltraSPARC IIi 256ậ


270ậ360 1997 1×1 587 16 16
(Sabre) 2048

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

1. Crisp J. Introduction to microprocessors and microcontrollers, Newnes 2004

2. David Calcutt, Fred Cowan,Hassan Parchizadeh, 8051 Microcontrollers An


Applications-Based Introduction, Newnes 2004

3. Douglas V. Hall. Microprocessor and Interfacing- programming and hardware,


2nd edition. McGraw Hill. 1997.

4. Hari BalaKrishnan & Samel Madden. The lecture notes on Computer Systems
Engineering, Open Courses Ware. Massachusets Institute of Technology.

5. H Khánh Lâm, Kỹ thuật vi xử lý,ăNXBăB uăđi n 2005

6. Intel Corp. Intel® 64 and IA-32 Architectures SoftwareăDeveloper’săManual

7. Rafiquzzaman M. Microprocessor theory and applications with 68000/68020 and


Pentium, John Wiley&Sons 2008

8. VĕnăTh Minh. Kỹ thuật vi xử lý. NXB Giáo d c 1999.

161

You might also like