C S: chọn chip.
2. Các loại ngắt và bảng vector ngắt
Quá trình ngắt có thể mô tả như sau:
Hình 2.1 – Quá trình thực hiện ngắt
Lưu trữ các thanh ghi cần thiết …
Khôi phục các thanh ghi
Quay về chương trình chính (IRET) Chương trình chính ISR
Trong các quá trình ngắt, ta phân biệt thành 2 loại: ngắt cứng và ngắt mềm. Ngắt mềm là ngắt được gọi bằng một lệnh trong chương trình ngôn ngữ máy. Ngắt mềm được thục hiện trên hợp ngữ thông qua lệnh INT. Đối với các ngôn ngữ bậc cao hơn, vẫn cho phép thực hiện gọi ngắt nhưng phải được biên dịch thành lệnh INT trong hợp ngữ rồi mời thực hiện.
Khác với ngắt mềm, ngắt cứng không được khởi động bên trong máy tính mà do các linh kiện điện tử tác đông lên hệ thống. Ngắt cứng cũng được chia thành 2 loại: ngắt che
được và ngắt không che được. Ngắt che được là ngắt có thể cho phép hay không cho phép thực thi bằng phần mềm thông qua cờ ngắt IF (Interrupt Flag): lệnh CLI (Clear Interrupt Flag) sẽ cấm ngắt và lệnh STI (Set Interrupt Flag) sẽ cho phép các ngắt này hoạt động.
Các loại ngắt khác nhau có thể mô tả như sau:
Hình 2.2 – Các loại ngắt
Khi thực hiện lệnh gọi một ngắt nào đó, chương trình con phục vụ cho ngắt sẽđược gọi. Để thực hiện các ngắt tương ứng, địa chỉ thực hiện các chương trình con phục vụ ngắt
được đặt trong một bảng, gọi là bảng vector ngắt.
Bảng vector ngắt gồm có 256 phần tử, mỗi phần tử gồm 4 byte ứng với 256 ngắt (từ
ngắt 0 đến ngắt 0FFh). Mỗi phần tử trong bảng vector ngắt chứa 2 địa chỉ: địa chỉ thanh ghi
đoạn đưa vào CS và địa chỉ offset của chương trình phục vụ ngắt đưa vào IP. Ngắt
Ngắt mềm Ngắt cứng
Ngắt hệ thống Ngắt do người
sử dụng Trong Ngoài
HĐH BIOS Che được Không
Bảng vector ngắt có thể mô tả như sau:
Địa chỉ Địa chỉ ISR Số thứ tự ngắt
0000h:0000h CS 0000h:0002h IP 0 0000h:0004h CS 0000h:0006h IP 1 0000h:0008h CS 0000h:000Ah IP 2 … … … 0000h:03FCh CS 0000h:03FEh IP 255
Khi có một quá trình ngắt xảy ra, CPU sẽ tìm địa chỉ bắt đầu của chương trình ngắt
được chứa trong bảng vector ngắt theo số thự tự ngắt. Do một phần tử trong bảng vector ngắt chiếm 4 byte nên để tìm giá trịđịa chỉ trong bảng vector ngắt, ta chỉ cần nhân số thứ tự
ngắt với 4.
Danh sách các ngắt mô tả như sau:
STT Địa chỉ Chức năng
00h 0000h – 0003h CPU: chia cho 0
01h 0004h – 0007h CPU: thực hiện từng lệnh 02h 0008h – 000Bh CPU: Lỗi RAM
03h 000Ch – 000Fh CPU: thực hiện đến điểm dừng 04h 0010h – 0013h CPU: tràn số
05h 0014h – 0017h In trang màn hình (Print Screen) 06h, 07h 0018h – 001Fh Dành riêng
08h 0020h – 0023h IRQ0: ngắt đồng hồ (18.2 lần / giây) 09h 0024h – 0027h IRQ1: ngắt bàn phím
0Ah 0028h – 002Bh IRQ2: Dành riêng
0Bh 002Ch – 002Fh IRQ3: Giao tiếp nối tiếp 1 0Ch 0030h – 0033h IRQ4: Giao tiếp nối tiếp 2 0Dh 0034h – 0037h IRQ5: Đĩa cứng
0Eh 0038h – 003Bh IRQ6: Đĩa mềm 0Fh 003Ch – 003Fh IRQ7: Máy in 10h 0040h – 0043h BIOS: màn hình
11h 0044h – 0047h BIOS: xác định cấu hình máy tính 12h 0048h – 004Bh BIOS: xác định kích thước RAM 13h 004Ch – 004Fh BIOS: truy nhập đĩa cứng / đĩa mềm 14h 0050h – 0053h BIOS: truy nhập giao tiếp nối tiếp
15h 0054h – 0057h BIOS: truy nhập cassette hay mở rộng ngắt 16h 0058h – 005Bh BIOS: kiểm tra bàn phím
17h 005Ch – 005Fh BIOS: truy nhập máy in
18h 0060h – 0063h Chương trình xâm nhập ROM BASIC
19h 0064h – 0067h BIOS: khởi động hệ thống (khi nhấn Ctrl-Alt-Del) 1Ah 0068h – 006Bh BIOS: đọc / ghi ngày / giờ
1Bh 006Ch – 006Fh Nhấn phím Break 1Ch 0070h – 0073h Gọi sau INT 08h 1Dh 0074h – 0077h Địa chỉ bảng tham số màn hình 1Eh 0078h – 007Bh Địa chỉ bảng tham sốđĩa mềm 1Fh 007Ch – 007Fh Địa chỉ bảng font có ký tự mở rộng 20h 0080h – 0083h DOS: kết thúc chương trình 21h 0084h – 0087h DOS: gọi các hàm của DOS 22h 0088h – 008Bh Địa chỉ kết thúc chương trình 23h 008Ch – 008Fh Nhấn Ctrl-Break 24h 0090h – 0093h Địa chỉ chương trình xử lý lỗi 25h 0094h – 0097h DOS: đọc đĩa mềm / đĩa cứng 26h 0098h – 009Bh DOS: ghi đĩa mềm / đĩa cứng
27h 009Ch – 009Fh DOS: kết thúc chương trình và thường trú 28h – 3Fh 00A0h – 00FFh Dành riêng cho DOS
40h 0100h – 0103h BIOS: phục vụđĩa mềm
41h 0104h – 0107h Địa chỉ bảng tham sốđĩa cứng 1 42h – 45h 0108h – 0117h Dành riêng
46h 0118h – 011Bh Địa chỉ của bảng tham sốđĩa cứng 2 47h – 49h 011Ch – 0127h Dành cho user
4Ah 0128h – 012Bh Hẹn giờ 4Bh – 67h 012Ch – 019Fh Dành cho user 68h – 6Fh 01A0h – 01BFh Không dùng 70h 01C0h – 01C3h IRQ8: đồng hồ thời gian thực 71h 01C4h – 01C7h IRQ9 72h 01C8h – 01CBh IRQ10 73h 01CCh – 01CFh IRQ11 74h 01D0h – 01D3h IRQ12 75h 01D4h – 01D7h IRQ13: từ 80x87 76h 01D8h – 01DBh IRQ14: đĩa cứng 77h 01DCh – 01DFh IRQ15 78h – 7Fh 01E0h – 01FFh Dành riêng
80h – F0h 0200h – 03C3h Dùng cho bộ thông dịch BASIC F1h – FFh 03C4h – 03FFh Không sử dụng