© DHBK 2005
1/Chapter
Nội dung môn học
1.
2.
3.
4.
5.
6.
7.
Giới thiệu chung về hệ vi xử lý
Bộ vi xử lý Intel 8088/8086
Lập trình hợp ngữ cho 8086
Tổ chức vào ra dữ liệu
Ngắt và xử lý ngắt
Truy cập bộ nhớ trực tiếp DMA
Các bộ vi xử lý trên thực tế
© DHBK 2005
2/Chapter
Chương 5: Ngắt và xử lý ngắt
•
•
•
•
•
•
Giới thiệu về ngắt
Đáp ứng của CPU khi có yêu cầu ngắt
Các thủ tục ngắt của người sử dụng
Xử lý ưu tiên ngắt
Mạch điều khiển ngắt ưu tiên 8259A
Ngắt trong máy tính IBM PC
© DHBK 2005
3/Chapter
Giới thiệu về ngắt
• 2 loai ngắt:
Ngắt cứng: tín hiệu yêu cầu ngắt từ
NMI (ngắt không che được)
Lỗi chẵn lẻ và các lỗi hệ thống nghiêm trọng khác (ví dụ: mất nguồn)
và INTR (ngắt che được)
Ngắt mềm: CPU thực hiện các lệnh ngắt INT N, 0=< N <=255
© DHBK 2005
4/Chapter
Giới thiệu về ngắt
© DHBK 2005
5/Chapter
Giới thiệu về ngắt
© DHBK 2005
6/Chapter
Đáp ứng của CPU khi có yêu cầu ngắt
• Bảng vector ngắt: 1 Kbytes 00000H đến 003FF H
256 vector ngắt
1 vector 4 bytes, chứa IP và CS của CTCPVN
32 vector đầu dành riêng cho Intel
224 vector sau dành cho người dùng
© DHBK 2005
7/Chapter
Đáp ứng của CPU khi có yêu cầu ngắt
Chương trình chính
CPU:
•Cất thanh ghi cờ F
•Xoá IF và TF
•Cất CS và IP
•lấy địa chỉ CTCPVN
CPU:
•Lấy lại IP và CS
•Lấy lại thanh ghi cờ F
CTCPVN
lệnh cất các
thanh ghi
lệnh lấy các
thanh ghi
IRET
© DHBK 2005
8/Chapter
Các thủ tục ngắt của người sử dụng
• Thiết lập vector ngắt:
Cất vector ngắt hiện tại:
Dùng hàm 35H của ngắt 21H của DOS
Vào: AH=35h, AL= số hiệu ngắt
Ra: ES:BX = địa chỉ đoạn : địa chỉ offset của CTCPVN
Cất ES và BX vào thanh ghi hoặc ô nhớ
Đưa vector của thủ tục ngắt của người sử dụng vào bảng vector
ngắt:
Dùng hàm 25H của ngắt 21H
Vào: AH=25H, AL= số hiệu ngắt, DS:DX= địa chỉ đoạn: địa chỉ offset cảu
CTCPVN của người sử dụng
Khôi phục lại vector cũ trước khi kết thúc CTCPVN của người sử
dụng
© DHBK 2005
9/Chapter
Các thủ tục ngắt của người sử dụng
.Model Small
.Stack 100
.Data
OLD_IP
OLD_CS
DW
DW
.Code
Main Proc
;Lấy vector cũ của ngắt 40H
MOV AH, 35H
MOV AL, 40H
INT
21H
MOV OLD_IP, BX
MOV OLD_CS, ES
;Thiết lập vector ngắt 40H mới
MOV DX, offset New40
MOV AX, CS
PUSH DS
MOV DS, AX
MOV AH, 25H
INT
21H
POP DS
Main Endp
New40
Proc
;các lệnh của CTCPVN
New40 Endp
End Main
?
?
© DHBK 2005
Xử lý ưu tiên ngắt
10
/Chapter5
• Ngắt có mức ưu tiên cao nhất sẽ được phục vụ trước
• Các mức ưu tiên:
Ngắt
Ngắt
Ngắt
Ngắt
nội bộ: INT 0, INT 1
không che được: NMI
che được INTR
mềm INT N
• CPU sẽ xử lý thế nào nếu CPU đang thực hiện phép chia
và số chia bằng 0 đồng thời có yêu cầu ngắt từ chân
INTR?
© DHBK 2005
Mạch điều khiển ngắt 8259A
11
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
12
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
13
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
14
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
15
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
16
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
17
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
18
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
19
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
20
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
21
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
22
/Chapter5
© DHBK 2005
Mạch điều khiển ngắt 8259A
23
/Chapter5
© DHBK 2005
24
/Chapter5
Các ngắt trong máy tính IBM/PC
Cascaded i8259As
INTR
IRQ0
IRQ1
IRQ2
IRQ3
IRQ4
IRQ5
IRQ6
IRQ7
Hi
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
Lo
INT
D0
IR0
D1
IR1
D2
IR2
D3
IR3
8259A D4
IR4
D5
IR5 Master D6
IR6
D7
IR7
INTA
SP/EN
CAS1
CAS0
CAS2
INT
D0
IR0
D1
IR1
D2
IR2
D3
IR3
D4
8259A
IR4
D5
IR5 Slave
D6
IR6
D7
IR7
INTA
SP/EN
INTA
© DHBK 2005
25
/Chapter5
Các ngắt trong máy tính IBM/PC
Priority
Highest
IRQ0
IRQ1
IRQ2
IRQ8
IRQ9
IRQ10
IRQ11
IRQ12
IRQ13
IRQ14
IRQ15
Use of PC/AT Interrupt
Timer 0
Keyboard
From slave 8259
Real time clock
*
C0-processor
Hard disk controller
IRQ3
IRQ4
IRQ5
IRQ6
Lowest
IRQ7
* IRQ9 interrupt is redirected to IRQ2 vector
COM2 port
COM1 port
LPT2
Floppydisk controller
LPT1