亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

《單片機(jī)與控制技術(shù)(shù)》實(shí)驗(yàn)指導(dǎo)書(shū)

  • 匯編+保護模式+教程

    九.輸入/輸出保護為了支持多任務(wù),80386不僅要有效地實現(xiàn)任務(wù)隔離,而且還要有效地控制各任務(wù)的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護。 這里下載本文源代碼。 <一>輸入/輸出保護80386采用I/O特權(quán)級IPOL和I/O許可位圖的方法來控制輸入/輸出,實現(xiàn)輸入/輸出保護。 1.I/O敏感指令輸入輸出特權(quán)級(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關(guān)的指令和訪問I/O空間中所有地址的最外層特權(quán)級。IOPL的值在如下圖所示的標志寄存器中。 標  志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規(guī)定了I/O空間中的哪些地址可以由在任何特權(quán)級執(zhí)行的程序所訪問。I/O許可位圖在任務(wù)狀態(tài)段TSS中。 I/O敏感指令 指令 功能 保護方式下的執(zhí)行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設(shè)置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數(shù)據(jù) CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關(guān),并且只有在滿足所列條件時才可以執(zhí)行,所以把它們稱為I/O敏感指令。從表中可見,當前特權(quán)級不在I/O特權(quán)級外層時,可以正常執(zhí)行所列的全部I/O敏感指令;當特權(quán)級在I/O特權(quán)級外層時,執(zhí)行CLI和STI指令將引起通用保護異常,而其它四條指令是否能夠被執(zhí)行要根據(jù)訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執(zhí)行,那么將引起出錯碼為0的通用保護異常。 由于每個任務(wù)使用各自的EFLAGS值和擁有自己的TSS,所以每個任務(wù)可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實模式下總是可執(zhí)行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執(zhí)行是很不方便的,不能滿足實際要求需要。因為這樣做會使得在特權(quán)級3執(zhí)行的應(yīng)用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實際需要與此剛好相反,只允許任務(wù)甲的應(yīng)用程序訪問部分I/O地址,只允許任務(wù)乙的應(yīng)用程序訪問另一部分I/O地址,以避免任務(wù)甲和任務(wù)乙在訪問I/O地址時發(fā)生沖突,從而避免任務(wù)甲和任務(wù)乙使用使用獨享設(shè)備時發(fā)生沖突。 因此,在IOPL的基礎(chǔ)上又采用了I/O許可位圖。I/O許可位圖由二進制位串組成。位串中的每一位依次對應(yīng)一個I/O地址,位串的第0位對應(yīng)I/O地址0,位串的第n位對應(yīng)I/O地址n。如果位串中的第位為0,那么對應(yīng)的I/O地址m可以由在任何特權(quán)級執(zhí)行的程序訪問;否則對應(yīng)的I/O地址m只能由在IOPL特權(quán)級或更內(nèi)層特權(quán)級執(zhí)行的程序訪問。如果在I/O外層特權(quán)級執(zhí)行的程序訪問位串中位值為1的位所對應(yīng)的I/O地址,那么將引起通用保護異常。 I/O地址空間按字節(jié)進行編址。一條I/O指令最多可涉及四個I/O地址。在需要根據(jù)I/O位圖決定是否可訪問I/O地址的情況下,當一條I/O指令涉及多個I/O地址時,只有這多個I/O地址所對應(yīng)的I/O許可位圖中的位都為0時,該I/O指令才能被正常執(zhí)行,如果對應(yīng)位中任一位為1,就會引起通用保護異常。 80386支持的I/O地址空間大小是64K,所以構(gòu)成I/O許可位圖的二進制位串最大長度是64K個位,即位圖的有效部分最大為8K字節(jié)。一個任務(wù)實際需要使用的I/O許可位圖大小通常要遠小于這個數(shù)目。 當前任務(wù)使用的I/O許可位圖存儲在當前任務(wù)TSS中低端的64K字節(jié)內(nèi)。I/O許可位圖總以字節(jié)為單位存儲,所以位串所含的位數(shù)總被認為是8的倍數(shù)。從前文中所述的TSS格式可見,TSS內(nèi)偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達8K字節(jié),所以開始偏移應(yīng)小于56K,但必須大于等于104,因為TSS中前104字節(jié)為TSS的固定格式,用于保存任務(wù)的狀態(tài)。 1.I/O訪問許可檢查細節(jié)保護模式下處理器在執(zhí)行I/O指令時進行許可檢查的細節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉(zhuǎn)步驟(8);(2)取得I/O位圖開始偏移;(3)計算I/O地址對應(yīng)位所在字節(jié)在I/O許可位圖內(nèi)的偏移;(4)計算位偏移以形成屏蔽碼值,即計算I/O地址對應(yīng)位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯碼為0的通用保護故障;(6)若不越界,則從位圖中讀對應(yīng)字節(jié)及下一個字節(jié);(7)把讀出的兩個字節(jié)與屏蔽碼進行與運算,若結(jié)果不為0表示檢查未通過,則產(chǎn)生出錯碼為0的通用保護故障;(8)進行I/O訪問。設(shè)某一任務(wù)的TSS段如下: TSSSEG                  SEGMENT PARA USE16                        TSS     <>             ;TSS低端固定格式部分                        DB      8 DUP(0)       ;對應(yīng)I/O端口00H—3FH                        DB      10000000B      ;對應(yīng)I/O端口40H—47H                        DB      01100000B      ;對用I/O端口48H—4FH                        DB      8182 DUP(0ffH) ;對應(yīng)I/O端口50H—0FFFFH                        DB      0FFH           ;位圖結(jié)束字節(jié)TSSLen                  =       $TSSSEG                  ENDS 再假設(shè)IOPL=1,CPL=3。那么如下I/O指令有些能正常執(zhí)行,有些會引起通用保護異常:                         in      al,21h  ;(1)正常執(zhí)行                        in      al,47h  ;(2)引起異常                        out     20h,al  ;(3)正常實行                        out     4eh,al  ;(4)引起異常                        in      al,20h  ;(5)正常執(zhí)行                        out     20h,eax ;(6)正常執(zhí)行                        out     4ch,ax  ;(7)引起異常                        in      ax,46h  ;(8)引起異常                        in      eax,42h ;(9)正常執(zhí)行 由上述I/O許可檢查的細節(jié)可見,不論是否必要,當進行許可位檢查時,80386總是從I/O許可位圖中讀取兩個字節(jié)。目的是為了盡快地執(zhí)行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個字節(jié)。例如,上面的第(8)條指令要對I/O位圖中的兩個位進行檢查,其低位是某個字節(jié)的最高位,高位是下一個字節(jié)的最低位。可見即使只要檢查兩個位,也可能需要讀取兩個字節(jié)。另一方面,最多檢查四個連續(xù)的位,即最多也只需讀取兩個字節(jié)。所以每次要讀取兩個字節(jié)。這也是在判別是否越界時再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節(jié)時產(chǎn)生越界,必須在I/O許可位圖的最后填加一個全1的字節(jié),即0FFH。此全1的字節(jié)應(yīng)填加在最后一個位圖字節(jié)之后,TSS界限范圍之前,即讓填加的全1字節(jié)在TSS界限之內(nèi)。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當TSS的界限大于I/O許可位圖開始偏移加8K時,I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進行。當TSS的界限不大于I/O許可位圖開始偏移加8K時,I/O許可位圖有效部分就不到8K字節(jié),于是對較小I/O地址訪問的許可檢查根據(jù)位圖進行,而對較大I/O地址訪問的許可檢查總被認為不可訪問而引起通用保護故障。因為這時會發(fā)生字節(jié)越界而引起通用保護異常,所以在這種情況下,可認為不足的I/O許可位圖的高端部分全為1。利用這個特點,可大大節(jié)約TSS中I/O許可位圖占用的存儲單元,也就大大減小了TSS段的長度。 <二>重要標志保護輸入輸出的保護與存儲在標志寄存器EFLAGS中的IOPL密切相關(guān),顯然不能允許隨便地改變IOPL,否則就不能有效地實現(xiàn)輸入輸出保護。類似地,對EFLAGS中的IF位也必須加以保護,否則CLI和STI作為敏感指令對待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對EFLAGS中的這三個字段的處理比較特殊,只有在較高特權(quán)級執(zhí)行的程序才能執(zhí)行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權(quán)級下對這三個字段的處理情況。 不同特權(quán)級對標志寄存器特殊字段的處理 特權(quán)級 VM標志字段 IOPL標志字段 IF標志字段 CPL=0 可變(初POPF指令外) 可變 可變 0  不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權(quán)級0執(zhí)行的程序才可以修改IOPL位及VM位;只能由相對于IOPL同級或更內(nèi)層特權(quán)級執(zhí)行的程序才可以修改IF位。與CLI和STI指令不同,在特權(quán)級不滿足上述條件的情況下,當執(zhí)行POPF指令和IRET指令時,如果試圖修改這些字段中的任何一個字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標志中的VM位總為0。 <三>演示輸入輸出保護的實例(實例九)下面給出一個用于演示輸入輸出保護的實例。演示內(nèi)容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權(quán)指令引起的異常;使用段間調(diào)用指令CALL通過任務(wù)門調(diào)用任務(wù),實現(xiàn)任務(wù)嵌套。 1.演示步驟實例演示的內(nèi)容比較豐富,具體演示步驟如下:(1)在實模式下做必要準備后,切換到保護模式;(2)進入保護模式的臨時代碼段后,把演示任務(wù)的TSS段描述符裝入TR,并設(shè)置演示任務(wù)的堆棧;(3)進入演示代碼段,演示代碼段的特權(quán)級是0;(4)通過任務(wù)門調(diào)用測試任務(wù)1。測試任務(wù)1能夠順利進行;(5)通過任務(wù)門調(diào)用測試任務(wù)2。測試任務(wù)2演示由于違反I/O許可位圖規(guī)定而導致通用保護異常;(6)通過任務(wù)門調(diào)用測試任務(wù)3。測試任務(wù)3演示I/O敏感指令如何引起通用保護異常;(7)通過任務(wù)門調(diào)用測試任務(wù)4。測試任務(wù)4演示特權(quán)指令如何引起通用保護異常;(8)從演示代碼轉(zhuǎn)臨時代碼,準備返回實模式;(9)返回實模式,并作結(jié)束處理。

    標簽: 匯編 保護模式 教程

    上傳時間: 2013-12-11

    上傳用戶:nunnzhy

  • 《51單片機C語言應(yīng)用程序?qū)嵗v》

    /* 4位8段數(shù)碼管分別動態(tài)顯示“1234”, */   #include "7LEDShow.h"   void main() {        DIGPORT = 0;                                    // 關(guān)閉顯示               TMOD = 0x01;                                         // T0工作方式1          /* 2ms 定時設(shè)置 */        time0_tmp = 65536-time0*fosc/12;        TH0 = (time0_tmp/256);        TL0 = (time0_tmp%256);               TR0 = 1;        ET0 = 1;        EA = 1;               digbit = 0x01;                                         // 從第一位數(shù)碼管開始

    標簽: 51單片機C語言 應(yīng)用程序

    上傳時間: 2013-12-12

    上傳用戶:kachleen

  • 數(shù)字信號處理實踐方法

    《數(shù)字信號處理實踐方法(第二版)》根據(jù)實際工程應(yīng)用和具體實例,詳細介紹了數(shù)字信號處理(DSP)領(lǐng)域內(nèi)的基本概念和相關(guān)技術(shù)。全書共分為14章,首先講解了DSP的基本概念及其應(yīng)用,并從實際的例子出發(fā),闡述了DSP的一些基本內(nèi)容,如信號的抽樣、量化及其在實時DSP上的內(nèi)涵。然后,作者介紹了離散變換(DFT和FFT),離散時間信號與系統(tǒng)分析的工具(z變換),以及DSP的基本運算(相關(guān)和卷積),并分析了數(shù)字濾波器設(shè)計的實際問題。《數(shù)字信號處理實踐方法(第二版)》還介紹了多抽樣率數(shù)字信號處理、自適應(yīng)數(shù)字濾波器、譜估計及其分析等現(xiàn)代數(shù)字信號處理理論,最后討論了通用和專用數(shù)字信號處理器、定點DSP系統(tǒng)有限字長效應(yīng)分析及DSP的應(yīng)用和設(shè)計實例。另外,書中還提供了有關(guān)范例和實驗的MATLAB實現(xiàn)方法。   《數(shù)字信號處理實踐方法(第二版)》可作為通信與電子信息類專業(yè)高年級本科生和研究生的教材或教學參考書,而且對于相關(guān)學科的工程技術(shù)人員也具有很好的參考價值。

    標簽: 數(shù)字信號處理 實踐

    上傳時間: 2013-12-30

    上傳用戶:assef

  • 高級FPGA設(shè)計 結(jié)構(gòu)、實現(xiàn)和優(yōu)化

      高級FPGA設(shè)計結(jié)構(gòu)、實現(xiàn)和優(yōu)化   作者:(美)克里茲著,孟憲元譯;出版社:機械工程出版社   學FPGA不一定需要開發(fā)板,自己學會modelsim仿真、寫testbench,用PC機仿真就能有不少長進。這些都看完,剩下的就靠做項目自己領(lǐng)悟,再加上高手指點。   《高級FPGA設(shè)計:結(jié)構(gòu)、實現(xiàn)也優(yōu)化》以FPGA設(shè)計為主題,覆蓋了實踐過程中最可能遇到的深層次問題,并提供了經(jīng)驗指導。在某些方面,《高級FPGA設(shè)計:結(jié)構(gòu)、實現(xiàn)也優(yōu)化》能夠取代有限的工業(yè)經(jīng)歷,免去讀者學習的困難。這種先進的、實用的方法,成為此書的特色。

    標簽: FPGA

    上傳時間: 2013-11-01

    上傳用戶:zhaiyanzhong

  • 《FPGA系統(tǒng)設(shè)計的主要思路和方法初探》

    不錯

    標簽: FPGA 系統(tǒng)設(shè)計

    上傳時間: 2013-10-17

    上傳用戶:xiaoyaa

  • 用于RFID接收器的基帶電路

    射頻識別 (RFID) 技術(shù)采用輻射和反射 RF 功率來識別和跟蹤各種目標。典型的 RFID 繫統(tǒng)由一個閱讀器和一個轉(zhuǎn)發(fā)器 (或標簽) 組成。

    標簽: RFID 接收器 基帶電路

    上傳時間: 2013-11-17

    上傳用戶:huyanju

  • 《感悟設(shè)計:電子設(shè)計的經(jīng)驗與哲理》【上】

    北航出版 大道至簡編著

    標簽: 電子設(shè)計 經(jīng)驗

    上傳時間: 2013-10-17

    上傳用戶:tfyt

  • 微波射頻電路仿真100例

    《微波射頻電路設(shè)計與仿真100例》以微波仿真設(shè)計EDA軟件ADS、HFSS等為基礎(chǔ),結(jié)合工程設(shè)計實踐,例舉了100個射頻電路設(shè)計實例。從工程設(shè)計仿真實踐角度出發(fā),覆蓋了射頻有源器件設(shè)計、無源器件設(shè)計、射頻收發(fā)信機設(shè)計等主要方向,書中實例豐富翔實,并且在例舉的實例中詳細介紹了設(shè)計仿真全過程。通過《微波射頻電路設(shè)計與仿真100例》讀者可以學習到射頻電路的常見器件及其設(shè)計仿真方法,以及工程設(shè)計思路和技巧。

    標簽: 100 射頻電路 仿真

    上傳時間: 2013-10-14

    上傳用戶:lmq0059

  • 了解軟體設(shè)計RF儀器的優(yōu)點

    本技術(shù)文章將介紹如何運用 NI LabVIEW FPGA 來設(shè)計並客製化個人的 RF 儀器,同時探索軟體設(shè)計儀器可為測試系統(tǒng)所提供的優(yōu)勢。

    標簽: 軟體 RF儀器

    上傳時間: 2013-11-24

    上傳用戶:toyoad

  • 面向MATLAB工具箱的神經(jīng)網(wǎng)絡(luò)理論與應(yīng)用_叢爽

    《面向MATLAB工具箱的神經(jīng)網(wǎng)絡(luò)理論與應(yīng)用》利用目前國際上流行通用的MATLAB 7.0環(huán)境,結(jié)合神經(jīng)網(wǎng)絡(luò)工具箱4.0.6版本,分別從網(wǎng)絡(luò)構(gòu)造、基本原理、學習規(guī)則以及訓練過程和應(yīng)用局限性幾個方面,通過多層次、多方面的分析與綜合,深入淺出地介紹了人工神經(jīng)網(wǎng)絡(luò)中的各種典型網(wǎng)絡(luò),以及各種不同神經(jīng)網(wǎng)絡(luò)之間在原理和特性等方面的不同點與相同點。

    標簽: MATLAB 工具箱 神經(jīng)網(wǎng)絡(luò)

    上傳時間: 2014-01-07

    上傳用戶:ayfeixiao

主站蜘蛛池模板: 广宁县| 湟源县| 阿拉善右旗| 宕昌县| 资兴市| 泸州市| 南和县| 岳西县| 甘南县| 惠州市| 莱州市| 金沙县| 桃园市| 孙吴县| 秀山| 来凤县| 日喀则市| 宜宾市| 田东县| 固始县| 淮阳县| 偃师市| 富阳市| 蓝田县| 龙泉市| 阜南县| 通海县| 清水河县| 茂名市| 黎城县| 衡阳县| 东乡族自治县| 夏津县| 新野县| 宿迁市| 融水| 合肥市| 鄂伦春自治旗| 浙江省| 锡林郭勒盟| 和龙市|