資源描述:
《1貼子主題 有關(guān)TF》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、1.貼子主題:有關(guān)TF002xxx(2003/05/1810:55am)關(guān)于TF標(biāo)志位的設(shè)置和清除是由程序來做的,沒有特定的指令可以完成。書上P464倒數(shù)第二段說在中斷服務(wù)程序返回前TF位既不是1也不是0,當(dāng)指令I(lǐng)RET執(zhí)行時(shí)才把TF位改為新的值。我想問的是thenewstate是什么?是在從中斷服務(wù)子程序返回時(shí)從堆棧中POP出的原來的FLAG原封不動(dòng)的值,還是在返回的時(shí)刻又有新的中斷來時(shí),原來的FLAG不POP出來,而是再裝入這個(gè)新的中斷的FLAG標(biāo)志?后面的這一點(diǎn)也就是P463上面第三行的語句。002
2、yyy(2003/05/1811:30am)我是這么想的,不知對(duì)不對(duì):平時(shí)TF應(yīng)該為“0”吧,否則不是單步執(zhí)行方式了嗎?TRON和TROFF是對(duì)堆棧中的flags的TF位執(zhí)行的,但因書上example12-1,example12-2兩個(gè)程序的末尾都是“IRET”所以會(huì)再把它返回給當(dāng)前的flagregister--進(jìn)行中斷時(shí)的flagregister?我對(duì)意思是,設(shè)置TF位的狀態(tài)是對(duì)于中斷服務(wù)子程序來說的,如果你想單步執(zhí)行你的中斷服務(wù)子程序,那么進(jìn)行TRON,否則TROFF。qbxiong(2003/05/
3、1910:25am)兩位充分利用書上的例子來獲取更多實(shí)用技術(shù)的做法值得提倡。對(duì)于標(biāo)志寄存器中的中斷標(biāo)志IF,設(shè)有專門的指令STI將其置位,專門的指令CLI將其復(fù)位;但是,卻并沒有類似的指令,可以直接地操縱標(biāo)志寄存器中的陷阱標(biāo)志TF。不過,這并不意味著就沒有辦法可以改變標(biāo)志寄存器中T位的狀態(tài)了;辦法總比問題多:書上的例子是,因中斷時(shí)標(biāo)志寄存器自動(dòng)地壓入了堆棧,故可以在中斷服務(wù)程序中,用BP間址找到標(biāo)志寄存器存放的內(nèi)存單元,并用OR指令將其中的對(duì)應(yīng)于TF的第8位置位;這樣,當(dāng)IRET指令使堆棧中存放的原標(biāo)志寄
4、存器內(nèi)容自動(dòng)地彈回到CPU中去時(shí),其中的TF已是新的狀態(tài)“1”了。以上是464頁(yè)例12-1標(biāo)號(hào)為TRON的中斷服務(wù)程序。同一頁(yè)例12-2標(biāo)號(hào)為TROFF的中斷服務(wù)程序,原理與之相同,不同的只是用AND指令將其中的第8位復(fù)位。推而廣之,這種將CPU或I/O接口中的寄存器,先復(fù)制到內(nèi)存中,在內(nèi)存中改變其中的某些位,然后再?gòu)?fù)制回去,從而改變了CPU或I/O接口中寄存器的相應(yīng)位的狀態(tài),不失為一種普適的做法。其實(shí),在我們課本已經(jīng)接觸到的例子中,也還有這樣的做法,只是沒有如此明講而已。哪位還能找到其它的例子嗎?002
5、xxx(2003/05/1912:09pm)那么當(dāng)從中斷服務(wù)程序返回時(shí),如果有新的中斷打斷它,此時(shí)FLAG還從堆棧中彈出來嗎?002yyy(2003/05/1907:22pm)因?yàn)橹耙呀?jīng)清了IF,所以此時(shí)應(yīng)該不會(huì)響應(yīng)新的中斷(我認(rèn)為這里處于p462最下端的第二步)。2.貼子主題:書474頁(yè)圖12-13關(guān)于用緩沖器擴(kuò)充中斷結(jié)構(gòu)的方法有個(gè)疑問002zzz(2003/05/1712:43pm)器件74ALS244為什么八個(gè)端口不各接一個(gè)IR引腳,這樣不就可以擴(kuò)充到8個(gè),而書中是拿一個(gè)通過上拉電阻接電源,這樣不
6、就少接一個(gè)IR了嗎?它有什么特殊的作用嗎?qbxiong(2003/05/1705:00pm)問得好。請(qǐng)?jiān)僮x一下474頁(yè)最后那個(gè)自然段。002uuu(2003/05/1709:35pm)我有同樣的問題,而且最后一個(gè)自然段的說明我沒有看明白.書上說“如果兩個(gè)或者更多的中斷請(qǐng)求連續(xù)發(fā)生,那么就產(chǎn)生一個(gè)新的中斷向量.當(dāng)/IR0,/IR1同時(shí)發(fā)出中斷請(qǐng)求那么FCH為新的中斷向量號(hào),而且若/IR0收到的中斷優(yōu)先級(jí)比較高的話那么這個(gè)新的地址FCH就作為為/IR0的中斷向量地址”我的問題是下一句,為什么說“theent
7、iretophalfofthevectortableanditsinterruptvectorsmustbeusedtoaccommodateallpossibleconditionsofthesesseveninterruptrequestinputs”它這里的128個(gè)向量是由這7個(gè)中斷輸入組合形成的嗎?就這道例題而言,它的中斷向量表應(yīng)該是怎樣的?而且我想不出這種處理多個(gè)中斷輸入的方式有什么效率可言.qbxiong(2003/05/1809:36am)討論已漸入佳境,002uuu已注意到“theenti
8、retophalfofthevectortable”的問題。還請(qǐng)注意,002zzz首問中的“書中是拿一個(gè)通過上拉電阻接電源”,這“一個(gè)”,從圖中看是D7,決非偶然。大家不妨翻回課本第459頁(yè),看一下倒數(shù)第2個(gè)自然段,也就是“InterruptVectors”小節(jié)中的第2段,或許能悟出其中的道理了吧。002uuu看書很仔細(xì),有意義的詞都不放過,這是值得提倡的學(xué)習(xí)精神,問到的“效率”,可能是指474頁(yè)最后那個(gè)自然段中的“cost-