第九章-自陷程序和子程序(共14頁).doc
《第九章-自陷程序和子程序(共14頁).doc》由會員分享,可在線閱讀,更多相關(guān)《第九章-自陷程序和子程序(共14頁).doc(14頁珍藏版)》請在匯文網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-傾情為你奉上第九章 自陷程序和子程序9.1 LC-3自陷程序9.1.1 介紹 回憶先前一章的圖8.5的程序,為了成功地獲得從鍵盤輸入,程序員需要知道以下幾件事情(第8章):1、鍵盤與顯示器的硬件數(shù)據(jù)寄存器:顯示器的數(shù)據(jù)寄存器是為了能夠顯示一個提示符,而鍵盤數(shù)據(jù)寄存器則是讓程序知道到哪兒去尋找輸入的字符。2、鍵盤與顯示器的硬件狀態(tài)寄存器:顯示器的狀態(tài)寄存器是為了讓程序知道什么時候可以顯示提示符中的下一個字符,而鍵盤狀態(tài)寄存器則讓程序知道什么時候有人鍵入了一個字符。3、鍵盤輸入和執(zhí)行程序之間的異步關(guān)系。 這是大多數(shù)應(yīng)用程序員不知道的知識。實際上,在現(xiàn)實中,如果應(yīng)用程序員(或有時稱為“
2、用戶程序員”)必須在這個層面上理解輸入與輸出,那么在商業(yè)上將會很少運用輸入/輸出,程序員也會大大減少。 另外,如果允許用戶程序員直接訪問KBDR和KBSR等來實現(xiàn)輸入/輸出的行為,將會造成另外一個問題出現(xiàn)。輸入/輸出行為包含了被許多程序所共享的設(shè)備寄存器的使用,這就意味著,如果一個用戶程序員被允許訪問硬件寄存器,他/她沒有謹(jǐn)慎處理,這會給其他用戶程序制造混亂。這樣,讓用戶程序員訪問這些寄存器是不明智的。我們說硬件寄存器是有特權(quán)的,那些不擁有適當(dāng)特權(quán)級別的程序是不能訪問它們的。特權(quán)的概念帶來了一大堆麻煩。不幸的是,我們在這里不能做更多的涉及,把它留給以后做更認(rèn)真的處理?,F(xiàn)在,我們只是注意到這里有
3、用戶程序不能訪問的資源,只有那些被賦予足夠特權(quán)的程序才可以控制它們,而沒有特權(quán)的程序則不可以。說完這些,我們繼續(xù)手頭上的問題,如何“更好”的解決需要輸入和/或輸出的用戶程序。一個更簡單同時也是更安全的解決需要I/O的用戶程序問題的方案包括自陷(TRAP)指令和操作系統(tǒng)。操作系統(tǒng)擁有適當(dāng)?shù)奶貦?quán)級別。我們已經(jīng)在第5章介紹了TRAP指令。我們看到,在某些任務(wù)中,用戶程序通過調(diào)用TRAP指令使操作系統(tǒng)做這個工作。這樣,用戶程序不必要知道前面提到的復(fù)雜的細(xì)節(jié),并且其他用戶程序也會被保護(hù)起來,避免用戶程序員的不恰當(dāng)行為的后果。圖9.1顯示了一個用戶程序在到達(dá)地址x4000時,需要執(zhí)行一個輸入輸出任務(wù)。用戶
4、程序請求操作系統(tǒng)代表它完成這個任務(wù)。操作系統(tǒng)控制機(jī)器,處理TRAP指令指定的請求,然后把控制權(quán)返還給用戶程序。我們經(jīng)常把這個用戶程序的請求稱為服務(wù)調(diào)用或系統(tǒng)調(diào)用。9.1.2 TRAP機(jī)制 TRAP機(jī)制包括一些要素,如下:1、 一組由操作系統(tǒng)代表用戶程序去執(zhí)行的服務(wù)程序。它們是操作系統(tǒng)的一部分,在存儲器中的起始地址是任意的。LC-3被設(shè)計為總共可以識別256個服務(wù)程序。附錄A中的表A.2包含了LC-3現(xiàn)有的操作系統(tǒng)服務(wù)程序的完整列表。2、 這256個服務(wù)程序的起始地址的一張表。這張表被存儲在存儲單元的x0000到x00FF中。不同的公司對這張表有不同的命名,一家公司叫它系統(tǒng)控制塊,另一家公司叫它
5、Trap向量表。圖9.2提供了一個LC-3的Trap向量表的瞬態(tài)圖。在這些起始地址中,字符輸出服務(wù)程序(單元x0430)包含在單元x0021中;鍵盤輸入服務(wù)程序(單元x04A0)包含在單元x0023中,還有,停機(jī)服務(wù)程序(單元xFD70)包含在單元x0025中。3、TRAP指令。當(dāng)用戶程序希望讓操作系統(tǒng)代表用戶程序執(zhí)行某一個服務(wù)程序,然后把控制權(quán)交還給用戶程序時,用戶程序使用TRAP指令。4、返回用戶程序的一個鏈接。服務(wù)程序必須有一種可以把控制權(quán)交還給用戶程序的機(jī)制。9.1.3 TRAP指令TRAP指令通過做兩件事實現(xiàn)服務(wù)程序的執(zhí)行:l 它根據(jù)它的trap向量,改變PC的值為相應(yīng)的服務(wù)程序的首
6、地址。l 它提供了一個返回調(diào)用TRAP指令的程序的路徑。這個返回路徑指的是鏈接。TRAP指令說明如下。TRAP指令由兩部分組成:TRAP的操作碼1111和trap向量(7:0位)。11:8 位必須為0。trap向量標(biāo)識了用戶程序希望操作系統(tǒng)執(zhí)行的程序。在下面的例子中,trap向量是x23。15141312111098765432101111000000100011TRAPTRAP向量在TRAP指令的指令周期的執(zhí)行階段,做4件事:1、 8位的trap向量通過零擴(kuò)展到16位而形成一個地址,該地址被加載到MAR。對于trap向量x23,地址就是x0023,它是TRAP向量表中的一條記錄的地址;2、
7、TRAP向量表位于存儲單元x0000到x00FF中。位于x0023中的紀(jì)錄被讀取,它的內(nèi)容是x04A0(如圖9.2),被加載到MDR中;3、 通用寄存器R7被加載為PC中的當(dāng)前內(nèi)容。這會給用戶程序提供一個返回路徑,這一點馬上就會變得更清楚;4、 MDR的內(nèi)容被加載到PC中,完成這個指令周期。由于PC現(xiàn)在包含了x04A0,所以處理從存儲單元x04A0繼續(xù)下去。地址x04A0是從鍵盤輸入一個字符的操作系統(tǒng)服務(wù)程序的起始地址。我們說trap向量指向TRAP程序的起始地址。因此,TRAP x23使操作系統(tǒng)開始執(zhí)行鍵盤輸入服務(wù)程序。為了返回到位于用戶程序中的TRAP指令之后的指令(在執(zhí)行完服務(wù)程序之后)
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 第九 程序 子程序 14