|
在內(nèi)存中開(kāi)辟棧保護(hù)區(qū),對(duì)中斷現(xiàn)場(chǎng)進(jìn)行保護(hù),然而在C中這些工作編譯器已經(jīng)做了,但是匯編要自己做保護(hù)。值得注意的是PC指針的低位已經(jīng)壓入硬件棧中無(wú)需保護(hù),只需要保護(hù)當(dāng)前的狀態(tài)字和累加器還有高位的PC指針值就好了,有的堆?梢杂肞USH和POP處理,有的卻只能開(kāi)辟內(nèi)存,但是他們的共同點(diǎn)就是都會(huì)對(duì)PC指針壓棧處理,不這樣也談不上跳轉(zhuǎn)和斷點(diǎn)了,由此可見(jiàn)用匯編寫(xiě)一段保護(hù)代碼也是很慎重的事情,當(dāng)然取決于自己的想法,對(duì)就是對(duì),錯(cuò)就是錯(cuò),事實(shí)騙不了人吧我想。有些重要的變量在中斷現(xiàn)場(chǎng)也應(yīng)該做保護(hù),這就看需要,這只是最基本的,對(duì)于用匯編寫(xiě)程序來(lái)說(shuō)沒(méi)有什么函數(shù)和變量,無(wú)窮無(wú)盡的地址,內(nèi)存是地址,程序也是地址,局部變量全局變量的分配釋放都是自己控制,函數(shù)也是地址等等,用匯編編寫(xiě)驅(qū)動(dòng)是極好的,因?yàn)榭刂品浅>珳?zhǔn),精確到每條指令,非常接近與物理狀態(tài),但是用匯編編寫(xiě)算法就........,就算是一個(gè)很簡(jiǎn)單的算法,就夠折騰好一會(huì)的,程序的靈魂是算法,故而還是選擇C語(yǔ)言吧,但是學(xué)點(diǎn)匯編是絕對(duì)沒(méi)有壞處的,匯編使你看到的計(jì)算機(jī)更加的清晰。夫鵠不日浴而白,烏不日黔而黑!不知鵠歟而或?yàn)鯕e?嘻!
;///////////////////////// Interrupt_Handler_Start///////////////////////////////////***********************************************
;/////////////////////////////////////////////////////////////***********************************************
INTEERUPUT_HIGHT:
MOVWF W_TEMP
SWAPF STATUS,0
CLRF STATUS
MOVWF STATUS_TEMP ;中斷現(xiàn)場(chǎng)壓入內(nèi)存
MOVF PCLATH,0
MOVWF PCLATH_TEMP
CLRF PCLATH
;............(中斷程序的核心部分)
;choose branch
;............(中斷程序的核心部分)
MOVF PCLATH_TEMP,0
MOVWF PCLATH
SWAPF STATUS_TEMP,0
MOVWF STATUS; ;中斷現(xiàn)場(chǎng)彈出內(nèi)存
SWAPF W_TEMP,1;
SWAPF W_TEMP,0;
RETURN
;/////////////////////////Interrupt_Handler end///////////////////////////////////***********************************************
;/////////////////////////////////////////////////////////////***********************************************
|
|