Mặc dự cỏc bộ vi xử lý 8 bit đã mang lạinhững cải thiện to lớn, nhưng hệ thống này sớm được phát hiện là khụng đỏpứng được một số ứng dụng do các hạn chế sau : Từ 8 bit làm giảm khả năng
Trang 1MỞ ĐẦU
Intel là nhà tiên phong trong việc sản xuất bộ vi xử lý khi tung ra Intel
4004 vào năm 1971 Tuy vậy bộ vi xử lý đầu tiên “đặt chõn” vào ngôi nhà sốcủa chúng ta hiện nay không phải là Intel 4004 mà là bộ vi xử lý thế hệ kếtiếp của nã - Intel 8080 một máy tính 8 bit hoàn hảo trên một chip duy nhấtđược giới thiệu vào năm 1974 Mặc dự cỏc bộ vi xử lý 8 bit đã mang lạinhững cải thiện to lớn, nhưng hệ thống này sớm được phát hiện là khụng đỏpứng được một số ứng dụng do các hạn chế sau : Từ 8 bit làm giảm khả năngcủa quá trình xử lý hoặc kéo dài thời gian xử lý với các số lớn và cỏc cụngviệc đòi hỏi độ chính xác cao, hơn nữa nó chỉ có thể quản lý bộ nhớ có dunglượng 64K là quá hạn chế đặc biệt trong các ứng dụng lớn Việc yêu cầu cómột bộ vi xử lý có khả năng địa chỉ hoá một bộ nhớ lớn hơn 1Mb là đề tàicạnh tranh của cỏc hóng sản xuất vi xử lý Vào năm 1979 Intel cho ra đời bộ
vi xử lý 8088 là thế hệ bộ vi xử lý đầu tiờn “loộ sỏng” thực sự trên thịtrường,nú có cấu trúc cơ bản giống như 8086 nhưng mặc dù Bus dữ liệu trongvẫn là 16 thì Bus dữ liệu ngoài chỉ là 8 bit để "thoả hiệp" với các thiết bịngoại vi 8 bit đang thịnh hành lúc đó. Được giới thiệu vào năm 1979 và sau
đó được tích hợp vào các máy tính cá nhân IBM xuất hiện trên thị trường vàonăm 1982, Intel 8088 có thể được xem như người tiền nhiệm chính của các bộ
xử lý thế hệ tiếp theo : Intel 80286, 80386, 80486 rồi đến Intel Pentium,Pentium Pro, Pentium II, III, IV do tất cả đều dựa trờn thiết kế cơ bản củaIntel 8088
Trang 2- Vi điều khiển chuyờn dụng : Một hướng phát triển là cỏc chớp điềukhiển chuyên dụng.Những chíp này được sử dụng để điều khiển cỏc mỏythông minh nh lò vi súng ,máy giặt quần ỏo,mỏy khõu,mỏy tiện kim loai…
- Vi xử lý bit-slice : Hướng phát triển thứ hai là vi xử lý bit-slice Cácchíp này cho phép có thể được ghép với nhau để xây dung mét CPU theo ýmuốn, ngoài ra người dựng cũn cú thể tạo ra tập lệnh CPU của riờng mìnhbằng việc sử dụng vi mó(microcode)
- Vi xử lý đa năng :Mạch vi xử lý đa năng đã đem lại cho các máytính
hiện nay hầu hết hoặc toàn bộ sức mạnh tính toán của máy tính đa năng trước
đó Sau khi Motorola cho ra đời MC6800 đến năm 1979 intel cho ra đời 8088
là bộ vi xử lý 16 bit và đến nay là các chip vi xử lý Pentium
1.2 Giới thiệu bộ vi xử lý 8088
Intel 8088 là bộ vi xử lý (BVXL)ra đời năm 1979, được sử dụng cho nhữngchiếc IBM PC/XT đầu tiờn trờn thế giới với giá thành rẻ hơn bộ vi xử lý
8086 8088 là bộ vi xử lý 16 bit chạy ở tốc độ 4,77 MHZ và có thể hỗ trợ tối
đa 1MB RAM, hoạt động dựa trờn tập hợp các lệnh và cỏc tớn hiệu điềukhiển trong từng chế độ khác nhau.Trong máy tính IBM PC/XT, bé vi xử lý
8088 được dùng làm bộ vi xử lý trung tâm CPU, lắp trên mainboard
BVXL 8088 được bán chủ yếu cho IBM để tạo nờn dũng IBM nổi
tiếng.Sự thành công của 8088 đã đưa intel vào hàng Fortune 500 và được tạp chí Fortune bình chọn là một trong những công ty thành công trong thập niên
70 chính nhờ sự thành công này ,intel đã chọn làm mốc khởi đầu cho kiến
Trang 3trúc intel (Intel Architecture-IA) BVXL 8088 được bán chủ yếu cho IBM để tạo nên dòng IBM nổi tiếng.Sự thành công của 8088 đã đưa intel vào hàng Fortune 500 và được tạp chí Fortune bình chọn là một trong những công
ty thành công trong thập niên 70 chính nhờ sự thành công này ,intel đã chọn làm mốc khởi đầu cho kiến trúc intel (Intel Architecture-IA)
2 Bé vi xử lý 8088 của intel
2.1 Sơ đồ khối
Trong máy tính, đóng vai trò trung tâm điều khiển hoạt động của toàn
bộ hệ thống là bộ vi xử lý trung tâm CPU Bé vi xử lý 8088 trong máy tínhIBM PC/XT là bộ xử lý 16 bit có nhiệm vụ điều khiển hoạt động cơ bản củamáy bằng cách gưỉ đi hoặc thu nhận cỏc tớn hiệu điều khiển ,các địa chỉ bộnhớ và các dữ liệu từ phần này sang phần khác của máy tính thông qua cácmạng lưới các đường liên lạc gọi là bus Để nối bộ nhớ và các chip hỗ trợkhác nhau vào bus cú cỏc cổng vào ra (I/O port) đặt doc theo bus nàysang phần khác của máy tính thông qua các mạng lưới các đường liên lạc gọi
là bus Để nối bộ nhớ và các chip hỗ trợ khác nhau vào bus có các cổng vào ra(I/O port) đặt doc theo bus Dữ liệu đi qua các cổng vào ra để đến hoặc rờiCPU tới các phần khác của máy vi tính
Trang 4Sơ đồ khối và cỏc chõn chức năng của 8088
BVXL 8088 được chia thành hai phần có chức năng riêng biệt là: đơn vịgiao tiếp BIU( Bus Interface Unit) và đơn vị thi hành lệnh EU (ExcutionUnit)
- BIU có chức năng gửi ra các địa chỉ, nhận các lệnh từ bộ nhớ đọc số
MN / MX nối với nguồn +5V) liệu vào từ các cổng ,bộ nhớ,ghi dữ liệu
ra chóng Nói cách khác Biu điều khiển tất cả các việc di chuyển sốliệu và địa chỉ trên BUS cho EU BIU bao gồm ALU ,các thanh ghi cómục đích chung ,thanh ghi cờ và các mạch đỡờu khiển
- EU của 8088 điều khiển cho BIU tỡm đỳng lệnh, dữ liệu … EU bao gồm các thanh ghi đoạn, hàng đợi lệnh và con trỏ lệnh (IP)
2.1.1 Cỏc chân chức năng
- Cỏc chõn chức năng
-AD0 - AD7: cỏc chõn địa chỉ dữ liệu phân đường chứa 8 bit dữ liệu hoặc
8 AD0 - AD7: các chân địa chỉ dữ liệu phân đường chứa 8 bit dữ liệuhoặc 8
bit thấp của địa chỉ bộ nhớ hoặc I/O
-A8 - A15 : cỏc chõn địa chỉ xác định 8 bit cao của địa chỉ bộ nhớ ,I/O, A8 - A15 : các chân địa chỉ xác định 8 bit cao của địa chỉ bộ nhớ ,I/O, trong suốt quá trình HLDA hoạt động cỏc chõn này ở trạng thỏi khỏng trởcao
- A16/S 3, A17/S 4, A18/S 5, A19/ S6 : cỏc chõn địa chỉ / trạng thỏi ,cỏcchân này ở trạng thỏi khỏnh trở cao trong suốt quá trình HLDA Bit trạng tháiS6 luôn = 0 <S5 ở trạng thái cờ IF,S3-S4 xác định đoạn nhớ đang được xâmnhập:
Trang 5S4,S3 xác định đoạn nhớ đang được xâm nhập
- RD : tín hiệu điều khiển đọc dữ liệu từ bộ nhớ,cổng I/O
- READY: tín hiệu vào thông báo bộ nhớ hoặc cổng I/O sẵn sàng làmviệc
- INTR: (Interup Request) tín hiệu vào yêu cầu ngắt che được bằngphần mềm
- TEST: tín hiệu vào để kỉêm tra BVXL bằng lệnh WAIT
- NMI: đầu vào tín hiệu ngắt không che được
- RESET: tín hiệu vào để khởi động BVXL, địa chỉ khởi độngFFFF0h
- CLK: tín hiệu nhịp đưa vào cho BVXL lấy từ bộ phát xung nhịp8284
- Vcc: điện áp nguồn 5V
- GND: Ground-đất
- MN/MX: minimum/maximum mode Tín hiệu vào điều khiển chếđộ,tín hiệu này được xác lập cố định.MN/MX nối với + 5V- chế độmin, nối với đất - chế độ max
- Cỏc chân ở chế độ MIN
- M/IO: chỉ ra rằng CPU đang thâm nhập bộ nhớ hay cổng I/O
- WR: tín hiệu ra ba trạng thỏi bỏo ghi dữ liệu bộ nhớ,I/O
- INAT: tín hiệu ra chấp nhận ngắt
- ALE: tín hiệu thông báo rằng bus địa chỉ dữ liệu có chứa địa chỉ
- DT/R:tớn hiệu ra ba trạng thái chỉ chiều chuyển động của dữ liệu,DT/R = 0
dữ liệu đi ra từ CPU ,DT/R = 1 dữ liệu đi vào CPU - DT/R:tín hiệu ra
ba trạng thái chỉ chiều chuyển động của dữ liệu,DT/R = 0 dữ liệu đi ra từCPU ,DT/R = 1 dữ liệu đi vào CPU
- DEN: tín hiệu ra ba trạng thái để mở các bộ đếm dữ liệu,khi DEN = 0
- có dữ liệu
- HOLD: tín hiệu vào yêu cầu treo (thả nổi) CPU
- HLDA: báo ra BVXL chấp nhận thả nổi
- SSO: tín hiệu trạng thái, hoạt động theo bảng sau :
Trang 6IO/M DT/R SSO Chu kỳ
Trang 7- LOCK : tín hiệu ra cấm các mạch điều khiển khác sử dụng bus.
- QS1 ,QS0 (Queu status) : cho biết trạng thái của cờ đợi lệnh
1 1 Các byte tiếp theo
2.1.2 Các thanh ghi chức năng
Bé vi xử lý 8088 có 14 thanh ghi chức năng chia thành cỏc nhúm thanhghi khác nhau có nhiệm vụ và chức năng riêng biệt, gồm các thanh ghi sauđây:
- Thanh ghi cờ FR (flag register ) dùng để ghi trạng thái kết quả cỏc phép xử
lý trong đơn vị số học / logic ALU
Trang 8TF ( Single-step Flag, bit 8) : Cờ bẫy : Được sử dụng cho từng bướcchương trình.
- Cờ phép toán :
CF ( Carry flag, bit 0 ) : Cờ nhí
PF ( Parity Flag, bit 2 ) : Cờ chẵn lẻ : PF=1 nếu số 1 trong kết quả chẵn
AF ( Auxilary carry Flag, bit 4) : Cờ nhớ phụ : dùng cho các phép tínhvới
mã BCD
ZF ( Zero Flag, bit 6) : Cờ Zero : ZF = 1 khi kết quả = 0
SF ( Sign Flag, bit = 7 ) : Cờ dấu : SF = 1 khi kết quả âm
OF ( Overflow Flag, bit B) : Cờ tràn : OF = 1 khi kết quả vượt ra ngoàigiới hạn, xảy ra khi có phép tính có dấu
- Thanh ghi đa năng : có nhiệm vụ ghi tham sè cho mã lệnh, đây cũng là nơilệnh trả kết quả về sau khi được thực hiện, gồm 4 thanh ghi 16 bit
AX (Accumulator) : Thanh ghi tích luỹ : được chia làm hai phần : 1 bytecao AH và một byte thấp AL AX (Accumulator) : Thanh ghi tích luỹ :được chia làm hai phần : 1 byte cao AH và một byte thấp AL Đây là thanhghi quan trọng nhất và chuyên được dùng để chứa các kết quả thao tác lệnh
BX ( Base) : Thanh ghi cơ sở : còng được chia thành BH, BL đõy làthanh ghi thường dùng cho địa chỉ cơ sở
CX ( Count ): Thanh ghi đếm : được chia thành CH, CL Thanh ghi CXdùng để chứa số đếm trong lệnh LOOP Thanh ghi thấp CL được dùng để nhớ
số lần quay hoặc dịch của các lệnh quay và dịch
DX ( Data) : Thanh ghi dữ liệu : thanh ghi này tham gia các phép nhânchia 16 bit Khi truy nhập các cổng cứng ngoại vi ( I/ O port) dài hơn 8 bit,DX được dùng để chứa địa chỉ 16 bit của cổng cứng
- Thanh ghi con trá : Gồm 3 thanh ghi 16 bit
IP ( Instruction Pointer) : Con trỏ lệnh :Dùng để chứa offset của lệnhtiếp theo ( CS : IP )
SP (Stack Pointer) : Con trỏ ngăn xếp : Dùng để chứa offset của đỉnhngăn xếp (SS:SP)
BS ( Base Pointer) : Con trỏ cơ sở :Dùng để trỏ đến 1 ngăn nhớ trongngăn xếp (SS:BP)
Trang 9- Thanh ghi chỉ số: hai thanh ghi 16 bit
SI ( Source index ) : là chỉ số nguồn trỏ vào dữ liệu mà địa chỉ đoạnđược ghi trong DS ( data segment ) (DS : SI )
DI ( Destination index) : là chỉ số đích cũng chỏ về đoạn dữ liệu ghitrong DS ( DS : DI )
- Thanh ghi đoạn: Dùng để ghi địa chỉ một đoạn bộ nhớ Địa chỉ của đoạnđược ghi trong mét thanh ghi đoạn 16 bit Gồm 4 thanh ghi
CS ( Code segment ) : Thanh ghi đoạn mã điều kiện là thanh ghi 16 bit.Thang ghi này phối hợp với con trỏ lệnh IP để ghi địa chỉ mã lệnh trong bộnhí Địa chỉ đầy đủ CS : IP
SS ( Stack segment ) : Thanh ghi đoạn ngăn xếp 16 bit Địa chỉ đỉnhngăn xếp được biểu diễn cùng với con trỏ ngăn xếp SP là SS : SP
DS ( Data segment ) : Thanh ghi đoạn dữ liệu 16 bit Thanh ghi nàyphối hợp với hai thanh ghi chỉ số SI và DI để đánh địa chỉ cho dữ liệu Địa chỉđầy đủ cgo dữ liệu cần đọc về là DS : SI, cho dữ liệu cần ghi ra là DS : DI
ES ( Extra segment ) : Thanh ghi đoạn thờm cú chiều dài 16 bit Hayđược dùng để đánh địa chỉ một chuỗi ( string ) ES : DI là địa chỉ chuỗi cầnviết đến ( chuỗi đích ) và DS : SI là địa chỉ chuỗi đọc về ( chuỗi nguồn )
2.1.3 Các ngắt
Giống nh các vi xử lý khác 8088 có một chức năng mạnh và mềm dẻotrong quá trình chạy chương trình, đó là khả năng thực hiện ngắt (interrupt).Ngắt là thao tác dừng chương trình chính đang chạy để thực hiện một chươngtrình khác gọi là chương trình con xử lý ngắt Các ngắt không chỉ có ý nghĩaquan trọng đối với phần mềm mà cả đối với phần cứng
- Ngắt Mềm : Được thực hiện bằng một lời gọi trong chương trình ngônngữ máy, đó là lệnh INT với số ngắt kèm theo Chẳng hạn khi chương trìnhgặp lời gọi INT 5, vi xử lý sẽ nhẩy vào thực hiện một chương trình con thựchiện ngắt để in trang màn hình Các ngắt mềm cho phép gọi các chương trìnhphụ của hệ điều hành Ngắt mềm cũn cú thể được gọi từ ngôn ngữ bậc cao lúc
đó nó sẽ được dich ra thành hợp ngữ
- Ngắt cứng : Được thực hiện khi cỏc cỏc chip điện tử trong máy tính hoặc ngoại vi phát ra tín hiệu yêu cầu ngắt và truyền nó tới chõn INTR hoặcNMI của 8088 Chẳng hạn nhấn hay nhả phím sẽ gây ra ngắt cứng số 9,
Trang 10chương trình xử lý ngắt sẽ phản ứng bằng cách đưa mó phớm đú vào vùngđệm của bàn phím Ngắt cứng còn chia làm hai loại : Ngắt có thể bị cheđược : Khi cú tớn hiệu hệ thống có thể hoặc khụng đỏp ứng yêu cầu ngắt.Ngắt không che được : Buộc hệ thống phải thực hịờn lệnh khi cú yờu cầungắt.
2.2 Chế độ hoạt động của 8088
2.2.1 Chế độ tối thiểu : ( chân MN / MX nối với nguồn + 5V)
Hệ thống 8088 hoạt động với chế độ MIN
Trong chế độ này bộ vi xử lý 8088 trực tiếp gửi tín hiệu điều khiển cho
hệ thống Đây là chế độ hoạt động đơn giản nhất cua 8088, tín hiệu điều khiểnđược thực hiện ngay trong bé vi xử lý Cấu hình này cho phép các thiết bịngoại vi của 8085A hoạt động một cách tương thích với 8088 mà không cầncác mạch phụ bên ngoài
2.2.2 Chế độ MAX ( chân MN/ MX nối thẳng với đất ) Khác biệt
Trang 11Khác biệt so với chế độ MIN, trong chế độ 8088 này cần các mạchphụ bên ngoài để chuyển đổi tín hiệu điều khiển Các mạch phụ này chuyểnđổi tín hiệu các bit trạng thái S0, S1, S2 thành tín hiệu trao đổi I/O và bộ nhớ
để điều khiển sự truyền dữ liệu Trong chế độ này 8088 cần cú thờm bộ điềukhiển bus 8288 bởi vì không có đủ cỏc chõn tớn hiệu đầu ra do các chức năngmới đã thay thế các chức năng của một số chân Chế độ MAX được sử dụngkhi trong hệ thống có chứa bộ đồng xử lý nh bé đồng xử lý toán học 8087
Hệ thống 8088 hoạt động với chế độ MAX
Trang 12trị để thực hiện các hoạt động logic hoặc các lệnh tiếp theo dưa trên kết quảnhận được và các lệnh thực hiện việc giao tiếp giữa BVXL với các thiết bị,phần tử logic bên ngoài Các lệnh này và dữ liệu liên quan đến chúng sẽ đượcdịch ra dạng nhị phân gọi là ngôn ngữ máy, vì vậy chỳng cú thể lưu trữ trong
bộ nhớ và di chuyển qua các mạch địờn tử để hoàn thành từng công việc cụthể
Nhóm lệnh toán học:
AAA - cộng có chỉnh ASCII AAD - chia có chỉnh ASCII
AAM - nhõn cú chỉnh ASCII AAS - trừ có chỉnh ASCII
ADC - cộng cú nhớ ADD - Cộng
CWD - chuyển từ Word sang Word kép AND - phép toán và (logic)
DAA - chỉnh thành thập phân cho phép cộng DEC - giảm 1 đơn vị
DAS - chỉnh thập phân cho phép trừ INC - tăng
DIV - chia IDIV - chia nguyên
MUL - nhân NEG - đổi dấu
IMUL - nhõn nguyờn OR - hoặc
SUB - trừ
NOT - phủ định
ROL - quay trai
ROR - quay phải
CMPSB -so sánh xâu byte
CMPSW - so sỏnh xõu trong Word
JAE, JLE - nhẩy nếu lớn hơn hoặc bằng JA,JG - nhảy nếu lớn hơn
JBE,JLE - nhảy nếu nhỏ hơn hoặc bằng JB,JL- nhảy nếu nhỏ hơn
JPE -nhảy nếu lỗi chẵn lẻ theo chẵn JE - nhảy nếu bằng
JPO - nhảy nếu lỗi chẵn lẻ theo lẻ JMP - nhảy không điều kiện
JO, JNO - nhảy nếu có tràn, không tràn JC - nhảy nếu cờ nhớ được đặt
Trang 13JZ, JNP - nhảy nếu có, không có lỗi chẵn lẻ
- Nhóm lệnh truyền số liệu:
MOV -chuyển
MOVS - chuyển byte hay Word của xâu
MOVSB - chuyển byte của xâu
MOVSW - chuyển Word của xâu
IN - Đọc vào một byte hoặc Word
OUT - Đưa ra mét byte hoặc Word
- Nhóm lệnh lặp:
LOOP - lặp LOOPE lặp trong khi bằng
LOOPNE - lặp trong khi không bằng LOOPZ - lặp trong khi bằng 0
2.3.2 Cấu trỳc mó lệnh :
Qui trình tiến hành một lệnh trong VXL được tiến hành qua ba giaiđoạn : Lấy lệnh ( fetching), giải mã lệnh (decoding), tiến hành lệnh( execution) Những VXL bit cổ điển tớờn hành 3 giai đoạn trên một cáchtuần tự Từ các VXL 16 bit trở đi, VXL dùng pipeline ( xen kẽ dòng lệnh ) đểtiết kiệm thời gian Mã lệnh dùng cho VXL được viết dưới dạng nhị phân Đểcon người có thể lập trình và hiểu được VXL người ta dùng hợp ngữ( assembly language ) để mô tả các lệnh máy bằng tổ hợp ký tự gợi nhí
Byte 1 Byte 2 Byte 3 Byte 4
Một lệnh nhị phõn có thể dài từ 1 - 6 byte Cấu tróc chung một
mã lệnh bao gồm :
- Prefix đi trước mã lệnh
- Mã đoạn ( operation code ) phân biệt đó là lệnh gì
- Toán hạng ( operand) cho biết cái gì được xử lý
- Địa chỉ trực tiếp ( 2 byte ) ( ví dụ cho các lệnh nhảy ) - Địa chỉ trực tiếp( 2 byte ) ( ví dụ cho các lệnh nhảy )