Vi xử lý bài giảng dành cho sinh viên Đại học và cao đẳng là bộ tài liệu hay và rất hữu ích cho các bạn sinh viên và quý bạn đọc quan tâm. Đây là tài liệu hay trong Bộ tài liệu sưu tập gồm nhiều Bài tập THCS, THPT, luyện thi THPT Quốc gia, Giáo án, Luận văn, Khoá luận, Tiểu luận…và nhiều Giáo trình Đại học, cao đẳng của nhiều lĩnh vực: Toán, Lý, Hoá, Sinh…. Đây là nguồn tài liệu quý giá đầy đủ và rất cần thiết đối với các bạn sinh viên, học sinh, quý phụ huynh, quý đồng nghiệp và các giáo sinh tham khảo học tập. Xuất phát từ quá trình tìm tòi, trao đổi tài liệu, chúng tôi nhận thấy rằng để có được tài liệu mình cần và đủ là một điều không dễ, tốn nhiều thời gian, vì vậy, với mong muốn giúp bạn, giúp mình tôi tổng hợp và chuyển tải lên để quý vị tham khảo. Qua đây cũng gởi lời cảm ơn đến tác giả các bài viết liên quan đã tạo điều kiện cho chúng tôi có bộ sưu tập này. Trên tinh thần tôn trọng tác giả, chúng tôi vẫn giữ nguyên bản gốc. Trân trọng. ĐỊA CHỈ DANH MỤC TẠI LIỆU CẦN THAM KHẢO http:123doc.vntrangcanhan348169nguyenductrung.htm hoặc Đường dẫn: google > 123doc > Nguyễn Đức Trung > Tất cả (chọn mục Thành viên)
Trang 1TR NGă I H C PH MăV Nă NG
Qu ng Ngãi, tháng 12/2014
Trang 2TR NGă I H C PH MăV Nă NG
Qu ng Ngãi, tháng 12/2014
Trang 3M C L C
L I NịI U 1
Ch ng 1 T NG QUAN V H VI X LÝ 2
1.1 H vi x lý 2
1.2 Các thành ph n c a h vi x lý 4
1.2.1 Lõi vi x lý 4
1.2.2 H th ng bus 8
1.2.3 C u chuy n bus 10
1.2.4 Ngo i vi 11
1.3 L ch s phát tri n và phân lo i các b vi x lý 11
Ch ng 2 B VI X LÝ INTEL 8086 17
2.1 Ki n trúc bên trong c a 8086 17
2.1.1 S đ kh i 17
2.1.2 Ch c n ng vƠ ch đ làm vi c c a các chân giao ti p 18
2.2 Các thành ph n c a b vi x lý 8086 22
2.3 Quá trình s lý l nh 29
2.3.1 Các ph ng pháp đ nh đ a ch 30
2.3.2 T p l nh 8086 34
2.4 Ng t 55
2.4.1 Gi i thi u 55
2.4.2 Ng t ngoài 56
2.4.3 Ng t trong 58
2.4.4 B ng vector ng t 59
2.4.5 Quá trình x lý ng t 60
2.5 B đ ng x lý toán h c 8087 62
Ch ng 3 VI I U KHI N VÀ VI CH NG TRỊNH 68
3.1 Gi i thi u v vi đi u khi n 68
3.2 ng d li u vƠ đ ng đi u khi n 69
3.3 Vi l nh 73
3.4 nh thì vi l nh 75
Trang 4Ch ng 4 PH I GHÉP B VI X LÝ V I B NH VÀ CÁC THI T B
VÀO/RA 78
4.1 Gi i thi u v b nh 78
4.2 Gi i thi u v thi t b vào/ra 81
4.2.1 Phân lo i thi t b vào/ra 81
4.2.2 Các kh i giao ti p 81
4.3 H th ng bus ngoài 82
4.4 Các chip h tr vào/ra 83
4.4.1 Chip USART 8251A 84
4.4.2 Chip PIO 8255A 94
4.5 Vào/ra b ng ph ng pháp th m dò 103
4.6 Vào/ra b ng ph ng pháp ng t 105
4.6.1 Các tín hi u ng t c a 8086 105
4.6.2 Quá trình x lý ng t 105
4.6.3 X lý u tiên ng t 106
4.6.4 Chip phân x ng t 8259A 107
4.7 Vào/ra b ng ph ng pháp truy xu t b nh tr c ti p (DMA) 117
4.7.1 Khái ni m DMA 117
4.7.2 Chip đi u khi n DMA 8237A 118
4.7.3 Ho t đ ng c a 8237A trong h vi x lý 8086 129
Ch ng 5 L P TRÌNH PH I GHÉP 131
5.1 L p trình cho các chip h tr vào/ra 131
5.1.1 L p trình cho chip h tr vào/ra n i ti p USART 8251A 131
5.1.2 L p trình cho chip PIO 8255A 136
5.2 L p trình s d ng ng t và l p trình cho 8259A 139
5.2.1 Ng t m m vƠ ch ng trình con x lý ng t 139
5.2.2 L p trình cho 8259A 142
5.3 L p trình cho b đi u khi n truy nh p b nh tr c ti p 8237A 145
5.4 M t s ng d ng khác 150
5.4.1 Ghép n i vi x lý v i bàn phím 150
Trang 55.4.2 Ghép n i v i led đ n 154 5.4.3 Ghép n i v i led 7 đo n 155 TÀI LI U THAM KH O 161
Trang 6
1
L IăNịIă U
Bài gi ng “Vi x lý” đ c biên so n dùng làm tài li u h c t p cho sinh viên
b c cao đ ng chính qui ngành công ngh k thu t i n ậ i n t tr ng i h c
Ph m V n ng Bài gi ng bao g m 5 ch ng, cung c p cho sinh viên nh ng ki n
th c c b n v vi x lý nh : l ch s phát tri n, h th ng bus, ngo i vi, ki n trúc c a
vi x lý, t p l nh và cách th c xây d ng t p l nh cho vi x lý, ho t đ ng c a vi x
lý, cách th c xây d ng m t h th ng vi x lý ầ BƠi gi ng này s d ng vi x lý Intel 8086 đ minh h a chi ti t cho các khái ni m trên Intel 8086 thu c h vi x lý thông d ng c a Intel, đ c s d ng ph bi n trong các máy vi tính cá nhân ây là
lo i vi x lý thu c đ i đ u c a h 8086 (x86) nên có ki n trúc c b n, làm n n t ng cho s phát tri n c a các dòng vi x lý cao c p c a Intel nh Celeron, Pentium, ầ
N i dung chi ti t c a bài gi ng nh sau:
Trong quá trình biên so n không th tránh kh i nh ng thi u sót, r t mong
nh n đ c s góp ý c a b n đ c đ bài gi ng đ c hoàn thi n h n M i ý ki n đóng góp xin g i v đ a ch : B môn i n ậ i n t , Khoa K thu t ậ Công ngh ,
Tr ng i h c Ph m V n ng
Tác gi xin chân thành c m n
Trang 72
Ch ngă1 T NG QUAN V H VI X LÝ
Ngày nay, v i s phát tri n bùng n c a khoa h c k thu t nói chung vƠ l nh
v c vi m ch đi n t công ngh cao nói riêng, các thi t b đi n t đư tr nên r t thông d ng v i t t c m i ng i T nh ng v t d ng đ trong nhà ph c v cho cu c
s ng sinh ho t hàng ngƠy nh : tivi, t l nh, máy gi t, ầ cho đ n nh ng thi t b c m tay ph c v cho nhu c u công vi c và gi i trí nh : máy tính, máy nh, đi n tho i di
đ ng, ầ đ u có m t đ c đi m chung, đó lƠ: ho t đ ng d a trên s đi u khi n c a
m t ho c nhi u ph n t trong m ch Các ph n t nƠy đ c ví nh b não c a c h
th ng, có nhi m v đón nh n, x lý các thông tin vƠ đi u khi n c h th ng ho t
đ ng m t cách hài hòa nh t, chúng còn đ c g i là các vi x lý Vi x lý g n g i vƠ quen thu c nh t v i chúng ta có l là các đ n v x lý trung tơm (hay còn đ c g i
là CPU) c a Intel vƠ AMD, đ c s d ng trong các máy vi tính cá nhơn Ch ng này s trình bày t ng quan v h vi x lý nh : l ch s phát tri n c a vi x lý, các thành ph n c b n trong m t h vi x lý, ầ
1.1 H vi x lý
M t h vi x lý th ng bao g m: các lõi vi x lý k t n i v i các ngo i vi
đi u khi n các thi t b bên ngoài thông qua h th ng bus Hình 1.1 mô t m t h vi
x lý đ n gi n bao g m hai lõi vi x lý
T hình 1.1, ta th y h th ng bao g m hai lõi vi x lý giao ti p v i các ngo i
vi thông qua các bus và c u chuy n bus đơy ta s d ng thu t ng “lõi vi x lý”
(core) hay đ n v x lý trung tơm (CPU) c ng chính lƠ m t “vi x lý” n i dung
c a giáo trình này Trên th c t , “vi x lý” lƠ thu t ng dùng chung đ đ c p đ n
k thu t ng d ng các công ngh vi đi n t , công ngh tích h p và kh n ng x lý theo ch ng trình vƠo các l nh v c khác nhau Vào nh ng giai đo n đ u trong quá trình phát tri n, các vi x lý đ c thi t k và ch t o ch tích h p nh ng ph n c ng thi t y u nh t c a m t vi x lý nh : kh i giao ti p bus, kh i tính toán s h c (ALU), t p thanh ghi, kh i gi i mã l nh, ầ Trong giai đo n này, các thành ph n
đi u khi n khác th ng không đ c tích h p cùng v i vi x lý trên m t chip (m ch
tích h p đư đ c đóng gói thƠnh ph n c ng) mà ph i ghép n i thêm bên ngoài Các thành ph n này còn đ c g i là các ngo i vi V sau nh s phát tri n v t b c c a
Trang 83
công ngh tích h p, các ngo i vi c ng d n đ c tích h p vào bên trong chip cùng
v i lõi vi x lý t o thành h th ng vi x lý
Hình 1.1 H vi x lý
M t h th ng vi x lý có th có m t ho c nhi u lõi vi x lý NgƠy nay, ng i
ta có th tích h p r t nhi u lõi vi x lý và th m chí là b x lý đ h a trên m t chip
Thông th ng, m i lõi vi x lý s chi m m t bus, các bus này liên h v i nhau thông qua các c u chuy n bus nh hình 1.1 Vi c phân h th ng thành nhi u bus
nh v y là nh m t i u hóa t c đ c a t ng ngo i vi trong h th ng Các ngo i vi
t c đ th p (nh UART, CAN, SPI, ầ) s đ c k t n i v i bus t c đ th p, t ng
ng nh v y các ngo i vi t c đ cao (nh USB, SATA, Ethernet, ầ) s đ c k t
n i v i bus t c đ cao M i lõi vi x lý trong h th ng đa lõi s có m t ch c n ng riêng tùy vƠo đ c tính k thu t và ng d ng c th
Nguyên lý ho t đ ng c a m i h vi x lý d ng nƠy đ u gi ng nhau Vi x lý
đ c m t l nh t b nh , th c thi l nh đó r i đ c và th c thi l nh k ti p Quá trình nƠy đ c l p đi l p l i mi n là h th ng còn đang ch y Chính vì v y, trong m t h
th ng vi x lý ph i luôn có m t phân vùng b nh dƠnh cho ch ng trình th c thi
và kh i đi u khi n truy xu t đ n b nh M t s h th ng vi x lý đ c s d ng cho
Trang 94
các ng d ng đ n gi n, không c n ch ng trình l n s s d ng b nh đ c tích
h p s n trên h th ng (th ng là SRAM) làm b nh ch ng trình Tuy nhiên, do
gi i h n v kích th c c a chip nên các b nh d ng này ch có dung l ng nh
(th ng là ch vƠi tr m KB) Do đó, đ i v i các ng d ng ph c t p đòi h i ch ng trình l n, ng i ta ph i s d ng các b nh có dung l ng l n (nh DRAM) đ c
g n ngoài h th ng làm b nh ch ng trình Vi c truy xu t đ n nh ng b nh d ng nƠy đ c th c hi n thông qua m t ngo i vi c a h th ng, đó lƠ ngo i vi đi u khi n
Lõi vi x lý đ c xem là b não c a h th ng Ch c n ng chính c a lõi vi x
lý là ti p nh n và x lý các thông tin t các ngo i vi trong h th ng thông qua h
th ng bus vƠ đi u khi n ho t đ ng c a h th ng m t cách h p lý nh t đúng theo yêu
c u k thu t đư đ c đ a ra Vi x lý ho t đ ng theo m t ch ng trình đ c ng i
s d ng đ nh ngh a tr c Ch ng trình lƠ t p h p các l nh đ x lý d li u Các
l nh nƠy đ c th hi n d i d ng các s nh phơn vƠ đ c l u tr trong b nh
ch ng trình Tuy nhiên, vi c vi t l nh (hay còn g i là l p trình cho vi x lý) d i
d ng các s nh phân là công vi c h t s c nhàm chán và d x y ra sai sót trong
ch ng trình Do đó, đ vi c l p trình tr nên thú v và mang tính tr c quan h n, song song v i vi c thi t k ph n c ng, các công ty thi t k vi x lý còn phát tri n thêm ph n m m đ d ch các l nh c a vi x lý đ c l p trình d i d ng ch vi t mang tính g i nh , thành các mã nh phơn t ng ng Ph n m m nƠy còn đ c g i
Trang 105
khác nhau và nh ng vi x lý ph c t p th ng có t p l nh lên đ n hƠng tr m l nh,
r t khó đ nh t t c Do đó, song song v i trình biên d ch assembly, các công ty
thi t k vi x lý còn phát tri n thêm trình biên d ch ngôn ng C cho vi x lý nh m
t n d ng tính ph bi n c a ngôn ng l p trình C Khi đó, l p trình viên ch c n l p
trình ho t đ ng cho vi x lý hoàn toàn b ng ngôn ng l p trình C, mà không c n
quan tơm đ n t p l nh c a vi x lý
V i vi c vi x lý ph i đ c l nh th c thi t các vùng nh trong h th ng xen
k v i vi c truy xu t d li u đ ph c v cho m t s l nh, vi x lý th ng đ c thi t
k theo hai ki n trúc c b n và v n còn ph bi n cho đ n ngƠy nay, đó là ki n trúc Von Neumann và ki n trúc Harvard
a Ki n trúc Von Neumann
Các vi x lý thi t k theo ki n trúc Von Neumann s chia s m t đ ng bus
chung cho c l nh và d li u nh hình 1.2
Hình 1.2 Ki n trúc Von Neumann
V i ki n trúc Von Neumann, l nh và d li u có th đ c l u tr trong cùng
m t b nh Trên th c t , m t b nh đ c chia thành r t nhi u vùng, vi c phân vùng nh cho l nh và d li u s do ng i l p đ c tính k thu t c a h th ng quy
đ nh T đ c tính c a vi x lý thi t k theo ki n trúc Von Neumann, ta th y, trong lúc vi x lý đang truy xu t d li u thì không th g i l nh vƠ ng c l i ơy c ng chính là m t nh c đi m c a ki n trúc Von Neumann, còn đ c g i là tình tr ng
th t c chai Von Neumann kh c ph c tình tr ng nƠy, ng i ta đư s d ng m t
s k thu t nh : tích h p thêm các b nh cache vào vi x lý ho c thi t k theo ki n
trúc Harvard
b Ki n trúc Havard
Trang 11V i hai đ ng bus l nh và d li u riêng bi t, vi x lý có th đ ng th i g i
l nh và truy xu t d li u T c đ c a vi x lý đ c thi t k theo ki n trúc Harvard
s nhanh h n ki n trúc Von Neumann, do nó có th th c hi n ngay l nh ti p theo khi v a k t thúc l nh tr c đó Tuy nhiên, v i vi c thêm vào vi x lý m t thành
ph n giao ti p bus và thêm vào h th ng m t bus n a s làm cho thi t k ph n c ng
tr nên ph c t p, t n nhi u tƠi nguyên h n
Nh ng thi t k vi x lý t c đ cao ngƠy nay th ng k t h p c hai ki n trúc Harvard và Von Neumann Gi i pháp là tích h p thêm vào vi x lý b nh đ m có
dung l ng nh (so v i các b nh chính) nh ng t c đ r t cao, g i là cache Cache
c ng đ c phân thành cache d li u và cache ch ng trình, t ng ng dùng đ
ch a d li u vƠ ch ng trình đư đ c th c thi nhi u l n tr c đó Vi x lý s tìm
l nh ho c d li u trong b nh cache t ng ng tr c Trong tr ng h p không có
l nh ho c d li u c n tìm, vi x lý s ti p t c tìm trong b nh chính thông qua bus
ngoài Hình 1.4 mô t vi x lý và h th ng thi t k theo ki u ki n trúc k t h p này
Nh v y, ki n trúc Harvard đ c dùng khi vi x lý truy c p vào b nh
cache, còn ki n trúc Von Neumann đ c s d ng m c truy c p b nh chính trong h th ng
Trang 127
Hình 1.4 Vi x lý v i b nh cache
Sau đơy, ta xét thêm m t k thu t nh m t ng t c đ x lý l nh c a vi x lý,
đó lƠ k thu t đ ng ng (pipeline) T i m t th i đi m, vi x lý ch th c thi đ c
m t l nh, l nh th c thi theo th t tùy vƠo ý đ nh c a ng i l p trình Quá trình
th c thi l nh bao g m các b c: nh n l nh t b nh , gi i mã l nh, th c thi l nh, truy xu t b nh và c p nh p các thanh ghi n i Vi x lý ph i t n ít nh t m t chu k máy đ th c thi m t b c, do đó, ph i t n m t vài chu k máy, vi x lý m i th c thi xong m t l nh Vì v y, đ t i u t c đ th c thi, ng i ta đư xơy d ng b x lý l nh theo ki n trúc đ ng ng, đ c mô t nh hình 1.5
Hình 1.5 ă ng ng 5 t ng
Trong đi u ki n không s d ng đ ng ng, m i l nh th c thi ph i t n 5 chu
k máy (l nh 1 t chu k 1 đ n chu k 5, l nh 2 t chu k 6 đ n chu k 10, ầ) V i
Trang 138
M t u đi m l n c a vi x lý đó lƠ có kh n ng thay đ i ch ng trình ho t
đ ng m t cách linh ho t theo m c đích c a ng i dùng, đ c bi t hi u qu đ i v i các bài toán và h th ng l n B n thân các vi x lý khi đ ng m t mình th ng không có nhi u hi u qu s d ng, nh ng khi lƠ m t ph n trong h th ng k t h p v i các ngo i vi khác thì vi x lý phát huy đ c hi u qu r t l n
1.2.2 H th ng bus
H th ng bus c ng là thành ph n không th thi u trong m t h th ng vi x
lý H th ng bus bao g m các đ ng tín hi u đ ng b và d li u mƠ qua đó ta có
th truy n đi đ a ch , d li u và thông tin v các hình th c truy xu t nh đ c ho c ghi Hình 1.6 th hi n đ n gi n các thành ph n c b n c a m t bus Trong hình 1.6, các Master là các thành ph n ch đ ng, có kh n ng phát các l nh đ c/ghi d li u
đ n các Slave Master có th là m t vi x lý ho c m t ngo i vi Các Slave là các
thành ph n b đ ng, ho t đ ng d a vào các yêu c u t Master
Hình 1.6 Các thành ph năc ăb n c a m t bus
B phân x bus (Arbiter)
T i m t th i đi m ch có m t Master đ c quy n truy xu t đ n m t Slave c
th Trong tr ng h p có nhi u h n m t Master mu n truy xu t đ n cùng m t Slave thì b phân x bus s đ a ra quy t đ nh th t các Master đ c truy xu t đ n Slave
đó Th t này tùy thu c vƠo đ c tính k thu t đ c đ nh ngh a tr c khi b t đ u
Trang 149
xây d ng h th ng Các tín hi u ngõ ra c a b phân x bus s đ c dùng làm tín
hi u đi u khi n các b d n kênh (Multiplexer)
B gi i mư đ a ch (Decoder)
Bus qu n lý các ngo i vi (Slave) trong h th ng b ng đ a ch Th ng trong
h th ng vi x lý, đ a ch đ c th hi n d i d ng s th p l c phân (hex) Tùy vào
h th ng, đ ng đ a ch có th có 8, 16, 32, ầ bit M t ngo i vi trong h th ng s
có t ng ng m t đ a ch ho c m t t m đ a ch Vi c phơn phát đ a ch cho ngo i vi
th ng đ c quy t đ nh b i ng i l p ra đ c tính k thu t cho h th ng M t
Master mu n truy xu t đ n m t ngo i vi nƠo đó trong h th ng ph i g i chính xác
đ a ch c a ngo i vi đó qua bus đ a ch M ch gi i mư đ a ch có ch c n ng ch n
chính xác ngo i vi t ng ng v i đ a ch ho c t m đ a ch đó
Có hai ph ng pháp gi i mư đ a ch :
a Gi i mư đ y đ hay toàn ph n: M i ngo i vi đ c gán v i m t đ a ch duy
nh t Khi đó ta ph i dùng t t c các bit đ a ch cho vi c gi i mã
b Gi i mã m t ph n: M i ngo i vi đ c gán v i m t t m đ a ch nƠo đó Do
đó, ta không nh t thi t ph i s d ng t t c các bit đ a ch cho vi c gi i mã
Ph ng pháp nƠy lƠm gi m đ ph c t p trong m ch gi i mư đ a ch
Ví d : Ta có chip nh dung l ng 4KB, tín hi u cho phép chip nh ho t
Vì 4 bit cao c a vùng đ a ch ch n chip nh có giá tr lƠ D (t ng ng s nh phơn lƠ: 1101), nên đ có th ch n chip đ c thì c n có m ch t o tín hi u ch n chip
/CS tích c c khi A15 = A14 = A12 = 1 và A13 = 0 hay /CS = /(A15 and A14 and
A12 and /A13) Do đó, ta ch c n m t c ng NAND 4 ngõ vào là có th gi i mư đ c
m ch này Hình 1.7 là m ch gi i mư vƠ s đ k t n i v i chip nh
Trang 15C u chuy n bus có ch c n ng k t n i hai bus ho t đ ng b t đ ng b trong h
th ng Vi c hai bus trong cùng m t h th ng nh ng ho t đ ng b t đ ng b có th là
do m t trong nh ng nguyên nhân sau:
Giao th c đi u khi n vƠ đ c/ghi d li u c a hai bus khác nhau
T c đ ho t đ ng c a hai bus khác nhau
Hình 1.8 là c u trúc r t đ c tr ng cho m t h th ng s d ng lõi vi x lý ARM Các lõi vi x lý ARM đ c s d ng r t ph bi n trong các thi t b di đ ng
hi n nay do nh ng u đi m v m c tiêu th đi n n ng Các lõi vi x lý ARM t ng
thích v i hai chu n bus là AHB và AXI Giao th c c a hai bus này là hoàn toàn
khác nhau, t c đ c a AXI bus c ng cao h n so v i AHB bus Do đó, đ các lõi ARM t ng thích v i AHB bus có th truy xu t đ n các ngo i vi t ng thích v i AXI bus ta c n ph i có c u chuy n bus t AHB sang AXI vƠ ng c l i
Hình 1.8 C u chuy n gi a hai bus AXI và AHB
Trang 1611
Vi c đ ng b d li u trong h th ng là c c k quan tr ng liên quan đ n m c
đ chính xác c a các quá trình x lý Trong m t h th ng ph c t p, các ngo i vi
ho t đ ng nh ng t n s cao ho c th p khác nhau Do đó, đ t i u hóa t c đ ho t
đ ng c a toàn b h th ng thì các ngo i vi t c đ cao (ho c th p) ph i đ c k t n i
v i bus t c đ cao (ho c th p), do đó, vi c trong h th ng xu t hi n nhi u h n m t
bus là không th tránh kh i Khi đó, vai trò c a c u chuy n bus là r t quan tr ng
d li u v i đ a c ng) Xét trên ph ng di n c a bus, m t s ngo i vi đóng vai trò
v a là Master, v a là Slave nh : USB, Ethernet, SATA, m t s ch đóng vai trò lƠ
Slavenh Timer, UART, PWM
Thông th ng, ho t đ ng c a các ngo i vi đ c l p trình thông qua vi x lý Sau khi đ c l p trình xong các ngo i vi s ho t đ ng d a vào các tín hi u đ ng b
nh ng t hay các tín hi u b t tay cho giao th c truy n nh n d li u tr c ti p không qua vi x lý (giao th c này còn g i là DMA)
1.3 L ch s phát tri n và phân lo i các b vi x lý
Có th nói vi x lý là s n ph m c a vi c phát minh ra transistor (n m 1947)
và m ch tích h p (n m 1958) [1] NgƠy nay, vi x lý đ c s d ng trong h u h t t t
c các l nh v c, t các máy tính nhanh nh t cho đ n nh ng đ ch i đ n gi n nh t,
và các ng d ng c a vi x lý s còn ti p t c đ c m r ng trong t ng lai
Vi x lý là ng d ng ph c t p nh t c a transistor, v i s l ng transitor có
th lên đ n hàng t trong m t s vi x lý hi n nay vƠ đơy ch a ph i là gi i h n cu i cùng V i nhu c u ph i t ng t c đ x lý cùng v i s phát tri n nhanh chóng c a k
Trang 1712
thu t, các công ty vi m ch hƠng đ u luôn tìm cách nâng cao t c đ x lý b ng cách
c i ti n công ngh s n xu t và t i u k thu t thi t k
K nguyên c a vi x lý đ c b t đ u t nh ng n m đ u th p k 70 v i s ra
đ i c a vi x lý phiên b n 4 bit Intel 4004 vƠo tháng 3 n m 1971 vƠ phiên b n 8 bit Intel 8008 vƠo tháng 4 n m 1972 B ng 1.1 li t kê các dòng vi x lý c a Intel t khi thành l p đ n n m 2007 T b ng 1.1 ta th y, t c đ vi x lý ngày càng nâng cao
(lên đ n hàng GHz), m c đ tích h p ngày càng nhi u (đ n hàng t transistor) và công ngh ch t o ngày càng nh (hàng nanomet) Hình 1.9 cho th y s phát tri n
c a các dòng vi x lý c a m t vƠi công ty đi n t trên th gi i
Hình 1.9 M t s dòng vi x lý tính t i th iăđi măn mă2010
Motorola tuy không có nhi u s n ph m nh Intel, nh ng c ng phát tri n m t
s chip vi x lý s d ng cho các ng d ng riêng c a mình M t s vi x lý đ c
tr ng c a Motorola nh : dòng vi x lý 8 bit 6800 đ c gi i thi u vƠo n m 1974, dòng vi x lý 16 bit 68000 đ c gi i thi u vƠo nh ng n m cu i th p niên 70 và các dòng vi x lý 32 bit đ c gi i thi u ti p sau đó 68020/68030/68040 VƠo nh ng
Trang 1813
n m đ u th p k 90, Motorola còn h p tác v i Apple vƠ IBM đ thi t k và ch t o các dòng vi x lý PowerPC (đôi khi đ c vi t t t là PPC) có t c đ cao, tích h p b
nh cache on-chip và ti t ki m n ng l ng, đ c s d ng trong các thi t b di đ ng
nh : đi n tho i, máy tính laptop M t s h vi x lý PPC nh : 601, 604, 620 (64
1999 Intel Pentium III
Intel Core 2 Duo
Intel Core 2 Extreme
Dual-Core Intel Xeon
Trang 1914
2006 Dual-Core Intel Itanium 2
2007 Quad-Core Intel Xeon
(Ngu n: Intel)
Vào kho ng gi a th p niên 70, hưng Zilog c ng gi i thi u s n ph m chip vi
x lý 8 bit đ u tiên c a hưng, đó lƠ Z80 Vi x lý nƠy đ c s d ng khá r ng rãi trong các máy vi tính vào th i k đó Sau đó, Zilog còn ti p t c phát tri n các vi x
lý 16 bit (Z8000) vƠ 32 bit (Z80000) nh ng không th t s thành công Ngoài ra,
m t s công ty đi n t n i ti ng khác c ng có nh ng dòng chip vi x lý riêng cho các s n ph m c a h nh : R2000, R3000, R4000, ầ c a MIPS, PA7100, PA7200, PA8000, ầ c a HP
Phân lo i vi x lý theo kh n ng c a b tính toán s h c (ALU)
Vi x lý 8 bit: t ng ng b tính toán s h c có kh n ng ti p nh n và tính toán các toán h ng 8 bit H u h t các vi x lý th h đ u đ u thu c lo i nƠy nh : Intel 8008, 8080, 8085, Z80, MC6800, ầ Hi n nay, các vi x lý v n còn đ c dùng trong m t s ng d ng đ n gi n vì nh ng u đi m v giá thành, m c đ tiêu th
n ng l ng
Vi x lý 16 bit: t ng ng b tính toán s h c có kh n ng ti p nh n và tính toán các toán h ng 16 bit Các vi x lý thu c dòng này h u h t đ c nâng c p t th
h 8 bit T p l nh c a các vi x lý nƠy đư đa d ng h n v i các l nh nhân s h c
M t s vi x lý đ c tr ng cho lo i này g m: Intel 8086, 80186, 80286 (các chip này
là nh ng chip đ u tiên thu c h x86 c a Intel), Motorola 68000, 68010
Vi x lý 32 bit: ơy lƠ dòng vi x lý đ c s d ng r t r ng rãi vào nh ng
n m cu i th k 20 vƠ đ u th k 21, v i nh ng tính u vi t v c u trúc, và các
ph n c ng h tr V i 32 bit đ a ch , các vi x lý này có kh n ng truy xu t vùng
nh lên đ n 4GB B tính toán s h c có kh n ng th c thi các toán h ng có chi u dƠi đ n 32 bit M t s vi x lý đ c tr ng cho lo i này g m: Intel 80386, 80486, Pentium, Motorola 68020, 68030, 68040, 68060
Trang 2015
Vi x lý 64 bit: Các vi x lý thu c lo i nƠy đ c phát tri n t nh ng n m
đ u th p niên 90 c a th k 20, nh ng th i đi m th c s bùng n lƠ vƠo đ u th k
21 v i s ra đ i c a các chip vi x lý 64 bit dùng cho máy tính cá nhân c a Intel (h x86-64 hay x64) và AMD (h AMD64) và h a h n s còn phát tri n m nh trong
t ng lai M t s vi x lý đ c tr ng cho lo i này bao g m: Intel Core i3, i5, i7, AMD Athlon 64, Turion 64
Trang 2116
CÂU H I ÔN T PăCH NGă1
1 Phân bi t các dòng vi x lý 8 bit, 16 bit, 32 bit và 64 bit K tên m t s vi x
8 Gi i thích các thông s sau trong b ng c u hình c a m t máy tính cá nhân?
Intel Core i3 4130T 2.9GHz – 3M, 4GB/1600, HDD 1TB, Webcam, GF GT710A, 23” Full HD Touch, DVDRW, Wireless N, Win8.1
Trang 2217
Ch ngă2 B VI X LÝ INTEL 8086
Vi x lý 8086 là vi x lý 16 bit đ u tiên c a Intel, đ c gi i thi u vƠo n m
1978 Ban đ u, t c đ c a 8086 lƠ 5MHz, đ c ch t o theo công ngh 3µ, v i s
l ng vào kho ng 29000 transistor, đ c s d ng trong khá nhi u ng d ng các
l nh v c khác nhau Vì 8086 thu c h 80x86, có tính k th a, nên các ch ng trình
vi t cho 8086 v n có th ch y trên các h th ng nâng c p sau này V m t c u t o, Intel 8086 c ng khá đ n gi n, r t thích h p đ ti p c n k thu t vi x lý ó c ng lƠ
m t s lý do ta l a ch n vi x lý Intel 8086 cho môn h c Vi x lý Ch ng nƠy s trình bày nh ng ki n th c c b n v 8086 nh : c u trúc ph n c ng, t p l nh, x lý
ng t, ầ
2.1 Ki n trúc bên trong c a 8086
2.1.1 S ăđ kh i
Trên hình 2.1 lƠ s đ kh i c u trúc bên trong c a vi x lý Intel 8086
Hình 2.1 ăS ăđ kh i c a vi x lý Intel 8086
T s đ kh i ta th y, c u trúc vi x lý 8086 bao g m 2 kh i chính: kh i
th c thi (EU) và kh i giao ti p bus (BIU) BIU có ch c n ng chính lƠ t o các đ a ch
Trang 2318
b nh ho c ngo i vi đ chuy n d li u gi a kh i th c thi v i các thành ph n bên ngoài vi x lý NgoƠi ra, BIU còn lƠ n i ti p nh n nh ng mã l nh t b nh vƠ đ t chúng vƠo hƠng đ i l nh EU nh n nh ng mã l nh (t hƠng đ i l nh) và d li u t BIU, th c thi nh ng l nh nƠy vƠ l u các k t qu vào các thanh ghi c a vi x lý
Vi c chia c u trúc c a vi x lý thành hai ph n là nh m nâng cao t c đ x lý l nh Trong th i gian EU b n th c thi m t l nh, BIU v n có th nh n m t l nh m i và
đ a vƠo hƠng đ i l nh Khi EU th c thi xong m t l nh thì nó s ngay l p t c tìm
đ c l nh k ti p trong hƠng đ i l nh mà không c n ph i ch m t kho ng th i gian
đ c l nh t BIU
2.1.2 Ch căn ngăvƠăch đ làm vi c c a các chân giao ti p
Trên hình 2.2 lƠ s đ chân c a vi x lý 8086
Hình 2.2 ăS ăđ chân c a vi x lý Intel 8086
Vi x lý 8086 có m t bus đ a ch 20 bit, bus d li u 16 bit, ba chân ngu n, và
17 chân dùng cho các ch c n ng đ nh thì vƠ đi u khi n gi m s l ng chân khi
đóng gói, bus đ a ch và bus d li u đ c d n kênh, t c là d li u vƠ đ a ch s d ng
Trang 2419
chung m t chân vi x lý Hình 2.3 và hình 2.4 mô t chu k đ c và ghi khi 8086
ho t đ ng ch đ t i thi u (t c là vi x lý tr c ti p t o các tín hi u đi u khi n đ truy c p b nh và các c ng I/O)
Hình 2.3 ăQuáătrìnhăđ c d li u c a 8086
T các hình 2.3 và hình 2.4 ta th y các chơn AD0 đ n AD15 s đóng vai trò
lƠ các chơn đ a ch trong chu k T1, nh ng s tr thƠnh đ ng d li u đ c ho c ghi trong các chu k T2 đ n T4 ơy chính lƠ thi t k dùng d n kênh theo th i gian
Ý ngh a c a các chơn nh sau:
Các chân s 2 đ n s 16 và chân 39: là các chân ba tr ng thái, v a là ngõ
vào, v a là ngõ ra Các chân này là bus đ a ch (trong chu k T1) và là bus d li u
(trong các chu k T2 đ n T4)
Các chân s 35 đ n s 38: là các ngõ ra ba tr ng thái Các chơn nƠy c ng
đ c d n kênh theo th i gian Trong chu k T1, các chân này là các bit cao c a bus
đ a ch Trong chu k t T2 đ n T4, các chân này th hi n tr ng thái hi n t i c a vi
x lý
Chân s 34: là ngõ ra ba tr ng thái Chơn nƠy c ng đ c d n kênh theo th i gian Trong chu k T1, chân này tích c c m c th p, đ c dùng đ cho phép truy
Trang 2520
xu t byte d li u theo tám bit cao trên đ ng bus d li u (AD8 đ n AD15) Trong
chu k T2 đ n T4, chơn nƠy c ng đ c dùng đ th hi n tr ng thái c a vi x lý
B ng 2.1 cho ta bi t m t s ch đ truy c p d li u d a vào giá tr c a chân này (
BHE) vƠ chơn đ a ch AD0 trong chu k T1
Hình 2.4 Quá trình ghi d li u c a 8086
B ng 2.1 B ng mô t truy c p d li u
0 1 Truy c p d li u theo byte t i đ a ch l , d li u lƠ AD8 đ n AD15
1 0 Truy c p d li u theo byte t i đ a ch ch n, d li u lƠ AD0 đ n AD7
Trang 2621
trong h vi x lý khác Ch c n ng c a các chân s 24 đ n 32 thay đ i ph thu c vào
m c logic c a chân này
Chân s 32: là m t ngõ ra ba tr ng thái, tích c c m c th p Chân này có ch c
n ng ch h ng c a lu ng d li u trên bus là t b nh hay I/O đ n vi x lý (t c là
quá trình đ c d li u) D li u đ c v t ng ng trong chu k chân này tích c c
Chân s 31: là m t ngõ vào, tích c c m c cao Chân này có ch c n ng cách
ly vi x lý (h m ch t t c các đ ng bus) v i ngo i vi và b nh đ cho m t ph n
t khác truy c p vào các thi t b này Ch đ nƠy đ c g i lƠ “truy c p b nh tr c
ti p” (DMA)
Chân s 30: là m t ngõ ra, tích c c m c cao Có ch c n ng xác nh n đư cách
ly vi x lý kh i các ngo i vi và b nh khi có yêu c u t bên ngoài (chân 31 tích
c c)
Chân s 29: là ngõ ra ba tr ng thái, tích c c m c th p Chân này có ch c
n ng ng c l i so v i chân 32 Nó ch h ng c a lu ng d li u trên bus đi t vi x
lý đ n ngo i vi ho c b nh (t c là quá trình ghi d li u) D li u có giá tr ghi trong chu k tín hi u này còn tích c c
Chân s 28: là m t ngõ ra ba tr ng thái Chân này xu t ra chu k T1, đ c dùng đ ch n thi t b truy xu t là ngo i vi (m c th p) hay b nh (m c cao)
Chân s 27: là m t ngõ ra ba tr ng thái Chân này có ch c n ng đi u khi n
h ng c a lu ng d li u qua các b đ m (n u có) đ c n i vào bus d li u h
th ng Khi chân này m c th p, nó ch truy xu t đ c, khi m c cao, nó ch truy
xu t ghi
Chân s 26: là m t ngõ ra ba tr ng thái Chân này có ch c n ng c m các b
đ m d li u cho đ n chu k T2, khi các chân ADi không còn gi đ a ch c a b nh
ho c ngo i vi
Chân s 25: là m t ngõ ra, tích c c m c cao Chơn nƠy th ng đ c s d ng
đ ch t đ a ch T các gi n đ đ nh thì quá trình đ c/ghi c a vi x lý trong các hình
2.3 và hình 2.4, ta th y m i chu k bus đ u b t đ u v i xung ALE trong chu k T1
a ch 20 bit đ c đ m b o h p l khi chân này tích c c
Trang 27 Chân s 17: là m t ngõ vào Chân này có ch c n ng t ng t nh chơn 18,
nh ng b t ng t theo c nh lên Ng t chân này không che (c m) đ c mà s luôn
Chân s 22: là m t ngõ vào, tích c c m c cao Chơn nƠy đ c l y m u
c nh lên xung nh p trong chu k T2 N u đ ng này m c th p thì m t tr ng thái T3 thêm (g i là tr ng thái ch ) đ c chèn vào b i vi x lý Chu trình này ti p t c
l p l i cho đ n khi tín hi u này lên m c cao Chơn nƠy th ng đ c lái b i các thi t
b đáp ng ch m, không th cung c p d li u k p th i cho vi x lý
Chân s 21: ngõ vào reset h th ng, tích c c m c cao Reset s k t thúc l nh
đang th c thi hi n t i và quay l i th c hi n l nh ban đ u c a ch ng trình (b t đ u
t i đ a ch FFFF0H) Reset th ng đ c dùng khi m i b t đ u cho h th ng ch y
ho c khi x y ra s c h th ng
Chân s 19: cung c p xung nh p clock cho vi x lý ho t đ ng T t c các tín
hi u trong vi x lý đ u đ c đ ng b theo xung nh p này
Chân s 1 và 20: ngõ vào n i mass
Chân s 40: ngõ vào n i v i ngu n Ngu n c p cho 8086 ho t đ ng là +5V
Trang 2823
Kh i logic đi u khi n bus có ch c n ng nh n đ a ch đ c sinh ra t quá
trình tính toán tr c đó, gi i mư vƠ đ c/ghi d li u đ n các ngo i vi thích h p i
v i quá trình đ c mã l nh thì các l nh đ c vào s đ c đ a vƠo hƠng đ i l nh
HƠng đ i l nh có kích th c 6 byte, đ c dùng đ ch a các mã l nh đ c
đ c tr c và ch EU x lý ơy lƠ m t c u trúc m i đ c Intel áp d ng nh m nâng cao t c đ th c thi c a vi x lý Trong lúc EU đang b n th c thi l nh hi n t i thì BIU v n s ti p t c nh n các l nh ti p theo và x p vƠo hƠng đ i Do đó, khi EU
th c thi xong m t l nh thì s ti p t c th c thi l nh ti p theo t hƠng đ i mà không
ph i ch th i gian đ c l nh đó thông qua BIU HƠng đ i l nh ho t đ ng theo nguyên t c “vào tr c – ra tr c” (first in – first out hay FIFO), ngh a lƠ byte l nh
nƠo đ c c t vƠo hƠng đ i tr c s đ c l y ra x lý tr c Khi hƠng đ i l nh đ y,
t c là có 6 l nh trong hƠng đ i, BIU s ng ng quá trình g i l nh đ n khi hƠng đ i
tr ng 2 byte Do bus d li u c a 8086 có đ r ng 16 bit nên thông th ng 8086 luôn l y 2 l nh x p vƠo hƠng đ i sau m i l n g i Các l nh trong ch ng trình th c thi c a vi x lý đ c s p x p theo m t tr t t nh t đ nh vƠ đ c qu n lý thông qua
đ a ch Vi x lý s th c thi các l nh này m t cách tu n t Do đó, khi m t l nh đang đ c th c thi thì BIU s l y các l nh các đ a ch ti p theo x p vƠo hƠng đ i Tuy nhiên, khi vi x lý th c thi m t l nh r nhánh (l nh nh y ho c g i hàm con) thì
đ a ch l nh k ti p s không theo tr t t bình th ng n a mà ph thu c vào l nh r nhánh đang th c thi Khi đó, d li u trong hƠng đ i s b xóa và BIU s g i l nh t
đ a ch m i và l i x p vƠo hƠng đ i đ th c thi
Các thanh ghi đo n: bao g m b n thanh ghi CS, DS, SS vƠ ES, có đ r ng 16 bit
Bus đ a ch c a 8086 có đ r ng 20 bit, do đó 8086 có kh n ng truy xu t đ n không gian b nh có dung l ng t i đa lƠ 1MB (220 byte) Không gian b nh này (v sau g i là vùng nh ) l i đ c chia nh thành nh ng vùng nh nh h n có dung
l ng t i đa 64KB, g i lƠ các phơn đo n (segmentation) Các phơn đo n có th n m
li n k nhau, ch ng l p hoàn toàn ho c ch ng l p m t ph n Trên hình 2.5, phân
đo n B (segment B) vƠ phơn đo n C (segment C) ch ng l p m t ph n, phơn đo n C
vƠ phơn đo n D (segment D) ch ng l p hoàn toàn
Trang 2924
Hình 2.5 ăCácăphơnăđo n trong b nh
Trong m t ch ng, trình th ng có r t nhi u phơn đo n v i các ch c n ng khác nhau nh :
Phơn đo n ch ng trình: dùng đ ch a mã l nh th c thi c a ch ng trình
Phơn đo n d li u: dùng đ ch a các d li u đ c/ghi t vi x lý
Phơn đo n dùng lƠm ng n x p (stack): dùng vào các m c đích đ c bi t nh :
b o l u d li u hay tr ng thái c a vi x lý tr c khi x y ra ng t ho c nh y vƠo ch ng trình con
Các phơn đo n đ c đ t trong vùng nh 1MB, t ng ng v i đ a ch v t lý
bi n đ i t : 0 đ n FFFFFH Tuy nhiên, 8086 không s d ng đ a ch nƠy đ truy xu t vƠo các phơn đo n do thanh ghi ch có đ r ng 16 bit lƠm đ c vi c này, 8086
s d ng b hai s 16 bit, bao g m đ a ch c s (còn g i lƠ đ a ch đ u) vƠ đ a ch
offset (còn g i lƠ đ a ch l ch) B hai s nƠy đ c g i lƠ đ a ch logic truy xu t vƠo các phơn đo n, vi x lý ph i t o ra đ a ch v t lý t đ a ch logic (b ng ph n t
∑) vƠ đ a lên bus đ a ch a ch v t lý đ c tính nh sau:
c a các thanh ghi đo n làm cho các phơn đo n có th d ch chuy n linh ho t trong
ph m vi không gian 1MB Hình 2.6 mô t chi ti t vai trò c a t ng thanh ghi đo n
Trang 3025
Hình 2.6 Vai trò c aăcácăthanhăghiăđo n
Thanh ghi con tr l nh: IP, đ r ng 16 bit
Thanh ghi IP có ch c n ng ch a đ a ch offset c a l nh ti p theo tính t đ a
ch đ u c a phơn đo n mã l nh hi n t i Do đó, đ a ch logic c a l nh ti p theo đ c
g i vƠo hƠng đ i là c p giá tr thanh ghi: CS vƠ IP Thanh ghi nƠy đ c qu n lý b i BIU, ng i l p trình không th can thi p tr c ti p vào thanh ghi này Tuy nhiên,
m t s l nh có th lƠm thay đ i, l u ho c l y l i giá tr c a thanh ghi này t ng n
x p
Khi h th ng đ c reset, n i dung c a các thanh ghi s đ c n p l i giá tr
nh b ng 2.2
B ng 2.2 Giá tr c a các thanh ghi sau khi reset
Trang 31 n v đi u khi n (CU): có ch c n ng nh n l nh t hƠng đ i và gi i mã l nh Ngõ ra c a kh i nƠy đ c đ a đ n m t s kh i đi u khi n khác nh : kh i tính toán
s h c (ALU), thanh ghi c , ầ
Kh i tính toán s h c (ALU): nh n tín hi u đi u khi n t b gi i mã l nh và
th c hi n các phép tính toán s h c phù h p v i l nh đó Ngõ ra t b ALU s tác
đ ng đ n các thanh ghi chung và thanh ghi c
Các thanh ghi chung
Vi x lý 8086 có 8 thanh ghi chung M i thanh ghi có đ r ng 16 bit vƠ đ c chia thành hai nhóm Nhóm th nh t là thanh ghi d li u AX, BX, CX, DX, nhóm
th hai là các thanh ghi ch s SP, BP, DI, SI
Trang 3227
Thanh ghi CX: còn đ c g i là b đ m, th ng dùng đ ch a s vòng l p trong các tr ng h p có l nh LOOP Thanh ghi CL th ng dùng đ ch a s bit c n
d ch ho c xoay thanh ghi trong các l nh t ng ng
Thanh ghi DX: đ c s d ng cho các phép nhân ho c chia s h c
Các thanh ghi ch s
Thông th ng, các thanh ghi trong nhóm nƠy đ u đ c s d ng nh các thanh ghi đa n ng, nh ng ng d ng chính c a m i thanh ghi m c đ nh là thanh ghi
l ch cho các phơn đo n t ng ng
Thanh ghi BP: con tr c s , ch a đ a ch c a m t d li u n m trong ng n
x p SS Do đó, đ a ch logic c a m t ph n t ch a trong ng n x p là c p s SS và
BP
Thanh ghi SP: con tr ng n x p, ch a đ a ch đ nh hi n t i c a ng n x p SS
Do đó, đ a ch logic c a đ nh hi n t i c a ng n x p là c p s SS và SP
Thanh ghi SI và DI: ch s ngu n và ch s đích, tr vào d li u trong phân
đo n d li u Do đó, đ a ch logic c a d li u là các c p s : DS và SI, DS và DI
Thanh ghi c :
ơy lƠ thanh ghi đ c bi t, có đ r ng 16 bit M i bit trong thanh ghi này có
ch c n ng th hi n m t tr ng thái 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 kh i EU D a vào các c nƠy, ng i l p trình s có
h ng thích h p cho lu ng ch ng trình ti p theo Thanh ghi nƠy có 16 bit nh ng
ng i ta ch s d ng 9 bit đ làm các bit c Hình 2.7 mô t tên và v trí các c trong thanh ghi
Trang 3328
C C (CF): c nh C này có giá tr 1 khi k t qu phép tính c ng có nh
ho c phép tính tr ph i m n bit MSB C nƠy c ng b tác đ ng b i l nh xoay
m t thanh ghi ho c m t ô nh Bit xoay s đ c đ t vào c này
C P (PF): c parity C này cho bi t t ng s bit 1 trong k t qu tính toán là
s ch n hay s l PF có giá tr 1 khi t ng s bit 1 là m t s ch n C nƠy th ng
đ c dùng đ ki m tra l i trên đ ng truy n d li u
C A (AF): c nh ph C này r t có ý ngh a khi ta làm vi c v i các s BCD AF có giá tr 1 khi phép toán có nh ho c m n t m t s BCD th p (4 bit
th p) sang m t s BCD cao (4 bit cao)
C Z (ZF): c zero C này có giá tr 1 khi k t qu phép toán là 0
C S (SF): c d u C này có giá tr 1 khi k t qu phép toán là s âm Vi x
lý 8086 hi u m t s âm theo ki u bù 2, t c là s ơm t ng ng v i bit MSB là 1, s
d ng ng v i bit MSB b ng 0
C O (OF): c tràn C này báo hi u phép tính s h c b tràn, t c là k t qu phép tính v t quá t m bi u di n c a thanh ghi, khi đó k t qu tính toán không chính xác Trong tr ng h p này, vi x lý s sinh ra ng t tràn và nh y vƠo ch ng trình ng t đ ng i l p trình có h ng x lý cho phù h p
Trên đơy lƠ sáu c ch tr ng thái c a các phép tính s h c N i dung các c này ch đ c thay đ i b ng ph n c ng, ng i l p trình ch có th đ c giá tr (Read Only) mà không th ghi vào các c này
Các c đi u khi n:
C T (TF): c b y Vi c set c này lên 1 s đ t vi x lý vào ch đ ch y t ng
l nh Thông th ng, c nƠy đ c s d ng cho vi c tìm và gi i quy t l i ch ng trình ch đ này, vi x lý s sinh m t ng t trong sau khi th c thi m t l nh đ cho
ng i l p trình có th quan sát k t qu c a vi c th c thi l nh đó
C I (IF): c cho phép ng t i v i các ng t có m t n (maskable), c này
cho phép ho c không cho phép vi x lý nh y vƠo ch ng trình ng t khi có m t ng t
x y ra i v i các ng t không có m t n (non-maskable), bit này không có tác
d ng IF = 1: cho phép ng t, IF = 0: c m ng t
Trang 3429
C D (DF): c h ng Khi c nƠy đ c set lên 1, m t chu i s đ c x lý t
đ a ch cao xu ng đ a ch th p, t c là t ph i sang trái Khi c này b xóa v 0, chu i
s đ c x lý theo h ng ng c l i, t c là t trái sang ph i
Trên đơy lƠ ba c đi u khi n ho t đ ng c a vi x lý Các c này có kh n ng
đ c/ghi (Read/Write), t c là n i dung các c này có th đ c l p trình b ng ph n
m m, tùy vào m c đích c a t ng ch ng trình
2.3 Quá trình s lý l nh
L nh c a m t vi x lý đ c mư hóa d i d ng các s nh phơn 0 vƠ 1, vì đó
là d ng bi u di n thông tin duy nh t mà máy hi u đ c Do đó, 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 tùy theo b vi x lý Gi s m t b vi x lý nƠo đó dùng m t byte đ ch a các mã l nh (opcode) c a nó Ta có th tính đ c s l nh
l n nh t mà m t byte này có th mư hóa đ c là 256 (28) l nh Trong th c t vi c
mã hóa m t l nh hoƠn toƠn không đ n gi n nh v y mà còn ph thu c vào r t nhi u
Trang 35b nh , thanh ghi ho c trong các ngo i vi Các ph ng pháp đ nh đ a ch s cho vi
x lý bi t các toán h ng đ c đ đơu Sau đơy lƠ các ph ng pháp đ nh đ a ch
MOV AL, ABH; n p s hex AB vào thanh ghi AL
MOV BX, 1000H; n p s hex 1000 vào thanh ghi BX
Cách đ nh đ a ch thanh ghi
Trang 3631
Trong ch đ đ a ch nƠy ng i ta dùng các thanh ghi bên trong vi x lý nh
là các toán h ng đ ch a d li u c n thao tác Cách đ nh đ a ch nƠy th ng đ c dùng đ di chuy n d li u gi a các thanh ghi
Ví d :
MOV BX, DX; chuy n n i dung thanh ghi DX vào thanh ghi BX
Ta có th k t h p cách đ nh đ a ch nƠy vƠ cách đ nh đ a ch t c th i đ n p giá tr cho thanh ghi đo n
Ví d :
MOV AX, 1080H; n p s hex 1080 vào AX
MOV DS, AX; chép n i dung AX (1080H) vào DS
Chú ý: vi c chuy n d li u gi a các thanh ghi sau là không h p l
MOV BL, BX; do quá kích th c
MOV CS, AX; CS không th là toán h ng đích
MOV ES, DS; c m chuy n thanh ghi đo n sang thanh ghi đo n
l n trong ch ng trình thì cách nƠy l i không hi u qu Cách đ nh đ a ch gián ti p
gi i quy t v n đ này b ng cách l u tr đ a ch b nh trong m t thanh ghi pointer hay index (BX, BP, SI ho c DI) Ngoài ra, ta có th thay đ i vi trí truy c p b nh
b ng cách c ng thêm m t đ d i (theo ki u s bù 2) vào pointer hay index
Trang 3732
Chú ý, các đo n m c nhiên cho t t c các cách đ nh đ a ch gián ti p lƠ đo n
ng n x p khi có dùng BP, vƠ lƠ đo n d li u khi có dùng các thanh ghi BX, SI và
DI Sau đơy lƠ m t s d ng đ nh đ a ch gián ti p:
nhăđ a ch gián ti p thanh ghi
Cách này s d ng thanh ghi thay vì h ng s (nh trong đ nh đ a ch tr c ti p)
đ đ c t đ a ch offset Các thanh ghi ch a đ a ch offset là: BP, BX, DI và SI
Thanh ghi đo n m c nhiên khi s d ng BP là SS, khi s d ng các thanh ghi còn l i thì thanh ghi đo n m c nhiên là DS
Ví d : v i BX=0222H, DS=1000H, SS=2000H, BP=0111H
MOV CX,[BX]; chép 1 word t ô nh 10222H và 10223H vào CX
MOV [BP],DL; l u 1 byte t thanh ghi DL vào ô nh 20111H
nhăđ a ch n n
Toán h ng đ c đ t đ a ch cho tr c b ng cách c ng m t đ d i vào các thanh ghi BX ho c BP và k t h p k t qu v i thanh ghi đo n
Ví d : v i DS=1000H, SS=2000H, BP=0222H, BX=0111H
MOV AX,[BP-2]; chép n i dung c a 20220H và 20221H vào AX
MOV [BX+777H],AX; l u n i dung AX vào 10888H và 10889H
nhăđ a ch ch s
Cách nƠy t ng t nh đ nh đ a ch n n, ngo i tr các thanh ghi đ c s
d ng là các thanh ghi ch s SI và DI Sau khi c ng v i đ d i, k t qu này s k t
h p v i thanh ghi đo n m c đ nh lƠ DS đ t o ra đ a ch v t lý truy c p đ n vùng
nh
Ví d : v i DS=1000H, SI=222H, DI=111H
MOV [DI-1],BL; l u n i dung thanh ghi BL vào ô nh 10110H
MOV BX,[SI+1000H]; chép n i dung các ô nh 11222H và 11223H vào BX
nh đ a ch n n vƠ đ nh đ a ch ch s còn đ c g i lƠ đ nh đ a ch t ng đ i thanh ghi
nhăđ a ch n n v iăđ d i
Trang 3833
Các thanh ghi n n (BX vƠ BP) đ c c ng v i các thanh ghi ch s (DI và SI)
nh nh ng s nguyên d ng đ cho ra giá tr offset Giá tr offset này s k t h p v i thanh ghi đo n (DS ho c SS) đ t o đ a ch v t lý truy c p b nh
Ví d : v i SS=1000H, SI=3333H, BP=2222H
MOV AX,[SI+BP]; n p n i dung các ô nh 15555H và 15556H vào AX
Cách đ nh đ a ch chu i
Chu i là m t dãy liên t c các byte hay word đ c c t trong b nh Các ký
t trong chu i đ c mã hóa theo b ng mã ASCII Vi x lý 8086 có nhi u l nh đ c thi t k riêng cho x lý các chu i ký t Các l nh nƠy có cách đ nh đ a ch đ c bi t
và s d ng đ a ch logic DS:SI đ ch đ n ngu n vƠ ES:DI đ ch đ n đích c a chu i L nh MOVSB s chuy n byte d li u ngu n đ n v trí đích Các l nh v i chu i không đ c s d ng b t c cách đ nh đ a ch nào khác Các chu i có th dài
đ n 64KB
Ví d : v i DS=1000H, ES=2000H, SI=10H, DI=20H
MOVSB; chuy n m t byte trong chu i t 10010H đ n 20020H
nh đ a ch c ng
Ví d :
IN AL,40H; chép n i dung c a c ng I/O 40H vào AL
OUT 80H,AL; đ a n i dung c a AL ra c ng I/O 80H
C ng I/O còn có th truy xu t b ng thanh ghi
Ví d :
IN AL,DX; chép n i dung c a c ng I/O ch b i DX vào AL
nh đ a ch ng n x p
c s d ng trong các l nh CALL/RET vƠ PUSH/POP Ng n x p c a 8086
đ c t ch c theo c u trúc LIFO (last in first out, t c lƠ vƠo sau ra tr c)
Ví d :
PUSH AX; c t n i dung thanh ghi AX vƠo ng n x p
PUSH [BX]; c t n i dung c a ô nh (DS:BX) vƠo ng n x p
POP AX; l y n i dung c a đ nh ng n x p hi n th i đ a vƠo AX
Trang 3934
Trong tr ng h p l nh CALL, đ a ch quay v s đ c c t trong ng n x p
L nh RET s l y l i đ a ch này t ng n x p vƠ đ t nó vào con tr l nh (IP)
Sau đơy lƠ m t s quy t c k t h p các thanh ghi đo n và offset
Thông th ng vi x lý có các quy t c m c đ nh k t h p thanh ghi đo n và
thanh ghi offset Các quy t c nƠy đ c s d ng cho m t s cách đ nh đ a ch nh t
đ nh Tuy nhiên, ta có th thay đ i các quy t c này b ng cách s d ng các ti p đ u
ng nh sau:
B ng 2.4 Quy t c k t h păthanhăghiăđo n và thanh ghi offset
Thanh ghi offset Thanh ghi đo n m c đ nh Ti p đ u ng
MOV AX,[DI]; n p n i dung DS:[DI] vào thanh ghi AX
MOV AX,ES:[DI]; n p n i dung ES:[DI] vào thanh ghi AX
2.3.2 T p l nh 8086
Vi x lý 8086 có 90 l nh c b n đ c chia thành các nhóm l nh nh nh : chuy n d li u, s h c, logic, x lý chu i, chuy n đi u khi n vƠ đi u khi n b x
lý N i dung giáo trình này s gi i thi u m t s l nh c b n th ng đ c s d ng
Trang 4035
ο ích: ô nh , thanh ghi chung, thanh ghi đo n
ο Ngu n: ô nh , thanh ghi chung, thanh ghi đo n, h ng s
M t s đi m c n l u ý đ i v i các toán h ng:
ο Khi toán h ng đích lƠ thanh ghi đo n thì toán h ng ngu n ph i là
thanh ghi chung ho c ô nh 16 bit
ο Khi toán h ng ngu n lƠ thanh ghi đo n thì toán h ng đích ph i là
thanh ghi chung 16 bit ho c ô nh
Ví d :
MOV AL, 10; AL = 0AH
MOV DL, SS:[DI]; n p n i dung ô nh có offset [DI] trong đo n stack vào
DL
MOV ES, CX; n p thanh ghi CX vƠo thanh ghi đo n ES
MOV BP, SS; n p thanh ghi đo n SS vào BP,
- MOV ARRAY[SI],AL; n p thanh ghi AL vào ô nh đ c tr b i SI
IN AL, 70h; đ c 1 byte t c ng có đ a ch 70h và n p vào thanh ghi AL
IN AX, DX; đ c c ng có đ a ch l u trong thanh ghi DX vƠ n p vào AX
L nh OUT
- Cú pháp: OUT c ng,thanh ghi tích l y