_ữ east /
cee SRO
_ ĐẠI HỌC] MỞ: BÁN CƠNG TP HỒ CHÍ MINH
Trang 3MUC LUC Chuong 1 TỔ CHỨC CỦA IBM PC 1 BỘ VI XỦ LŸ ¬ Il BONHG Q S S Q HQ SE es
IH CÁC THIẾT BỊ VÀO RA ee ee
CẦU HỒI ÔN TẬP co Q ee es
Chương 2 TỔ CHÚC HOẠT ĐỘNG CỦA CPU 16 BIT 8086/8088/80286
1 CÁC DẠNG DỮ LIỆU CỦA CPU
I GIAO TIẾP GIỮA CPU VÀ BỘ NHỚ
II CAC THANH GHI CUA CPU 2220-0 0056
IV co chu TỔ CHỨC VÀ HOẠT ĐỘNG CỦA INTERRUPT
V CƠ CẤU ĐỊNH ĐỊA CHỈ CUA CPU 80286
VI PHƯƠNG PHÁP MA HÓA CÁC LỆNH CỦA CPU 80286 CẦU HỔI ỒN TẬP - Q Q Q Q Q ee ee
Chương 3
CHƯƠNG TRÌNH GỠ RỐI DEBUG
4 ^ ^ +
1 GIGI THIRU PHAN MEM DEBUG
Trang 4Chuong 4 4 a 2 = GIOI THIEU TONG QUAN VE HOP NGU I GIỚI THIỆU HỢP NGỮ 75
II CAC PHAN CO BAN CUA HOP NG Lee 76 II CÁC PHẾP ĐỊNH ĐỊA CHỈ TRONG ASSEMBLER 101
VI TẬP TIN COM VÀ EXE kg nh va 105 V — MACRO ASSEMBLER 5l1.Ô 109 VI CÁC BƯỚC CƠ BẢN KHI LẬP TRÌNH TRONG GIỜ THỰC TẬP ee eee 113 CAU HOI ON TAP Lee ee ee ee eee ees 114 BÀI TẬP THỰC HÀNH v 117 Chương 5 TẬP LỆNH HỢP NGỮ
A Nhóm lênh chuyễn đữ liêu: 124 1 NHÓM LỆNH CHUYỂN DỮ LIỆU ĐA DỤNG
(GENERAL PURPOSE INSTUCTION) 124 , A 2 II NHOM LENH CHUYEN DIA CHE 137 + # a a ` a III NHOM CAC LENH CHUYEN CO HIfU 138 a 2 ~ A 2
1V NHOM LỆNH CHUYỂN DŨ LIỆU QUA CỔNG 138 BÀI TẬP THỰC TẬP Lee eae 141 B Nhóm lệnh chuyển điểu khiển 143 1 LENH NHAY KHONG DIEU KIEN JMP (JUMP) 143
II LỆNH NHẢY CÔ ĐIỂU KIỆN 146
Trang 5a C Nhóm lênh tính toán số học 170 1 NHÓM LỆNH XỦ LÝ PHÉP CỘNG., 170 II NHÓM LỆNH XỦ LÝ PHẾP TRÙỪ 179 II NHÓM LỆNH XỦ LÝ PHẾP NHÂN 187 IV NHÓM LỆNH XỦ LÝ PHÉP CHIA 194 + r a 2 ` V NHÓM CÁC LỆNH DỊCH CHUYỂN VA QUAY (SHIFT "0o v2 aaaaA 201 VI NHÓM CÁC LỆNH LOGIC 207 BÀI TẬP THỰC HÀNH Lee ee 211 DN các 8 lý chuổi 219 BÀI TẬP THỰC HÀNH 230 Chương 6 a ` > KIỂU CẤU TRÚC VÀ KIỂU BẢN GHI (structure and record) lL KIỂU CẤU TRÚC c cu 235 a ” Il KIỂU BẢN GHI 0 200 aee 238 BAI TAP THUC TAP 2.0.0.0 eee een eae 243 Chuong 7 MACRO I GI6L THIBU 0 oe c _245 II CAC DIRECTIVE DUNG TRONG MACRO 248
Trang 6BAI QC KOLA CONG TREC Khoa Tia Hoe
CHUONG 1
4 “,
TỔ CHỨC CA IBM PC
Tất cả các máy vi tính họ IBM déu gém bộ vi xủ lý (microprocessor), bộ nhớ (memory) và các thiết bị vào ra (Input/Output device) Chương ¡ sẽ gii thiệu 3 thành phần này I BỘ VI XỬ LÝ
1 Giới thiệu tống quát:
Đây là bộ não của máy tính, nó năm trên bản mạch hệ thống (main board) Bộ vi xử lý có khả năng thực hiện các lệnh viết bằng ngôn ngữ máy
Intel là hãng sản xuất bộ vi xủ lý đầu tiên và là hãng có bộ vi xử lý khá phong phú Trải qua nhiều thế hệ máy tính, các bộ vi xử lý của hãng này được phát triển theo 3
giai đoạn khác nhau
+ BO vi xu lý 8 bịt (CPU 8080, 8085 ) Đặc điểm chính:
- Có khả năng xủ lý 8 bit dữ liệu cùng một lúc - Có khả năng địa chỉ hóa được 64KB bộ nhớ
- Không có khả năng đa xử lý và đa chương - Tốc độ xử lý chậm
+ Bộ vi xử it (CPU 8086, 8088 )
Đặc điểm chính:
- 0 kha năng xử lý đữ liệu 8 bít hay 16 bf cùng một lúc
- Có khả năng địa chỉ hóa được 1MB bộ nhớ và 64KB địa chỉ cổng
Trang 7chvong I; Tổ cade PC Gido Trink Hop Nev Có khả năng da xủ lý, ví dụ như máy tính có khả
năng vừa in, vừa thực hiện chương trìh cùng một lúc
Nói chung, CPU 8086 và CPU 8088 có cùng một chức năng, tập lệnh của chúng giống nhau 8088 chỉ khác 8086 ở một điểm: 8088 truyền dữ liệu thỏng qua bus đữ liệu 8 bịt, còn 8086 truyền thông qua bus dữ liệu 16 bit CPU 80286 (16 bit cải tiến dùng trong máy AT) Đặc điểm chính: ` Tốc độ 8-20 MH¿z Khả năng xử lý đũ liệu 8 bit hay !6 bit cùng một lúc ,
Có khả năng địa chỉ hóa 16MB bệ nhớ vật lý (bộ nhớ thật) Có khả năng làm việc ở 2 chế độ: Chế độ thực (real mode) và chế độ bảo vệ (protected mode)
* Ở chế độ thực: 80286 làm việc giống như 8086, tập lệnh của nó giống như 8086 nhưng nhiều hơn một sỐ lệnh, chương trình chạy nhanh hơn khoảng 2-5 lẩn * Ở chế đô bảo về: Khi chuyển sang chế độ bảo vệ, 80286 có thể làm mọi công việc như ở chế độ thực,
nhưng cho phép bảo vệ dữ liệu và tổ chúc bộ nhớ
theo mảng Cơ chế tổ chức bộ nhớ theo mảng cho phép quản lý bộ nhớ cục lớn đến 16MB bộ nhớ vật lý
va 1 giga byte bô nhớ ảo
(1 giga byte = 1024MB = 27° byte)
B6 nhé do cho phép máy tính như có nhiều bộ nhớ
Trang 8DAL ROC Part CONG TPRCW khoa Tin foe
Có khả năng đa chương túc là thực hiện đổng thời nhiều chương trình cùng một lúc
+ BỘ vi xử lý 32 bit (80386) Đặc điểm chính:
Tốc độ 25-40 MH¿z
Có thể làm việc với các dữ liệu 8, 16, 32 bit
Có thể địa chỉ hóa 4 giga byte bộ nhớ vật lý và 64 tera byte bộ nhớ ảo
(1 tera byte = 1024 giga byte = 2*° byte)
Rất tối ưu đối với các hệ điểu hành đa nhiệm (multitasking system) nhu windows NT, 0S/2
Có khả năng làm việc cả 3 chế độ: chế độ thực, chế
độ bảo vệ và chế độ ảo
Ưu điểm lớn của 80386 là khả năng làm việc ở chế độ ảo VM86 (virtual 8086 mode) chế độ VM86 tổ chức bộ nhớ theo trang, cơ chế này rất thuận lợi đối với
người lập trình hệ thống trong việc quản lý bộ nhớ vật lý và sử dụng bộ nhớ ảo CPU 80486 (386 cải tiến) Đặc điểm chính: Cơ chế hoạt động giống như 80386 nhưng tốc độ xủ lý nhanh hơn: 25-66MHz
Cho phép cơ chế bô nhớ cache trong CPU, Có bộ đồng vị xủ lý toán học bên trong CPU
Cho phép cơ chế đa vi xử lý (Multip Processor) Đây là bộ vị xử lý tối ưu nhất hiện nay đối với các hệ điều hành đa nhiệm
Trang 9Clwong [ : 10 chide PC Gido Trink Hợp Ngi 2 Giới thiêu về Bus:
Máy PC lên kết toàn bộ mạch điêu khiển bên trong thông qua các con đường chung nằm trên bản mạch hệ thống goi la bus Khi chuyển đữ liệu từ, phẩn này sang phần khác thì chúng truyền theo các đường chung này
Có 3 loại bus:
* Bus dia chị là tập hợp các đường dẫn thông tin về
dja chi
Máy XT dùng 20 đường tín hiệu để truyền địa chỉ của các 6 nhớ hay các cổng vào ra (I/O port), do đó
máy XT có khả năng địa chỉ hóa 2?9z1MB õ nhớ Máy AT 286 dùng 24 đường tín hiệu do đó nó cho phép đa chỉ hóa 2'=16MB 6 nhớ
* Bụs dữ liều: là tập hợp các đường dẫn thông tin về đữ liệu
Bus di liệu làm việc trong mối lién kết với bus
địa chỉ để truyền đữ liệu đến 1 địa chỉ xác định trong bộ nhớ
* Bus điểu khiển: là tập hợp các đường dấn tín hiệu điều khiển để đối thoại giữa CPU với bên ngoài
Trong CPU 3086, 16 đường địa chỉ đầu được dùng để truyền di liệu vào/ra CPU, chúng tạo thành BUS dữ liệu
16 bit CPU 8088 chỉ đùng 8 đường địa chỉ để truyền đữ Hiệu CPU 80286 dùng 16 đường khác để để truyền đữ liệu
a CPU 8086, 8088 tổ chức thành 2 đơn vị làm việc song song
- Đơn vị ghép nối BUS BIU (Bus Interface Unit)
- Đơn vị thực hiện EU (Execution Unit)
Trang 10OAL HOC WÈBÍN (ÔNG TPRN Khoa Tin ioe
* Dơn vị BIU: đây ià phẩn duy nhất của CPU được phép làm việc trục tiếp với bus; khi đó thẻng qua bus, CPU sẽ giao tiếp với bộ nhớ trong để đọc các
mã lệnh từ bộ nhớ vào CPU Khi được đọc vào, thì
các mã lệnh sẽ được lưu trũ trong hàng đợi lệnh
- 8086 dùng hàng đợi lệnh có chiều đài 6 byte
~- 8088 dùng hang đợi lệnh có chiều dài 4 byte
* Đơn vi EU: Có nhiệm vụ thục hiện các mã lệnh của CPU nhận được từ hàng đợi lệnh của BIU Trong quá trình xứ lý các lệnh, nếu cẩn đọc thêm các dữ liệu
từ bộ nhớ vào hay cẩn ghi dữ liệu ra ngoài bộ nhớ,
lúc đó EU sẽ thông qua trung gian là BI để giao tiếp với bộ nhớ trong
Cơ chế hàng đợi lệnh giúp cho bộ vi xử lý tiết kiệm thời gian, thực chất là quá trình lấy lệnh tiếp theo và quá trình thực hiện lệnh hiện tại được thực hiện
song song
Tóm lại CPU 8086, 8088 hoạt động nhu sau :
~- Thực hiện lệnh trong hàng đợi lệnh, đồng thời lấy lệnh tiếp theo vào hang doi
- Đọc hay ghi dữ liệu (nếu lệnh có yêu cẩu) So sánh sự hoạt động của CPU 8 bit va 16 bit
Sơ đồ hoạt động của CPU_8 bịt (8080)
CPU |Thực hiện| đọc hay lấy |Thục hiện| đọc hay
lệnh ¡ |ghi dữ Hệu|lệnh 2| lệnh 2` |ghi dữ liệu
nếu lệnh 1 nếu lệnh 2
, yêu cầu yêu cẩu
BUS bận bân ban
Trang 11Chyong |: 78 chte PC ido Trink Hop Negi
Sơ đổ hoạt đông của CPU 16 bit (8086, 8088)
CPU Thuc hién doc hay thuc hién doc hay
lệnh ! ghi dữ iiệu lệnh 2 ghi dữ liệu
l nếu lệnh 1 nếu lệnh 2
yêu cầu yêu cẩu
BIU lấy lệnh 2 đọc hay lấy lệnh 3 đọc hay
vào hàng đợi |ghi dữ liệu |vào hàng đợi | ghi dữ liệu
BUS ban ban ban ban
Nhìn vào 2 sơ đổ trên rõ ràng CPU 16 bit hoạt động nhanh
hơn CPU 8 bit do tính hoạt động song song
b CPU 80286 tổ chức thành 4 đơn vị làm việc song sơng: - Đơn vi BUS BU (Bus Unit)
Don vi lénh IU (Interface Unit)
Don vi thuc hién EU (Execution Unit) Don vi dia chi AU (Address Unit)
Don vi BU: BU làm việc trực tiếp với BUS, sinh ra các tín hiệu địa chỉ, tín hiệu đữ liệu và tín hiệu điều khiển để giao tiếp với bộ nhớ trong hay các cổng vào ra Đơn vị này cho phép quá trình nhận lệnh song song với các quá trình khác nhờ có vùng đệm 6 byte
Đơn vị IU: IU nhận lệnh tự vùng đệm, giải mã rồi
đưa vào hàng đợi lệnh Hàng đợi lệnh chứa được 3 lệnh
Đơn vị EU: EU thục hiện lệnh đã được giải mã
Trang 12DAT HOC HO-BAN CONG TPRX EU IU BU II loa Tin lọc liên hệ với bộ nhớ trong và các cổng vào ra thông qua BDŨ
* Pon vi AU: AU điểu khiển công việc quản lý bộ nhớ, bảo vệ bộ nhớ và chuyển địa chỉ logic thành
địa chỉ vật lý cho đơn vị BU Thực hiện Thực hiện Thực hiện Thực hiện lệnh 1 lệnh 2 lệnh 3 lệnh 4
giải mã lệnh | giải mã lệnh giải mã lệnh |giải mã lệnh
2 trong 3 trong 4 trong 5 trong vùng đệm vùng đệm |vùng đệm và| vùng đệm
và đưa vào | và đưa vào đưa vào và đưa vào
hàng đợi hàng đợi hàng đợi hàng đợi
đọc lệnh 3 đọc lệnh 4 đọc lệnh 5 đọc lệnh 6
vào vùng vào vùng vào vùng vào vùng
đệm đệm đệm đệm
Cách làm việc song song trong CPU 286 giữa các đơn vị BU, IU, EU BỘ NHỚ 1 BB nhớ trong: Bộ nhớ trong nằm trên bản mạch hệ thống, nó dùng để chứa chương trình và đữ liệu, đơn vi chuẩn của bộ nhớ là
byte (1 byte = 8 bit) đây là vùng mà máy tính có thể truy xuất nhanh nhất
Bộ nhớ trong gổm 2 phần: ROM và RAM : -
Trang 13(hương ! : Tổ chte PC Giáo Trình fúp age xuất máy tính, chúng ta sẽ bàn kỹ về các chương trình trong ROM ở Giáo Trình Lập Trình Hệ Thống - RAM là bộ nhớ dùng để lưu trữ thông tin một cách
tạm thời, khi tắt máy tính thì mọi thông tin trong RAM sẽ bị xóa hết
Bộ nhớ trong của máy tính hình thành từ tập hợp các ô nhớ (cell) liên tục, mỗi 6 nhớ chứa 1 byte thông tin, ta có thể truy xuất đến mỗi ô nhớ bằng địa chỉ riêng của chúng Địa chỉ của ö nhớ được đánh thứ tự tăng dần bắt
đầu từ 0 cho ô nhớ đầu tiên
Kích thước bộ nhớ trong thường thay đổi theo từng loại
máy, người lập trình cẩn phải phân biệt khái niệm CPU có khả năng địa chỉ hóa tối đa đến đâu và bộ nhớ hiện thời của máy tính có bao nhiêu ô nhớ vật lý
Bộ nhớ trong của các máy thế hệ cũ như máy 8 bit chỉ có tối đa 64KB Máy XT dùng 20 đường địa chỉ, do đó có khả năng địa chỉ hóa 1MB = 1024 KB ô nhớ đánh số từ 00000 đến FFFFF theo hệ 16, bộ nhớ 1024K được chia thành 16 khối 64K + ˆ af a 4
SO _DO PHAN CHIA {6 KHOI 8O NHO TRONG
Trang 14BAL BOC WOBAN CONG TPAC hos Tin dpe B0000-BFFFF: Bộ nhớ màn hình
C0000-CFFFF: Vùng ROM mở rộng Đ0000-DFFFF: Ving ROM cartridge E0000-EFFFF: Ving ROM cartridge
FOOOO-FFFFF: Vùng ROM thường truc, ROM BIOS, ROM BASIC - Mười khối đầu (0-9), tổng cộng 640K được danh cho RAM - Khối B là vùng nhớ dành cho màn hình, nó được chia thành hai nửa 32KB, có địa chỉ bắt đẩu B0000 và B8000, khối B0000 dùng cho các màn hình đơn sắc và B8000 ding cho các màn hình mau
- Khối A là vùng bộ nhớ màn hình mở rộng, nó mở rộng vùng nhớ màn hình cho các màn hình độ phân giải cao
như EGA va VGA
~ Khối F là vùng ROM thường trực chứa các chương trình và đữ liệu dùng để khởi động, điều khiển các hoạt động của hệ thống máy tính, giao tiếp với các thiết bị ngoại vi nối với máy tính Lợi ích của các chương trình ROM là chúng nằm trục tiếp trong bộ nhớ máy tính do đó không cẩn nạp chúng vào bộ nhớ từ dĩa như phải nạp
hệ điều hành Vì các chương trình ROM nằm thường trực trong máy nên chúng được dùng làm cơ sở để xây dựng các chương trình khác (kể cả hệ điều hành)
- Khối C là vùng ROM mở rộng gớm các chương trình thêm vào cho ROM khi một thiết bị mới lạ được cài thêm vào
máy tính 2 Bư nhớ ngồi:
Bộ nhớ trong có thể tray xuất trong thời gian rất
nhanh, nhưng giá thành đất Để lưu giữ thông tin lau dai,
ta dùng bộ nhớ ngoài ,
Trang 15(lương ¡ : Tổ chức PC Giáo Trink Hop kev
Dia mém (floppy disk) có dung lượng chứa nhở gồm nhiều loại 360KB, 720KB, 1.2MB, 1.4MB có thể vừa đọc và viết, giá thành rẻ nhưng tốc độ truy xuất chậm
* Dia cứng (Harddisk): mỗi máy chỉ có tối đa là 2 6 dia cứng Đặc điểm là dung lượng lưu trữ cao, mỗi đĩa cúng chứa khoảng 20-200MB Có thể vừa đọc, vừa ghi, tốc độ truy xuất mau hơn đĩa mềm rất nhiều
* Dịa quang (Laser disk): đây là loại dĩa có dung lượng chứa rất cao khoảng 500MB, có thể đọc nhưng chỉ có thể viết tối đa một lần
* Băng từ (Tape): ít người sử dụng, dùng để backup dữ
liệu và chương trình
III GÁC THIẾT BI VÀO RA
Các linh kiện hỗ trợ cho CPU:
Bộ vi xử lý khơng thể nào kiểm sốt được toàn bộ máy tính do đó nó cẩn chuyển một số công việc cẩn thực hiện cho những linh kiện khác, lúc đó CPU có thể tập trung vào những công việc chính của mình Các linh kiện hỗ trợ được giao trách nhiệm điều khiển các thiết bị vào ra được ghép vào máy tính như màn hình và ổ đĩa, điều khiển các luổng thông tin ở mạch bên trong, diéu khiển ngắt và tạo nhịp
Nhiều linh kiện hố trợ trong PC đều có thể lập trình được bởi người sử dụng, nghĩa là ta có thể thay đổi các tính chất của linh kiện này bằng chương trình Dưới đây là một số linh xiện hố trợ quan trọng có thể = lap trinh được
bởi người sử dung: `
Trang 16BAI HOC HO“BAN CONG TPECW Shox Tin foc * B6 di@u_khién DMA 8237A (Direct Memory Acess)
Bộ điều khiển DMA cho phép chuyển số liệu với tốc độ cao giữa các thiết bị vào ra và bộ nhớ mà không cần sự can thiệp của bộ vi xử lý
Mục đích chính của bộ điều khiển DMA là cho phép ghi
dữ liệu từ bộ nhớ lên đĩa hoặc đọc dữ liệu từ dĩa vào bộ
nhớ mà không cẩn thông qua bộ vi xủ lý Lúc đó CPU được giải phóng khi truy xuất dĩa Vì việc truy xuất đữ liệu trên dĩa là tương đối chậm, do đó DMA làm cho CPU hoạt động nhanh hơn
* Bộ ghép nối thiết bị ngoai vi PPI 8255: (Programmable Peripheral Interface)
8255 dùng để nối kết giữa CPU và một số thiết bị ngoại vi của máy tính như bàn phím hoặc loa Thông tin gởi đến
hoặc đi từ các thiết bị như loa hoặc casette theo cổng vào
ra đều qua linh kiện này * Bô điều khiển CRT 6845:
Là linh kiện chính trên một số bản mạch điểu khiển màn hình Nó có 19 thanh ghi nội dùng để xác định và điều khiển sự quét, chế độ và hoạt động của màn hình
* Bộ điều khiển đĩa uPD765:
MPD765 cũng được gắn trên bản mạch bổ sung, dùng để kiểm soát và điểu khiển hoạt động của ổ đĩa, di chuyển đầu đọc ổ dĩa, đọc đữ liệu từ dĩa và ghi dữ liệu lên đĩa * Bô điểu khiển ngắt PIC 8259: (Programmable Interrupt Controller)
8259 quan lý hoạt động ngắt cứng (hardware interrupt)
Ngắt cứng là tín hiệu được gởi đến bộ vi xử lý từ một thiết
bị vào ra để yêu cầu thực hiện một công việc nào đó, (ví
dụ khi ấn phín thì bàn phím sẽ tạo ra một ngắt để CPU xử lý)
Trang 17Cheong I: 10 chde PC Gido Trinh Hop Nee Nếu cùng một lúc có nhiều ngắt cứng được gởi đến, 8259 sẽ giữ và xem xét các tín hiệu đó, xác định tín hiệu nào có độ ưu tiên cao nhất, từ đó nó phát lệnh ngắt ứng với tín hiệu đó đến CPU CPU sẽ thực hiện một đoạn chương trình tương ứng để đáp ứng yêu cầu của tín hiệu đó
8259 có khả năng xủ lý 8 yêu cầu ngắt đồng thời
Có thể lập trình trên 8259 để sắp xếp lại các mic uu tiên của tín hiệu ngắt ở thời điểm nào đó, nghĩa là có thể thay đổi trình tu xu lý ngất
* Bộ tạo nhịp 8284A:
Nếu CPU là bộ rão của máy tính thì bộ tạo nhịp được
xem như là trái tim của máy tính, nó cung cấp các tín hiệu
nhịp, tín hiệu đồng bộ cẩn cho việc điều khiển bộ vi xử lý
và các thiết bị ngoại vi Các tín hiệu này điểu khiển khoảng thời gian của các phép tính trong toàn bộ hệ thống
máy tinh Tan sé co sd cia n6 1a 14,8128 MHz
* Bộ thời gian 8253:
Bộ thờ gian 8253 là bộ đếm nhiều công dụng, 8253 thường dùng để tạo âm thanh ra ba hoặc điều khiển giờ hệ thống
* Bô đổng xủ lí to: :
(Math coprocessors 8087/80287/80387)
Các CPU 8088, 80286, 80386 không có khả năng thực hiện trực tiếp các phép toán đối với số thực Có 1 chỗ trống trên bản mạch hệ thống của PC để gắn thêm bộ vi xử lí toán học PC/XT dùng 8087, AT 80286 dùng 80287, AT 80386 dùng 80387
Tuy CPU có thể thực hiện các phép toán đối với số thực
một cách gián tiếp bằng các chương trình phần- mềm, nhưng
với bộ vị xử lí toán học, nó thực hiện nhanh hơn 100 lần Bộ vi xủ lý toán học có thể thực hiện trực tiếp các phép
toán số thực cơ bản như phép cộng, trừ, nhân, chia, lấy căn số cũng như tính các hàm lugng gifc sin, cos
Trang 18BAL HOC WO-BAN CONG TPC Khoa Tin foe 2 Các thiết bị vào ra chuẩn:
a Màn hình:
IBM-PC có rất nhiều loại màn hình khác nhau Ta có thể chia thành 2 loại chính: màn hình đơn sắc - (Monochrome) và màn hình màu (color)
Để hiển thị kết quả ra màn hình ta cần gắn một bệ phối ghép hiển thị (Card màn hình) cắm vào 1 trong các siot của máy tính trên bản mạch cơ sở Bộ phối ghép nối máy tính với màn hình qua bộ điểu khiển CRT Bộ phối ghép còn có bộ tạo ký tự ROM và bộ nhớ RAM để lưu giữ các thông tin hiển thị
Bộ phối ghép màn hình có các cổng vào ra có thể lập trình được bởi người sử dụng
Màn hình biểu thị được 2 chế độ: chế độ văn bản và
chế độ đồ thị
~ Chế độ văn bản chỉ hiển thị được tối đa 256 ký tự khác nhau theo một kích thước cho trước (tối đa 512 ký tự đối với card EGA hay VGA).-
- Chế độ đỏ thị có thể hiển thị các ký tự với các kích thước khác nhau và có thể vẽ được các hỉnh về
phúc tạp
Các loại Card màn hình thông dụng hiện nay:
- MDA (Monochrome Display Adapter): Bộ phối ghép màn hình đơn sắc Dược hãng IBM giới thiệu vào năm 1981 cho các loại máy IBM PC classic Nó chỉ có thể làm việc ở chế độ văn bản 25 dòng 80 cột, chỉ thể hiện được 1 màu, do đó đối với bộ phối ghép đơn sắc thì ta mất khả năng biểu điễn đổ thị và màu Bộ nhớ RAM màn hình chỉ có 4KB
Để giải quyết vấn để đồ thị hãng fiercules đã đưa ra
Trang 19(hương ¡ ; Tổ chúc PC Gido Trink Hop Net - HGC (Hercules Graphics Card): bé ghép néi dé hoa đơn sắc HGC đáp ứng khả năng đổ thị không màu và hiển thị văn bản với độ nét cao, chất lượng đồ thị khá tốt Độ phân giải 720x348 Bộ nhớ RAM màn hình 64KB Tuy nhiên HGC chỉ tương thích với MDA ở chế độ văn bản Về khả năng đổ thị, HGC không tương thích với tất cả các card khác của IBM
- CGẠ (Color Graphics Adapter): bộ phối ghép màu đổ thị Được hãng IBM giới thiệu cũng vào năm 1981 CGA có thể làm việc ở chế độ văn bản 25 đồng 40 cột hoặc 80 cột gổm 16 màu và chế độ đổ thị với độ phân gidi 320x200 4 màu và 640x200 2 màu trên các màn hình đigital RGBI Bộ nhớ RAM màn hình 16KB
~ EGA (Enhenced Graphics Adapter): Bộ phối ghép màu
đổ thị mở rộng Được IBM giới thiệu năm 1985 EGA tương thích hoàn toàn với CGA và có thêm những khả năng mới như cho phép làm việc ở chế độ đổ thị với độ phân giải 640x350 16 màu trên các màn hình đigital
RrGgBb Dùng RAMFont thay cho ROMFont Bộ nhớ RAM
màn hình thay đổi từ 64KB đến 256KB
- MCGA (Multi Color Graphicss Array) Được IBM giới thiệu vào năm 1987 với máy PS2 model 25 và 30 MCGA tương thích hoàn toàn với CGA, EGA Cho phép làm việc ở chế độ đở thị với độ phân giải 640x480 2 màu hoặc 320x200 256 màu trên các màn hình analog RGB Bộ nhớ RAM màn hình 256KB
~ VGA (Video Graphics Array): Duge hãng IBM giới thiệu
vào năm 1987 với các máy PS2 model 50, 60, 80 VGA
tương thích với EGA và MCGA Cho phép làm việc ở chế độ đồ thị với độ phân giải 640x480 16 màu trên các màn
hình analog RGB Bộ nhớ RAM màn hình 256KB 14
Trang 20BAL AOC MO-BAN CONG TPHX fhos Tin foe Ngày nay trên thị trường còn có các loại card VGA mở rộng cho phép làm việc ở chế độ đổ thị với độ phân
giải cao hơn nhiều Ví dụ như card super VGA có độ phân giải 800x600 hay cao hơn là XGA với độ phân giải
1024x800 Bộ nhớ RAM màn hình 512KB, 1MB
Để tạo hình ảnh trên màn hình, bộ điều khiển CRT là cầu nối giữa bộ nhớ màn hình và màn hình Nó chuyển
đổi các bit từ bộ nhớ màn hình thành các điểm tương ứng trên màn hình Các điểm sáng này gọi là pixel, chúng được tạo ra từ các tia điện tử đập vào màn hỉnh huỳnh quang
Các tia điện tử được phát ra từ súng điện tử quét
màn hình theo từng dòng Bộ phối ghép màn hình có
chu kỳ làm tươi mới màn hình 50 đến 60 lần trong I1
giây để làm cho hình ảnh rõ và ổn định Khi kết thúc chu kỳ làm mới màn hình, tia điện tử đi chuyển từ góc
phải dưới của màn hình lên góc trái trên của màn hình
để bát đầu chu kỳ làm tươi mới Quá trình này gọi là
hổi dọc
Bộ điều khiển CRT là thành phẩn quan trọng nhất của carđ màn hình Nó điều khiển các hoạt động của
card man hình và các tín hiệu mà màn hình cẩn để tạo
hình ảnh trên màn hình
b Bàn phím:
* Phân loai bàn phím: có loại 84 phím và loại 101 phím
* Chức năng cơ bản của ban phim:
Bàn phím PC thường sử dụng bộ điều khiển Intel
8042 có thể lập trình được Nhiệm vụ cơ bản của nó là
theo đối các phím và thông báo cho ROM BIOS khi có
Trang 21Cheong ï : 10 ciức PC Giéo Trinh Hợp Mgữ lần theo những khoảng thời gian xác định Ngoài ra bộ điểu khiển còn thực hiện ¡ loạt nhiệm vụ khác như tự kiểm tra bàn phím (Khi bật máy)
Bộ điều khiển 8042 có 1 vùng đệm có khả năng lưu trữ 20 tác động của phím trong trường hợp mấy tinh bận, không có đủ thời gian tiếp nhận từ bàn phim (trường hợp này ít xảy ra) Khi gõ từ bàn phím ta thường gặp trường hợp máy BEEP vì đã ấn phím trong khi chương trình còn chưa có khả năng tiếp nhận, tín hiệu beep này không phải là do vùng đệm của bàn phím bị tràn, mà chính là do vùng đệm riêng của các chương trình ROM BIOS phục vụ cho bàn phím trong RAM bị tràn Vùng đệm của ROM BIOS chỉ chứa được 15 phím, tuy nhiên ta có thể lập trình để mở rộng vùng đệm này đài hơn bằng hợp ngữ (Assembly language)
Mỗi khi ta ấn phím thì 1 tín hiệu xuất hiện, phím này
sẽ đi vào vùng đệm của bàn phím, sau đó vào vùng đệm
của ROM BIOS và cuối cùng được chương trình tiếp nhận
Tín hiệu ấn phím hay nhả phím trên bàn phím PC sẽ tạo ra l1 mã chiều đài 1 byte gọi là mã quét (scan code)
đặc trưng cho phím đó Khi ta ấn phím thì scan code sẽ
là một số từ 1 - 83, khi nhả phím thì scan code có giá trị là scan code của phím vừa ấn cộng với 128
Chú ý là bàn phím chỉ có nhiệm vụ thông báo chính
xác phím nào được ấn, nhả ra hay ấn liên tục Sau đó chương trình điểu khiểu bàn phím của ROM BIOS mới
định nghĩa lại các tín hiệu bàn phím, do đó người lập trình có thể sửa lại chương trình điều khiển bàn phím
của ROM BIOS để có thể thay đổi và mở rộng bàn phím
một cách mong muốn
Trang 22SAL AOC RO-BAN CONG TPREW Khoa Tin foe CAU HOI ON TAP
1 Tại sao CPU 80286 được gọi là một bộ vi xử lý 16 bịt ? 2 CPU 80286 có thể địa chỉ hóa được bao nhiêu ô nhớ khi
hoạt động trong chế độ thực ? 3 Bộ nhớ ảo là gì ?
4, Nói rõ những điểm khác nhau giữa CPU 8086 và 8088 ? 5 Hệ điểu hành đa nhiệm là gì ? DOS có phải là một hệ
điều hành đa nhiệm không ? tại sao ? Cho một vài ví du
về các hệ điều hành đa nhiêm thông dụng hiện nay 6 Trình bày các khả năng của CPU 80286 ở chế độ bảo vệ
1 Bus là gì ? Œ6 bao nhiêu loại bus ? Giải thích từng bại bus 8 Trình bày tổ chức hoạt động của CPU 8088/8086
9 Trình bày tổ chức hoạt động của CPU 80286 10 Phần biệt giữa bộ nhớ ROM và RAM
1l Thường trên bản mạch hệ thống của PC có một chỗ trống để gắn thêm bộ đồng xử lý toán học Vậy bộ đồng
xu lý toán học dùng để làm gì ?
12 Màn hình có thể làm việc ở 2 chế độ văn bản và đổ học
Hãy phân biệt rõ sự khác nhau giữa 2 chế độ này ?
13 Các card màn hình EGA, MCGA, VGA ding RAMfont thay
cho ROMfont trong chế độ văn bản Hãy giải thích rõ
RAMfont và ROMfont Pe py as
Trang 23Chuong I : Tổ chức PC Giáo Trink Hop Ket 14
15
Mã quét là gì ? Hãy trình bày vai trò của chương trình xử lý bàn phím của ROM BIOS
Bàn phím PC thường sử dụng bộ điều khiển Intel 8042
có thể lập trình được Hãy giải thích rõ nghĩa các chữ
"có thể lập trình được” trong cầu trên và nêu lên một ví dụ cụ thể
Trang 24OAT oC #Ở BÁI-(ÔN TP, WW hos Tin đục
Chuone 2
TS cHUC HOAT DONG CUA CPU 16 BIT 8086/8088/80236
Trong chương này, chúng ta sẽ khảo sát tổ chức hoạt động và tập lệnh của CPU 8086/8088 và 80286 trong chế độ thực I CÁC DẠNG DỮ LIỆU CỦA CPU
CPU chỉ có thể làm việc trực tiếp với dạng dữ liệu: byte và word * Dang byte: có chiêu đài 3 bữ,: có thể dùng để biểu diễn:
- Một số nguyên không dấu: có giá trị từ 0 đến 255, - Một số nguyên có dấu: có giá trị từ -128 đến 127
Số nguyên có dấu có thể là số dương hay sỐ âm, nó chỉ đùng 7 bit thấp cho giá trị, bit cao nhất dùng để biểu điễn dấu Nếu bit đấu (bit 7) có trị 1 thì số đó là số dương, ngược lại số đó là số âm
Số âm được luu trữ dưới dạng bù 2
- Một ký tự đưới dạng ascii chuẩn
* Dang word: Có chiểu dài 16 bít, đây là dạng dữ liệu thông đụng nhất Có thể dùng để biểu diễn:
~- Một số nguyên không dấu: có giá trị từ 0 đến 65535
- Một số nguyên có dấu: có giá trị từ ~32768 đến 32767
Số nguyên có đấu có thể là số dương hay số âm, nó chỉ đùng 15 bit thấp cho giá trị bit cao nhất dùng để biểu diễn dấu Nếu bit đấu (bit 15) có trị 1 thì số
đó là số dương, ngược lại số đó là số âm
Số âm được lưu trữ dưới dạng bù 2 ˆ
Trang 25Chuang 11: 10 chde loạt động của CPU điáo Trinh Kop Agi
II GIAO TIẾP GIỮA CPU VÀ BỘ NHỚ
CPU 8088/8086/80286 là bộ vi xử lý 16 bịt, nên chỉ có thể
làm việc trực tiếp với các đữ liệu 16 bit (có giá trí lớn nhất
la 65535 hay 64K)
Muốn truy xuất một 6 nhớ trong bộ nhớ, CPU phái biết địa
chỉ của ö nhớ, nghĩa là CPU phải làm việc trực tiếp với dữ
Hiệu biểu điễn địa chỉ õ nhớ Do đó trên lý thuyết CPU chỉ có
thể truy xuất trực tiếp đến 64K ô nhớ Nhưng CPU 8086/8088 hay 80286 trong chế độ thực dùng 20 bit để xác định địa chỉ một ô nhớ nên có thể địa chỉ hóa 1MB (2?? bit) ô nhớ Vậy muốn CPU có thể truy xuất cả 1MB bộ nhớ, phải có 1 phương pháp địa chỉ hóa 1MB nhưng chỉ sử dụng dang dữ liệu 16 bit Day là phương pháp đánh địa chi thanh doan (segment addressing) Bộ nhớ 1MB được chia thành nhiều đoạn Mỗi đoạn chứa tối đa 64KB bất đầu ở một vị trí mà địa chỉ của nó chia hết cho 16, gợi là địa chỉ đoạn 4 bit thấp nhất của địa chỉ đoạn 20 bịt luôn bằng 0 nên ta có thể xem địa chỉ đoạn như là 1 dai
lượng 16 bít
Đối với những ö nhớ có địa chỉ mà 4 bit thấp nhất khác 0, ta không thể đánh dấu bằng địa chỉ đoạn Muốn truy xuất đến 6 nhớ này trong đoạn 64K ta phải dùng thêm một địa chỉ gọi là địa chỉ offset để chỉ vị trí của õ nhớ này trong đoạn 64K được xác định bởi địa chỉ đoạn Địa chỉ offset của ô nhớ được tính như là khoảng cách từ điểm bắt đầu của đoạn đến ê nhớ trong đoạn, đầy cũng là một đại lượng 16 bit
Vậy địa chỉ của một ö nhớ bất kỳ trong bộ nhớ IM được xác định bằng cách tổ hợp 16 bit địa chỉ đoạn và 16 bit địa chỉ offset
* Định nghĩa:
- Địa chỉ vật lý (physic address): là đại lượng chiếu dài
20 bit xác định vị trí của một ô nhớ trong 1MB bộ nhớ
trong
Trang 26DAT BOC wo BAN-CONG TP HC Khoa Tin foc - Dia chi doan (segment address): !A dai lugng 16 bit ding để xác định địa chỉ bất đẩu của một đoạn trong bộ nhớ IMB - Địa chỉ offset: là đại lượng 16 bít dùng để xác định khoảng cách từ 6 nhớ đang xét trong đoạn đến vị trí bắt đầu của đoạn
- Địa chỉ logic: là đại lương gồm 2 thành phẩn chiều đài 16 bit, lần lược biểu điễn địa chỉ đoạn và địa chỉ offset của một ô nhớ Bộ nhớ trong 00000 địa chỉ đoạn 16 bit xxxx 1 doan = 64KB địa chỉ vật lý 20 bit zzzzz dia chi offset 16 bit yyyy PEFPPP
* Cách chuyển đổi từ địa chỉ lozic sang địa chỉ vật lý:
Khi BIU truy xuất bộ nhớ, nó nhận một địa chỉ logic gồm địa chỉ đoạn và địa chi offset, nó được chuyển đổi sang địa chỉ vật lý bằng cách dịch địa chỉ đoạn sang trái 4 bit rồi cộng với địa chỉ offset
Ví du: Giả sử ta có ô nhớ có địa chỉ đoạn là 2323 (hệ 16) và địa chỉ offset 3434 (hệ 16) thì theo qui ước của
IBM địa chỉ logic được viết như sau: :
2323:3434
Trang 27Chuang If: TẾ chút loạt động của CPU Giáo Trink Hop Ned và địa chỉ vật lý được tính bằng cách dịch địa chỉ đoạn
sang trái 4 bit ta được 23230 sau đó cộng với địa chỉ offset ta nhận được dia cri vật lý
23230 + 3434
Người lập trình chỉ có thể truy xuất các ô nhớ thông qua địa chỉ logic, còn địa chỉ vật lý chỉ dành riêng cho CPU dùng
* Su ân bố ment trong bô nhớ:
Bộ nhớ 1MB có thể chia thành nhiều đoạn, các đoạn này có thể chổng lên nhau, có thể nối tiếp nhau và có thể tách
rời nhau * chú ý:
Một 6 nhớ chỉ có duy nhất một địa chỉ vật lý, nhưng ta có thể dùng nhiều địa chỉ logic khác nhau để định vị cùng một 6 nhớ : Ví dụ: 2 địa chỉ logic 35b7:1000 36b7:0000 biểu thị cùng 1 địa chỉ vật lý 36b70
Trong cùng 1 thời điểm CPU chỉ có thể truy xuất tối đa 4 đoạn khác nhau (256KB ô nhớ)
III CÁC THANH GHI CỦA CPU
Bên trong CPU có 14 thanh ghi, mỗi thanh ghi là một vùng nhớ chiểu đài 16 bit MỖi thanh ghi đều có công dụng riêng Ta có thể chỉa các thanh ghi
thành 5 nhóm chính sau:
Trang 28BA HOC AT BAN-COMG TP ACH itoa Tin toe
1 Nhớn các thanh ghi da dung (general purpose register):
gém 4 thanh ghi có tên là AX ,BX ,CX, DX
Đặc điểm: có thể sử dụng như ! thanh ghi đữ liéu 16 bit
hay 2 thanh ghi dữ liệu, mỗi thanh ghí chiểu dài 8 bít
AX = AH + AL BX = BH + BL CX = CH + CL DX = DH + DL
Các thanh ghi 8 bit AH, BH, CH, DH va AL, BL, CL, DL
tương ứng gọi là các phẩn cao 8 bit và phần thấp 8 bit của các thanh ghi AX, BX, CX, DX
Ví dụ: Nếu thanh ghỉ AX có nội dung 9FAB thì thanh
ghi AH có nội dung 9F và AL có nội dung AB
Các thanh ghi đa dụng được dùng để chứa các dữ liệu cẩn thiết khi thực hiện các phép toán hoặc các tác vụ xuất nhập, ngoài ra mỗi thanh ghi còn có các công dụng riêng biệt sau đây:
- AX, thanh ghi tich liy (Accumulator register): day
là thanh ghi chính để thực hiện các phép toán SỐ học, các lệnh xuất nhập cổng Ngoài ra nó cũng được ding trong một vài lệnh xử lý chuỗi,
- BX, thanh ghi cơ sở (Base register): Dùng để chỉ đến vị trí của một ô nhớ trong một đoạn Thường thanh ghi BX được dùng trong phép định địa chỉ cơ sở khi truy xuất các dữ liệu trong bộ nhớ
- CX, thanh ghị đếm (Count register): thường dùng
Trang 29
Chuong II: 16 ehte loạt động của CPU Gido Trink Hop thế
- DX, thạnh ghi dũ liêu (Data register): thudong dùng để lưu kết quả của các phép toán nhân và chủ, định địa chỉ cổng trong các lệnh xuất nhập cổng, 2 Nhóm các thanh ghi con tré va chi muc: (Pointer and Index register)
Gém 4 thanh ghi BP, SP, SI, DI Các thanh ghi nay là
các thanh ghi 16 bỉt, không thể chia thanh 2 thanh ghi 8 bit
- BP thanh ghi con tré6 co _sG (Base Pointer Register) dùng trong các phép định địa chỉ cơ sở khi truy xuất STACK
S§TACK (ngăn xếp) là một vùng trong bộ nhớ trong để
lưu trữ các dữ Hệu tạm thời
*+ Mục đích chính cha STACK:
Khi chương trình thực hiện một lệnh gọi
chương trình con hay một ngắt, CPU sẽ lưu địa chỉ của lệnh kế tiếp sau lệnh gọi vào STACK và
thực hiện các lệnh trong chương trình con hay
ngắt đó Khi thực hiện xong chương trình con hay ngắt, CPU sẽ lấy địa chỉ này ra khỏi STACK để có thể thực hiện lệnh kế tiếp sau lệnh gọi chương trình con hay ngất đó
STACK làm việc theo nguyên tắc vào cuối ra đâu (LIFO) túc là dữ Hệu được cất vào trong STACK sau cùng được lấy ra trước
Để quản lý một STACK ta cẩn một con trỏ để
chỉ đến đỉnh của STACK (lưu phần tử được cất vào STACK sau cùng)
9 Thanh ghi con tra STACK SP (stack pointer register) dugc ding làm con trỏ để chỉ đến phần tử ở đỉnh của stack
- SI và DI được dùng trong các lệnh xử lý chuỗi và trong các phép định địa chỉ chỉ mục khi truy xuất bộ nhớ
Trang 30+
BAT ape NỸ RẤ-ÔNG TP.ROY \ Mos Tit floc SI, thanh ghi chi sé nguén (Source Index Register):
| dùng để xác định địa chỉ bắt đầu của chuỗi nguổn
ĐI, thạnh ghị chỉ số đích (Destination Index Register): ding dé xác định địa chỉ bắt đầu của chuối đích
3 Nhớm các thanh ghi sesment:
Gồm 4 thanh ghi CS, DS, ES, SS, ding để chứa địa chi đoạn Bộ nhớ trong !MB của CPU 80286 được chia thành các
đoạn, mỗi đoạn chứa tối đa 64KB, ở mỗi thời điểm CPU chỉ
có thể truy xuất tối đa 4 đoạn được xác định bởi 4 thanh ghi CS, DS, ES, SS
- Thanh zhi cS (Code Segment) dùng để chứa địa chỉ đoạn của đoạn chứa mã lệnh
- Thanh ghi DS (Data Segment) ding dé chia dia chi đoạn của đoạn chứa di liệu
- Thanh ghi E§ (Extra Segment) dùng để chứa địa chỉ
| đoạn của đoạn chứa các dữ liệu bổ sung :
Vậy cùng một lúc ta có 2 đoạn chứa đữ liệu, một
đoạn có địa chỉ đoạn do D$S chỉ, đoạn kia do ES chỉ
Ta thường dùng ES để chỉ đoạn dữ liệu không nằm trong đoạn dữ liệu do D§ chỉ
- Thanh ghỉ 5S (Stack Segment) dùng để chứa địa chỉ
đoạn của đoạn chứa stack ARES Fr 18, ưœ@MA<
4 Thanh ghỉ con trõ lệnh chương trình IP (nstruction Pointer}
Dùng để xác định địa chỉ offset của ô nhớ chứa mã lệnh của lệnh kế tiếp sẽ được CPU thi hành (õ nhớ này nằm trong đoạn được định bởi CS)
Khi CPU thực hiện một lệnh, thanh ghi IP sẽ tự động
thay đổi để chỉ đến địa chỉ offset của ô nhớ chứa lệnh sẽ được CPU thi hành kế tiếp
lai
ete
tie
Trang 31(hương II: Tổ chúc loạt động cÍa (PU Gide Frink Hop Nei 5 Thanh ghỉ co hiéu (Flag):
Thanh ghỉ cờ hiệu là một thanh ghi 16 bít Dùng để lưu các thông tin đặc biệt về trạng thái hiện thời của CPU và
về kết quả của lệnh vừa được CPU thực hiện CPU chỉ
dùng 11 bit làm cờ, mỗi cờ gổm 2 trạng thái: 1 (set) va 0 (clear), 7 bit còn lại không sử dùng Ta có thể chia các cờ làm 2 nhóm: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 NT 10PL oF DF | IF | TF SF ZF AF PF cr Sơ đổ các cờ của thanh ghi cò hiệu a Nhóm các cờ trạng thát
Gém 6 cO hiéu: CF, AF, PF, ZF, SF, OF Cac cờ này có thể bị ảnh hưởng mỗi khi CPU thực hiện xong một
lệnh :
* CoO nhd CF (Carry Flag): được bật 1 nếu kết quả của phép toán vừa thực hiện có nhớ hay có mượn ‘ |
Thường cờ CF được dùng trong phép tính các dữ liệu dài hơn 2 byte
Ví dụ: giả sử by
1/ AL = 10100111 = A7H
BL = 10010101 = 95H d t
Thì lệnh cộng 2 thanh ghi AL và BL cho kết | ị quả trong thanh ghi AL sẽ được kết quả
AL = 00111100 = 3CH có nhớ 1, cồ CF bật một pery |
2/ AL = 10100111 = A7H G
BL = 00000011 = 03H
Thi lénh céng 2 thanh ghi AL và BL cho kết
quả trong thanh ghi AL sẽ được kết quả AL = AAH không có nhớ, cờ CF tắt
Trang 322
is
DAL HOC MO’ BAN-CONG TP, SOW Shos Tin Hoc CỜ phu AF (Auxiliary Carry Flag): duge bật 1 nếu kết quả phép toán vừa thực hiện có nhớ hay có mượn đối với 4 bit thấp
Thường cờ AF được dùng trong phép tính các số
BCD (Binary Coded Decimal Number)
Ví dụ: Giả sử AL = 10100101 BL = 00111110
thì phép cộng 2 thanh ghi AL và BL cho kết quả trong thanh ghi AL sẽ được kết quả AL = 1110 0011 có nhớ ở bịt 3 và cờ AF =z I
Co_zero ZF (zero flag): Duge bat 1 néu két qua
của một phép toán vừa thực hiện bằng 0
Thường cờ ZF dùng trong các phép so sánh Ví dụ: nếu nội dung của thanh ghi AL và DL là
bằng nhau thì lệnh trừ 2 thanh ghi AL và DL sẽ cho kết quả O và cờ ZF = I1
Cờ dấu $SF (Sign Flag): Có giá trị tương ứng với bit cao nhất của kết quả phép toán vừa thực
hiện
Thường dùng để xác định kết quả của một phép toán là số âm hay dương Nếu cờ $F=l thì kết quả của phép toán là số âm, ngược lại kết quá cho số dương
CO _kiém tra chdn Jé PF (Parity Flag): Được bật 1 nếu kết quả của phép toán có tổng 8 bit thấp là một số chẩn
Thường cờ PF dùng để kiểm tra việc chuyển dữ
Hiệu từng byte một từ vùng này sang vùng khác
có chính xác không (băng cách kiểm tra tính chẵn lẻ của tổng từng § bịt của 1 byte) -
Gờ tràn OF (Overfiow Flag): duge bat 1 nếu Kết quả của một phép toán các số có dấu bị sai Ví du: giả sử
Trang 33Chương !I: Tổ chúc loạt động của CPO điáo Trink Hop Ned
BL = 70H (112)
Ta có AL, BL là 2 số dương vi có bít cao nhất = 0
Lệnh cộng 2 thanh ghỉ AL và BL cho kết quả trong thanh ghi AL sẽ được kết quả là D0H hay -48 là sế âm, nghĩa là kết quả số có dấu bị sai va.cd OF bat 1 b Nhóm các cờ hiệu điều khiển: Gém 3 cd DF, TF, IF CO DF ảnh hưởng đến các lệnh xử lý chuỗi, còn cờ TF va IF anh hướng đến cách hoạt động của CPU
* DF (Direction Flag): dang để qui định chiều chuyển đữ liệu trong các lệnh xử lý chuổi -~ DF = 1: Chiểu chuyển đữ liệu tù địa chỉ cao lên địa chỉ thấp Sau 1 lệnh xử lý chuỗi, nội dung của các thanh ghi SI, DI sẽ tụ động giảm 1 nếu là xử lý byte hoặc gidm 2 nếu !à xử lý word - DF = 0: Chiều chuyển di liệu từ địa chỉ thấp xuống địa chỉ cao Sau 1 lệnh xử lý chuối, nội dung của các thanh ghi SI, DI sẽ tự động tăng 1 nếu là xử lý byte hoặc tăng 2 nếu là xử lý word * TF (Trap Flag): Cho phép CPU chuyén sang ché
độ thực hiện tuẩn tự từng lệnh của chương trình (single step mode), nó được dùng trong việc hiệu chỉnh và gỡ rối chương trình
Nếu TF = 1 thì CPU sẽ phát sinh một ngắt (single
step interrupt) sau mỗi lần một lệnh của chương trình được thực hiện xong
Chương trình gõ rối DEBUG (sẽ học ở chương 3)
dùng chế độ TF=1 để có thể thực hiện chương trình tuẩn tự từng lệnh một
* IF (Interrupt Flag): cho phép một ngắt phần cứng phát sinh sẽ được tiếp nhận (enable) hay không
được tiếp nhận (đisable)
Trang 34BỊI Hoc ao Bae-COME TP 50 Shoe Tin doe IF = l: các ngắt phần cứng phát sinh sẽ được tiếp nhận IF = 0: các ngắt phần cúng phát sinh sẽ không được tiếp nhận c Nhóm các cờ đặc biệt: (chỉ dùng đối với CPU 286) Gồm 2 cờ NT và IOPL
~ NT (Nest task), nhiệm vụ lồng nhau
- IOPL (I/O Privilege Level), mitc đặc quyển vào ra 2 cờ NT và IOPL chỉ dùng trong chế độ bảo vệ 6 Thanh ghi trang thái máy MSW:
(chỉ dùng đối với CPU 286)`
Thanh ghỉ MSW có 16 bit, nhưng chỉ có 4 bit thấp được dùng, các bit còn lại dự trủ cho CPU 80386
15 4 3 2 1 0 ‹
TS EM MP PE
- Bit PE (Protected mode Enable), cho phép ché độ bảo vệ Bit PE bật | néu CPU dang lam việc ở chế độ bảo vệ
- Bit MP (Monitor Processor Extension) : bit MP cho biết đang có một bộ đổng vi xử lý cùng
làm việc
- EM (Emulate Processor Extension) : bit EM cho
phép mô phỏng một bộ đồng vỉ xủ lý
- TS (Tast test) : Bit TS bật 1 mỗi khi chuyển
nhiệm vụ và thường được dùng trong trường
Trang 35Chuong II: 16 chite boat déng cla cpg Sido Trish Hop Ned
a Z % os
Iv Cd CẤU TO CHUC VA HOAT £ONG CUA INTERRO?T
* Ngất (Interrup£): là tín :iệu được gởi đến bộ vi xu ly để tạm ngưng chương trình đang thực hiện và xử lý một nhiệm
vụ khác, sau khi xủ ¿7 xvo¡š niệm vụ, thì chương trình bị
ngắt sẽ được tiếp tục :hự¿ ¡ýa sau vị trí bị ngắt
* Phân loại ngắt:
1 Ngắt phần cing (Hardware interrupt): ducc phat sinh bởi các mạch của máy tính xhi đấp lại 1 sự ciên nào đó, Nó được dùng dể diểu kiuẩn các thiết : „lan trọng trên hệ máy nhu ban phim, 6 dia, máy in Các ngắt này được linh kiện 8259A quản ¡iý, tùy theo từng loại thiết bị nó sẽ sắp xếp độ ưu tiên theo mức độ quan
trọng trước khi gởi đến _PU để thực tiên
CPU gém 8 ngắt phần củng (TRQ)
IRQO timer IRQL keyboard
IRQ2 chi ding trong may AT IRQ3 serial port 2
IRQ4 serial port i IRQS harddisk
IRQ6 floppy disk
IRQ?7 parallel £c:z
Trang 36
ĐẠI HỌC Ở BÁN-(ÔNG TP.#ŒX Stos Tin Học
2 Interrupt NMI (Non maskable interrrupt): Ngdt khéng
chắn được, Day là tín hiệu ngất không che được bằng phần mềm, nó có độ ưu tiền cao nhất, NMI được phát sinh để báo một sự nguy hiểm như sự sụt thế hay sự
pu héng bộ nhớ
Zaterrupt internal: Được phát sinh bởi CPU khi thực tiện chương trình Gđm 3 ngắt:
~ Divide by zero interrupt: Duge tu déng phất sinh bởi
CPU mỗi khi phép chia có sai như khi chia cho Ù -_ Into (overflow interrupt): Được tự dọng phát sinn bởi
1PU khi một sự tràn dữ liệu xảy ra trong các 2hép toán
Trap interrupt: Được tự động phát sinh bởi C?U sáu khi thực hiện xong một lệnh trong trường nợp cỡ
hiệu TF bật 1
4, Ngất mềm (Softv e mterrupt):
¡o chương trình yêu cđu để thực hiện một chương
¿nh con nào đó có sẵn trong ROM hay RAM Mễ: - sắt shan mém là một ngắt được gọi bởi lệnh INT Ví du l¿nh {NT 5 sẽ thực hiện chương trình in toàn bộ nủc: jung cua mày hình ra máy in
Trang 37(hương II; TẾ chút loạt động cds CAN Giáo Trình Hop tứ Các ngắt từ 00 đến 1F: cdc ng&t ding trong ROM BIOS (trong đó ngắt 2 là ngắt NMI và các ngắt từ 08-0F là các ngắt phần cứng)
Các ngắt từ 20 đến 2F: các ngắt mềm dùng trong DOS Các ngắt từ 30 đến FF: các ngắt mềm do người sử dụng định nghĩa (user interrupt)
V CƠ CẤU ĐINH ĐỊA CHỈ CUA CPU 30286
Ngôn ngữ máy là ngôn ngữ duy nhất mà CPU hiểu và thực hiện được, thường mỗi CPU có một ngôn ngữ máy riêng Dé
máy tính có thể thực hiện một chương trình, thì chương trình phải được viết bằng chính ngôn ngữ máy của CPU trong máy tính đó
Tất cả những lệnh mà CPU có thể nhận biết để thực hiện gọi là tập lệnh mã máy của CPU (CPU Instruction Set) Các lệnh mã máy là một dấy các số nhị phân 0 và 1
MỖi lệnh mã máy của CPU nói chung gổm 3 phần - ma lénh (Opcode): tt 1 - 3 byte
- độ ddi (Displacement): ti 0 - 4 byte
- dit liéu (Data): tu 0 - 2 byte
Giải thích:
¬ Mã lênh: dùng để xác định tác vụ cẩn thực hiện - Độ đời: dùng để xác định vị trí vùng nhớ Vùng nhớ
này là tác tố cho tác vụ do mã lệnh qui định Đối với một số lệnh vùng nhớ này là nơi chứa 'dữ liệu cần đọc hay nơi ghi kết quả Đặc biệt đối với các lệnh chuyển điểu khiển, vùng nhớ này xác định mã lệnh kế tiếp mã CPU sẽ thực hiện
Trang 38OAL HOC AO BAN-CONG TPH Khoa Tia Hoc
A Các lênh không có độ đời và dữ liêu: * Lệnh có mã 1 byte: 1, Lệnh xóa cð nhớ CF có mã máy là 11111000 hay F8 2 Lệnh bật cờ nhớ CF có mã máy là 11111001 hay F9 '3 Lệnh xóa cờ interrupt IF œ mã máy là 11111010 hay FA 4 Lệnh xóa cờ mterrupt IF có mã máy là 11111011 hay FB 5 Lệnh push thanh ghi AX vào STACK có mã máy là 01010000 hay 50 6 Lệnh pop một từ ở đỉnh STACK vào thanh ghi AX có mã máy là 01011000 hay 58 7 Lệnh tăng nội dung thanh ghi CX thêm I có mã máy là 01000001 hay 41 * Lệnh có mã 2 byte:
1 Lệnh chuyển nội dung của thanh ghi AH vào thanh ghi AL có mã máy là 8A C4 hay 88 E0
2 Lệnh cộng nội dung thanh ghi AX với thanh
ghi BX kết quả lưu vào thanh ghi AX có mã
máy là 13 C23 hay 01 D8
3 Lệnh tăng nội dung thanh ghi CL thêm 1 có mã máy là là FE C1
* Lệnh có mã 3 byte: chỉ dùng trong chế độ bảo vệ
B Các lênh không có đõ dời nhưng có dữ liêu:
1 Lệnh chuyển số 20 vào thanh ghỉ AH có mã
máy là 2 byte B4 20
2 Lệnh cộng nội dung thanh ghi AX và số 123 kết quả cất vào thanh ghi AX có mã máy là 3
byte 05 23 01
Trang 39Chuong II: Tế chức host ding cls CR Gide Tring Hoe Ket 4 Lệnh cộng nội dung thanh ghi BX và số 0¡ kết quả cất vào thanh ghi BX có mã máy là 3 byte 8i C3 01
Š Lệnh chuyển trị một byte 34 vào ô nhớ có địa chỉ chứa trong thanh ghi BX trong đoạn được chỉ bởi D§ có mã máy là 3 byte C6 07 34 2rong céc vi du nay, cdéc hing s6 20, 123, 34 đóng ai trdé di liệu trong một lệnh mã máy
» Các lãnh có độ dời nhưng không có đữ liệu:
1, Lệnh chuyển nội dung thanh ghi AL vào ô nhớ có địa chỉ 200 trong đoạn được chỉ bởi DS có mã máy 3 byte A2 00 02 hay mã máy là 4 byte
88 06 00 02
2 Lệnh chuyển nội dung thanh ghi AL vào ô nhớ có địa chỉ là tổng nội dung thanh ghỉ BX với 100 trong đoạn được chỉ bởi D$S có mã máy là
4 byte 88 87 00 01
3 Lệnh chuyển nội dung thanh ghi AL vàc ô nhớ có địa chỉ là tổng nội dung thanh ghi BX va nội dung thanh ghi SI véi 100 trong đoạn được chỉ bởi DS có mã máy là 4 byte 88 80 00 01 Trong các ví dụ này, các hằng số 200, 100 đóng vai zzò độ dời trong một lệnh mã máy
Ð Các lênh có độ dời và đữ liêu:
1 Lệnh chuyển trị một byte 35 vào 6 nhớ có địa
chỉ 200 trong đoạn được chỉ bởi DS có mã máy
3 byte C6 06 00 02 35
2 Lệnh chuyển trị 2 byte 1234 vao 6 nhé cd địa
chỉ 200 trong đoạn được chỉ bởi D8 có mã máy là 6 byte C7 06 00 02 34 12
3 Lệnh cộng trị 2 byte 0035 với nội dung ö nhớ có địa chỉ 200 trong đoạn được chỉ bởi D$S kết
Trang 40BẠI ioc Ao’ BAN-CONG TP ACK thos Tin Hoc quả cất vào ö nhớ đó, có mã máy là 5 byte 83
06 00 02 01
4 Lệnh cộng trị 2 byte 1234 với nội dung ö nhớ có địa chỉ 200 trong đoạn được chỉ bởi DS kết
quả cất vào ô nhớ đó có mã máy là 6 byte 31
06 00 02 34 12
Các lệnh của CPU là một dãy các số nhị phần O và 1 nên rất khó đọc hiểu Vì vậy thay vì dùng các số nhị
phần để biểu thị lệnh, người lập trình có thể đùng các
từ gợi nhớ dễ đọc và dễ hiểu hơn Các từ gợi nhớ này gọi là dạng gợi nhớ của tập lệnh CPU
Dạng gọi nhớ (mnenonic) của một lệnh CPU được mô tả bởi 2 thành phần: Tên gợi nhớ (mnenonic) và toán
hạng (operand)
- Tên gời nhớ: là dạng gợi nhớ của lệnh, xác định một
hành động cẩn thực hiện :
- Todn hang: dùng để qui định các dữ liệu (trực hằng, thanh ghi, bộ nhớ) cẩn thiết để thực hiện hành động
Có 3 loại toán hạng :
- toán hạng trực hằng: đữ liệu là trực hằng
- toán hạng thanh gh: dữ Hệu là nội dung của
thanh ghi -
~- toán hạng bộ nhớ: đữ liệu là nội dung ô nhớ
* Dang lệnh mã máy dưới dang gợi nhớ: Mnemonic [ operand 1 [ ; operand 2 ] ] Các lệnh của CPU có thể chia làm 3 nhóm: - Nhóm không có toán hạng
- Nhóm có một toán hạng
- Nhóm có 2 toán hạng Trong trường hp này toán