8086CPU 可以表示256種中斷信息的來(lái)源
- 中斷類(lèi)型碼為一個(gè)字節(jié)型數(shù)據(jù)(8位 byte)
內(nèi)中斷
- CPU 用中斷類(lèi)型碼在中斷向量表中找到相應(yīng)的中斷處理程序的入口地址
- 入口地址由 段地址:偏移地址 組成,占用 2個(gè)字單元(即4個(gè)字節(jié)、4個(gè)內(nèi)存單元)
-
中斷向量表 放在 內(nèi)存 之中:8086CPU 規(guī)定將內(nèi)存地址
0000:0000~0000:03FF的1024(256 x 4 = 1024)個(gè)內(nèi)存單元用來(lái)存放中斷向量表
檢測(cè)點(diǎn) 12.1

檢測(cè)點(diǎn)12.1
存儲(chǔ)N號(hào)中斷源對(duì)應(yīng)的中斷程序入口
| 高位地址 | 低位地址 | |
|---|---|---|
| 偏移地址 | 4N+1 | 4N |
| 段地址 | 4N+3 | 4N+2 |
8086CPU 中斷過(guò)程
(1)(從中斷信息中)取得中斷類(lèi)型碼 N;
(2)標(biāo)志寄存器的值入棧 pushf
(3)設(shè)置 TF = 0 ,IF = 0
(4)CS的內(nèi)容入棧 push CS
(5)IP的內(nèi)容入棧 push IP
(6)從內(nèi)存地址為 4N+2 以及 4N 取讀取中斷處理程序 (IP) = (4N) , (CS) = (4N+2)
iret 指令
-
iret通常和硬件自動(dòng)完成的中斷過(guò)程配合使用
iret
等價(jià)于
pop IP
pop CS
popf
單步中斷
CPU執(zhí)行完一條指令后,此刻檢測(cè)到 TF = 1 ,進(jìn)入單步中斷
單步中斷的類(lèi)型碼為 1
所引發(fā)的中斷過(guò)程如下:
(1)(從中斷信息中)取得中斷類(lèi)型碼 N = 1
(2)標(biāo)志寄存器的值入棧 pushf
(3)設(shè)置 TF = 0 ,IF = 0
(4)CS的內(nèi)容入棧 push CS
(5)IP的內(nèi)容入棧 push IP
(6)從內(nèi)存地址為 4N+2 以及 4N 取讀取中斷處理程序 (IP) = (4x1) , (CS) = (4x1+2)
-
TF = 0避免CPU無(wú)限執(zhí)行單步中斷
響應(yīng)中斷
- 執(zhí)行完 SS寄存器 相關(guān)的指令后, 即便發(fā)生中斷,CPU也不會(huì)響應(yīng)
- 連續(xù)設(shè)置 SS 和 SP 才可以指向正確的棧頂?shù)刂?/li>
mov ax,1000H
------------------
| mov ss,ax |
| mov sp,16 |
------------------
一定要挨著寫(xiě)!