Bµi 5
Ng¾t vµ
Chip ®iÒu khiÓn ng¾t
8259
1. Giới thiệu
2. Tổ chức ngắt ở máy tính XT
3. Chip điều khiển ngắt 8259
4. Từ lệnh khởi tạo và Từ lệnh điều
khiển hoạt động của 8259
5. Nối ghép 8259 ở máy tính IBM PC XT
6. Ngắt ở máy tính 286 về sau
7. Minh họa hoạt động ngắt bàn phím
và nhập dữ liệu từ bán phím
BUS
Hình 1: Hệ thống hỗ trợ Vào/Ra
Hệ máy vi
tính
Bộ vi xử lý
Bộ nhớ
HT hỗ trợ I/O
PORT
Máy in
ổ đĩa
Bàn
phím
1. Giới thiệu
Máy tính IBM PC XT thực hiện
vào/ra qua các cổng nhờ có hệ
thống hỗ trợ vào/ra.
Hệ thống hỗ trợ vào/ra chủ yếu
gồm:
- Chip điều khiển ngắt 8259
- Chip điều khiển vào ra 8255
- Chip định thời 8253
Có 2 phương pháp thực hiện
vào/ra:
- Phương pháp thăm dò
- Phương pháp ngắt
Phương pháp thăm dò:
Bộ VXL liên tục kiểm tra tình
trạng của thiết bị qua cổng I/O
và khi có thiết bị yêu cầu thì
tiến hành phục vụ thiết bị.
Phục vụ xong, bộ VXL chuyển
sang kiểm tra trạng thái của
thiết bị tiếp theo cho đến khi
tất cả đều được phục vụ.
Nhược điểm của phương
pháp thăm dò:
Chiếm nhiều thời gian của
bộ VXL.
Phục vụ thiết bị không
theo thứ tự ưu tiên mà theo
thứ tự định sẵn
Phương pháp ngắt:
Khi có một thiết bị cần được
phục vụ thì thiết bị sẽ báo cho bộ
VXL bằng cách gửi một tín hiệu
ngắt.
Khi nhận được tín hiệu này, bộ
VXL ngừng mọi công việc đang
thực hiện để chuyển sang phục vụ
thiết bị.
Mỗi ngắt có Chương trình con
phục vụ ngắt ISR (Interrupt
Service Routine) được đặt trong
bộ nhớ.
Ưu điểm của phương pháp
ngắt:
Bộ VXL phục vụ thiết bị dựa
theo mức ưu tiên được gán
cho thiết bị.
Khi thiết bị có yêu cầu đư
ợc phục vụ, bộ VXL vẫn có thể
bỏ qua.
Tiết kiệm thời gian cho bộ
VXL. Bộ VXL có thể thực hiện
được nhiều công việc khác trư
ớc khi phục vụ thiết bị.
003FC
00018
00014
00010
0000C
00008
00004
00000
INT FF
INT 06
INT 05
INT 04
INT 03
INT 02
INT 01
INT 00
Bè trÝ ng¾t cña bé vi xö lý 8088/8086
CS
IP
CS
IP
CS
IP
CS
IP
2. Tæ chøc Ng¾t cña m¸y tÝnh IBM
PC XT
Ngắt của máy tính XT
8088/86 có tất cả 256 ngắt được
đặt tên từ INT 00, INT 01, ... , INT
FFH.
Khi thực hiện một ngắt, CPU tự
động:
Lưu các thanh ghi cờ, con trỏ
lệnh và thanh ghi đoạn mã vào
ngăn xếp.
Chuyển điều khiển tới địa chỉ
xác định trong bộ nhớ để thực
hiện chương trình con phục vụ
ngắt gọi là ISR.
Chương trình con phục vụ
ngắt ISR (Interrupt Service
Routine)
Mỗi ngắt có một trình phục vụ
ngắt tương ứng, gọi là ISR.
Mỗi ISR có một vị trí cố định
trong bộ nhớ (gọi là bảng vectơ
ngắt) để lưu giá trị CS:IP trỏ đến
ISR đó.
Trong bảng vectơ ngắt của máy
tính XT, 2 byte thấp lưu IP, 2 byte
cao tiếp theo lưu CS.
Bảng vectơ ngắt
Tập hợp các ô nhớ lưu địa chỉ
của tất cả các ISR được gọi là
bảng vector ngắt.
Máy tính XT có 256 ngắt,
bảng vectơ ngắt chiếm 1KB bộ
nhớ có địa chỉ từ 0-3FFH.
OFFSET lưu địa chỉ trong
bảng vectơ ngắt luôn bằng 4
lần số hiệu ngắt
0000:0000
0000:0004
0000:0008
0000:000C
0000:0010
0000:0014
...
INT 00
INT 01
INT 02
INT 03
INT 04
INT 05
...
INT FF
Địa chỉ
logic ISR
Số hiệu
ngắt
Địa chỉ vật
lý ISR (H)
00000
00004
00008
0000C
00010
00014
...
003FC 0000:03FC
Bảng vectơ ngắt máy tính
XT
Bảng 11.2. Địa chỉ ISR của các ngắt ở máy tính
XT
Ngắt
0
1
2
3
4
5
6,7
8
9
A
B
C
D
E
F
10
11
12
Địa chỉ LG
00E3:3072
0600:08ED
F000:E2C3
0600:08E6
0700:0147
F000:FF54
F000:FEA5
F000:E987
F000:EF57
F070:0147
F000:F065
F000:F84D
F000:F841
Địa chỉ VL
03EA2
068ED
FE2C3
068E6
07147
FFF54
FFEA5
FE987
FEF57
00847
FF065
FF84D
FF841
Chức năng
Lỗi phép chia
Chạy từng lệnh (lệnh dò trong
DEBUG)
Ngắt không che được
Điểm dừng
Tràn khi làm việc với số có dấu
In màn hình (BIOS)
Dự trữ
IRQ0 của 8259 (ngắt định thời BIOS)
IRQ1 của 8259 (ngắt bàn phím BIOS)
IRQ2 của 8259 (dự trữ)
IRQ3 của 8259 (dự trữ cho cổng
COM2)
IRQ4 của 8259 (dự trữ cho cổng
COM1)
IRQ5 của 8259 (dự trữ cho đĩa cứng
MT XT)
IRQ6 của 8259 (đĩa mềm)
IRQ7 của 8259 (cổng LPT1)
Vào/ra cho Video (BIOS)
Kiểm tra cấu hình thiết bị (BIOS)
Kiểm tra kích thước bộ nhớ (BIOS)
13
14
15
F000:EC59
F000:E739
F000:F859
FEC59
FE739
FF859
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22
23
24
F000:E82E
F000:EFD2
F600:0000
F000:E6F2
F000:FE6E
0070:0140
F000:FF53
F000:F0A4
0000:0522
00E3:0B07
PSP:0000
Có thể đặt
lại
PSP:000A
PSP:000E
PSP:0012
FE82E
FEFD2
F6000
FE6F2
FFE6E
00840
FFF53
FF0A4
00522
01937
-----
-----
-----
-----
-----
Vào/ra bàn phím (BIOS)
Vào/ra máy in song song (BIOS)
Nạp ROM BASIC
Nạp bẫy-khởi động (BIOS)
Thời gian hệ thống (BIOS)
Điều khiển Ctrl-Brk
Kiểm soát bộ định thời
Bảng các tham số video
Bảng các tham số đĩa mềm
Bảng ký tự đồ hoạ ((DOS 3.0 trở
lên)
Kết thúc chương trình DOS
Gọi chức năng DOS
Địa chỉ kết thúc DOS
Địa chỉ thoát Ctrl-Brk DOS
Vec tơ xử lý lỗi
Vào/ra đĩa (BIOS)
Vào/ra RS-232 (BIOS)
Vào/ra cassette (BIOS)
40
41
42-
5F
60-
66
67
68-
7F
80-
85
86-
F0
F1-FF
25
26
27
28-
2E
2F
30-
3F
Có thể đặt
lại
Có thể đặt
lại
Có thể đặt
lại
Có thể đặt
lại
FEC5
9
FE40
1
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
-----
Vào/ra đĩa (XT)
Các tham số đĩa cứng
Dự trữ cho DOS
Người dùng định nghĩa
Quản lý bộ nhớ mở rộng
Không sử dụng
Dự trữ cho BASIC
Trình dịch BASIC
Không sử dụng
Đọc đĩa DOS
Viết đĩa tuyệt đối DOS
Kết thúc chương trình và thường
trú
Dự trữ cho DOS
Ngắt phép nhân
Dự trữ cho DOS
Phân loại ngắt
Ngắt được phân thành ngắt cứng và ngắt
mềm.
Ngắt cứng
Ngắt cứng là ngắt được kích hoạt bằng phần
cứng
80x86 có 3 chân phục vụ các ngắt cứng, đó
là:
INTR (interrupt request).
NMI (nonmaskable interrupt)
INTA (interrupt acknowledge).
INTR là chân vào, có thể bị che/hủy che bằng
các lệnh CLI/STI (Xoá/Lập cờ ngắt IF).
NMI cũng là tín hiệu vào, song ngắt này
không thể che/hủy che bằng các lệnh phần
mềm, kể cả lệnh CLI và STI.
Trình tự thực hiện ngắt cứng
INTR và NMI được kích hoạt bằng cách
đặt
5 V vào các chân này.
Khi được kích hoạt, 80x86 sẽ:
Kết thúc lệnh đang thực hiện
Cất FR và CS:IP của lệnh tiếp theo
vào ngăn xếp.
Nhảy đến bảng véc tơ ngắt và gọi
CS:IP ISR của ngắt đó.
Khi kết thúc ISR, CPU sẽ lấy lại các
byte FR và CS:IP từ ngăn xếp và tiếp
tục thực hiện chương trình từ vị trí bị
ngắt.
Gán địa chỉ ngắt cứng
NMI được gán INT 02.
Mỗi khi NMI được kích hoạt, CPU sẽ
nhảy đến ô nhớ 08 lưu địa chỉ ISR của
NMI.
INTR có thể được dùng cho nhiều ngắt
cứng.
Sử dụng chip điều khiển ngắt 8259 có
thể mở rộng số ngắt cứng có thể lên
đến 64 ngắt.
Mỗi chip 8259 có thể nối 8 ngắt cứng.
2 chip 8259 có thể quản lý đến 16
ngắt cứng.
Ngắt mềm
Ngắt được kích hoạt bằng phần
mềm được gọi là ngắt mềm.
Có thể sử dụng các lệnh gọi CALL,
INT nn để kích hoạt các ngắt mềm.
Ví dụ: INT 21, INT 10....
Ngoài các ngắt INT 0 - INT 04 đã
được định sẵn, các ngắt còn lại từ
INT 05 đến INT FF có thể được dùng
để thực hiện các ngắt cứng hoặc
ngắt mềm.
Ngắt và thanh ghi cờ
Có 2 cờ liên quan đến ngắt, đó là:
Cờ IF (Interrupt enable flag)
Cờ TF (trap flag).
Cờ ngắt được dùng để che hoặc cho
phép ngắt cứng nối tới INTR.
Nếu IF=0 mọi ngắt qua INTR đều bị
cấm.
Xóa IF=0 bằng lệnh CLI
Nếu IF=1 cho phép ngắt qua INTR
Đặt IF=1 bằng lệnh STI (set
interrupt)
Mét sè ng¾t thêng gÆp
INT 00 (phÐp chia 0)
Thuéc nhãm ng¾t ngo¹i lÖ (exception
interrupts).
Khi gÆp phÐp chia 0, CPU gäi INT 0.
INT0 hiÓn thÞ th«ng b¸o DIVIDE “
ERROR”
VÝ dô:
MOV AL,92
SUB CL,CL
DIV CL
INT 02 (ngắt không che được NMI)
Mỗi khi NMI được kích hoạt, CPU sẽ
nhảy đến ô nhớ 08 lưu địa chỉ ISR của
NMI và chạy ISR này.
INT 03 (điểm dừng)
Intel chỉ sử dụng mỗi ngắt INT 03
để thực hiện các điểm dừng.
ở chế độ chạy từng bước, thông
qua ngắt này có thể giám sát được
CPU và bộ nhớ hệ thống sau từng
lệnh được thực hiện.
INT 12: Kiểm tra dung lượng RAM
Chương trình POST BIOS (power-on
self-test) có chức năng kiểm tra và đếm
số K byte của bộ nhớ RAM quy ước được
lắp đặt rồi ghi vào các ngăn nhớ dành
riêng 00413H và 00414H trong vùng dữ
liệu BIOS.
INT 12H có nhiệm vụ là ghi giá trị đó
từ các ngăn nhớ 00413H và 00414H vào
thanh ghi AX.
ì
VÝ dô: ViÕt ®o¹n ch¬ng tr×nh
kh¶o s¸t bé nhí qui íc m¸y
tÝnh IBM PC XT.
INT 12H
INT 3H
INT 20 H