導航:首頁 > 操作系統 > 單片機匯編的中斷程序

單片機匯編的中斷程序

發布時間:2023-06-07 16:57:31

1. 匯編語言的中斷服務的中斷服務程序是什麼

嗯,我猜你問的是PC的,不是單片機
一、匯編語言的中斷分以下幾種:
1.BIOS中斷,這是固化到BIOS程序中的,每次開機BIOS會自動載入到指定內存
2.186下的DOS中斷,在DOS系統被載入後,系統會延用BIOS的中斷向量,並向裡面添加一些新的向量,這些功能便是DOS系統自帶的中斷服務程序
3.286及以上的系統中斷,PC會進入保護模式,在OS被載入後,中斷由IDT控制,這一機制類似於中斷向量表,只不過中斷向量換成了選擇子。這樣的中斷機制對不同型號的CPU有略微的差別,這里不細說了,我自己也沒全弄明白。

二、中斷實現的方式(8086下的普通中斷)
聽說過「優先順序編碼器」沒?——如果同時有兩個信號被接收,會指定某一個信號的優先順序高,先執行它。中斷就是類似的處理方法。
當CPU獲取到某一高操作優先順序的信號時(比如時鍾,每固定時間就會觸發一次;比如鍵盤響應,用戶希望通過Ctrl+C來退出任何正在執行的DOS程序),CPU會將當前正在執行的程序掛起來,轉而去處理該信號(類似於Call,但略有不同,你看的書應該會講到)。
處理中斷時,系統會將其解釋為一個標號,比如int 9h、int 21h等等。這個標號是一個序號,在內存某處存放著連續的一個表格,這個標號便是表格中的「行號」,只不過,每一行是兩列,包括了該中斷的處理程序的段基址和偏移量。中斷向量表是從0000:0000開始的,每4位元組為一個表項。中斷標號x4就是對應的中斷向量表項所存的地址,高地址是基地址,低地址是偏移。
這么說不知道你懂不懂。。。
反正總結一下你的問題吧,中斷服務程序是載入到內存中的,它在載入前可能是存在BIOS晶元上,也可能是存在硬碟里的;中斷向量表裡只能寫上中斷處理程序的入口地址,要知道每個表項只有4位元組;具體的中斷服務程序,我不信你學匯編的書上不講,我大概講一下:CPU的INTR引腳獲得了中斷信號,得到了標號,比方說是5號,中斷向量表項為0000:000A,讀取這個內存,得到中斷程序入口地址比方說是AAAA:BBBB,那麼它會將當前的CS/IP、Flags寄存器入棧,然後轉到AAAA:BBBB處去執行一直到iret指令返回原任務(或許該中斷結束了這個任務,就不會返回了)。

至於保護模式的中斷,相信你暫時還沒遇到。到後面還有操控8259A晶元來實現高級中斷的,這個就不是一般需要學的了。

2. 用單片機匯編語言編寫中斷程序

ORG 0000H
LJMP START
ORG 000BH
LJMP Timer0Interrupt

START:
MOV SP,#60H
LCALL InitTimer0

LOOP:
;add your code here!
LJMP LOOP

InitTimer0:
MOV TMOD,#01H
MOV TH0,#0FCH
MOV TL0,#18H
SETB EA
SETB ET0
SETB TR0
RET

Timer0Interrupt:
PUSH DPH
PUSH DPL
PUSH ACC
MOV TH0,#0FCH
MOV TL0,#18H
CPL P1.0
POP ACC
POP DPL
POP DPH
RETI

END

這是定慎渣時器0的一個1ms中運汪斷寬悄悄一次的程序 在P1.0埠輸出1KHz方波

閱讀全文

與單片機匯編的中斷程序相關的資料

熱點內容
c語言經過編譯的後綴 瀏覽:875
怎麼做一款app 瀏覽:969
小紅書看過的視頻在哪個文件夾 瀏覽:536
中興雲伺服器市場份額 瀏覽:407
內網系統報文加密 瀏覽:210
centeroslinux 瀏覽:910
xcode如何編譯大型項目 瀏覽:59
平安京編譯器 瀏覽:869
把文件夾名稱改成符號 瀏覽:128
iis如何啟動命令 瀏覽:801
單片機驅動電機原理 瀏覽:905
app掃哈羅單車怎麼操作 瀏覽:509
電腦版吃雞為什麼登錄伺服器忙 瀏覽:982
linux查埠命令 瀏覽:489
linuxhttp客戶端 瀏覽:820
linux下運行jar包 瀏覽:435
彩虹彈彈解壓球視頻 瀏覽:83
pdf怎樣轉換成word格式 瀏覽:673
怎麼查找解壓文件在哪裡 瀏覽:852
德語小說pdf 瀏覽:125