8086汇编学习笔记9-中断
中斷信號(hào)可以來(lái)自CPU內(nèi)部或外部。
?
一. 8086CPU內(nèi)部中斷信號(hào)有
(1) 除法錯(cuò)誤
(2) 單步執(zhí)行
(3) 執(zhí)行into指令
(4) 執(zhí)行int指令
1. 中斷碼
8086用一個(gè)字節(jié)來(lái)描述中斷碼,可以表示256中不同的中斷信息。
除法錯(cuò)誤中斷碼為0
單步執(zhí)行中斷碼為1
執(zhí)行into指令中斷碼為4
執(zhí)行int n指令中斷碼為n
2. 中斷向量表
用來(lái)存放中斷碼對(duì)應(yīng)中斷處理程序的入口地址,一個(gè)地址包括段地址和偏移地址,高地址存放段地址,低地址存放偏移地址,需要四個(gè)字節(jié)來(lái)存儲(chǔ)中斷處理程序的入口地址,256個(gè)中斷信號(hào)處理程序需要1024個(gè)字節(jié)來(lái)存儲(chǔ)。8086CPU中斷向量表存放在0地址處開(kāi)始的1024個(gè)存儲(chǔ)單元中,地址為0000:0000~0000:
03fff。
3. 中斷處理程序
CPU在接收到中斷信號(hào)后,停止當(dāng)前正在執(zhí)行的程序,跳轉(zhuǎn)到由中斷號(hào)對(duì)應(yīng)的中斷向量表地址處,去執(zhí)行中斷處理程序。
4. 中斷過(guò)程(硬件自動(dòng)完成)
(1) 由中斷信息得到中斷碼
(2) 標(biāo)志寄存器入棧
(3) 設(shè)置標(biāo)志寄存器TF和IF為0
(4) cs入站
(5) ip入站
(6) 用中斷向量表中地址設(shè)置cs和ip
5. 而iret指令是ip出棧,cs出棧和標(biāo)志寄存器出棧
自己編寫(xiě)中斷處理函數(shù),只需要將中斷處理函數(shù)的地址存放到相應(yīng)的中斷向量表處,然后調(diào)用iret指令返回。
6. 單步中斷,CPU在執(zhí)行完一條指令后,如果檢測(cè)到標(biāo)志寄存器TF位為1,則產(chǎn)生單步中斷,觸發(fā)中斷過(guò)程。
7. int指令,直接觸發(fā)一個(gè)n號(hào)中斷
內(nèi)部中斷也就是通常所說(shuō)的軟中斷。
?
二. 8086CPU外部中斷,也就是通常所說(shuō)的硬中斷,理解什么是軟中斷什么是硬中斷,就看是否是由電平信號(hào)去觸發(fā)中斷過(guò)程。
1. 可屏蔽中斷,CPU根據(jù)標(biāo)志寄存器IF位決定是否響應(yīng)中斷,IF=1,響應(yīng)中斷,IF=0,不響應(yīng)中斷。
2. 不可屏蔽中斷,CPU必須響應(yīng)中斷。總結(jié)
以上是生活随笔為你收集整理的8086汇编学习笔记9-中断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 8086汇编学习笔记10-端口
- 下一篇: 汇编语言笔记17-使用BIOS进行键盘输