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

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

轉(zhuǎn)向器

  • 匯編+保護模式+教程

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

    標簽: 匯編 保護模式 教程

    上傳時間: 2013-12-11

    上傳用戶:nunnzhy

  • PLC TM卡開發系統匯編程序(ATM8051)

    PLC TM卡開發系統匯編程序(ATM8051) ;***************** 定義管腳*************************SCL BIT P1.0SDA BIT P1.1GC BIT P1.2BZ BIT P3.6LEDI BIT P1.4LEDII BIT P1.5OK BIT 20H.1OUT1 BIT P1.3OUT2 BIT P1.0OUT3 BIT P1.1RXD BIT P3.0TXD BIT P3.1PCV BIT P3.2WPC BIT P3.3RPC BIT P3.5LEDR BIT P3.4LEDL BIT P3.6TM BIT P3.7;********************定義寄存器***********************ROMDTA EQU 30H;NUMBY EQU 61H;SLA EQU 60H;MTD EQU 2FH;MRD EQU 40H;TEMP EQU 50H;;ORG 00H;;INDEX:MOV P1, #00H;MOV P2, #0FFHMOV MTD ,#00HCALL REEMOV R0,40HCJNE R0,#01,NO;MOV P2,#1CHLJMP VIMEN MOV P2,#79HACALL TOUCHRESET ;JNC NO ;CALL READTM ;CJNE A,#01H,NO;NOPMOV MTD, #00HCALL WEENOPMOV P2,#4AHSETB BZCALL TIMECLR BZMOV PCON, #0FFHVIME:CALL TIME1CALL TOUCHRESETJNC VIMECALL READTMCJNE A, #01H,VIME;NOPNOPNOPIII: MOV MTD,#00HCALL REECALL BBJNB OK,NO1LJMP ZHUNO1:MOV MTD,#10H

    標簽: 8051 PLC ATM TM卡

    上傳時間: 2014-03-24

    上傳用戶:448949

  • 看門狗定時器 看門狗休眠模式

    在正常操作期間,一次WDT 超時溢出將產生一次器件復位。如果器件處于休眠狀態,一次WDT超時溢出將喚醒器件,使其繼續正常操作(即稱作WDT 喚醒)。對WDTE 設置位清零可以永久性地關閉WDT。后分頻器分配完全是由軟件控制,即它可在程序執行期間隨時更改。在例26-1 中,如果需要的預分頻值不是1:1,就不需要對OPTION_REG 寄存器做初始修改。如果需要的預分頻值是1:1,那么先向OPTION_REG 設置一個非1:1 的臨時預分頻值,在完成其它操作后,在最后修改OPTION_REG 時再設置1:1 的預分頻值。這樣操作,主要是因為無法知道TMR0 預分頻器的當前計數值,而且分頻器更改后,該值將變為WDT 后分頻器的當前計數值,所以必須遵循示例中的代碼順序。如果沒有按照示例中的代碼順序改變OPTION_REG 寄存器,那么無法準確得知WDT 復位前的時間。

    標簽: 看門狗定時器 看門狗 休眠模式

    上傳時間: 2013-11-02

    上傳用戶:674635689

  • 數字陷波器的設計

    陷波器是無限沖擊響應(IIR)數字濾波器,該濾波器可以用以下常系數線性差分方程表示:ΣΣ==−−−=MiNiiiinybinxany01)()()( (1)式中: x(n)和y(n)分別為輸人和輸出信號序列;和為濾波器系數。 iaib對式(1)兩邊進行z變換,得到數字濾波器的傳遞函數為: ΠΠΣΣ===−=−−−==NiiMiiNiiiMiiipzzzzbzazH1100)()()( (2)式中:和分別為傳遞函數的零點和極點。 izip由傳遞函數的零點和極點可以大致繪出頻率響應圖。在零點處,頻率響應出現極小值;在極點處,頻率響應出現極大值。因此可以根據所需頻率響應配置零點和極點,然后反向設計帶陷數字濾波器。考慮一種特殊情況,若零點在第1象限單位圓上,極點在單位圓內靠近零點的徑向上。為了防止濾波器系數出現復數,必須在z平面第4象限對稱位置配置相應的共軛零點、共軛極點。 izip∗iz∗ip這樣零點、極點配置的濾波器稱為單一頻率陷波器,在頻率ωo處出現凹陷。而把極點設置在零的的徑向上距圓點的距離為l-μ處,陷波器的傳遞函數為: ))1()()1(())(()(2121zzzzzzzzzHμμ−−−−−−= (3)式(3)中μ越小,極點越靠近單位圓,則頻率響應曲線凹陷越深,凹陷的寬度也越窄。當需要消除窄帶干擾而不能對其他頻率有衰減時,陷波器是一種去除窄帶干擾的理想數字濾波器。當要對幾個頻率同時進行帶陷濾波時,可以按(2)式把幾個單獨頻率的帶陷濾波器(3)式串接在一起。一個例子:設有一個輸入,它

    標簽: 數字 陷波器

    上傳時間: 2013-10-18

    上傳用戶:uuuuuuu

  • LTE標準下Turbo碼編譯碼器的集成設計

    針對固定碼長Turbo碼適應性差的缺點,以LTE為應用背景,提出了一種幀長可配置的Turbo編譯碼器的FPGA實現方案。該設計可以依據具體的信道環境和速率要求調節信息幀長,平衡譯碼性能和系統時延。方案采用“自頂向下”的設計思想和“自底而上”的實現方法,對 Turbo編譯碼系統模塊化設計后優化統一,經時序仿真驗證后下載配置到Altera公司Stratix III系列的EP3SL150F1152C2N中。測試結果表明,系統運行穩健可靠,并具有良好的移植性;集成化一體設計,為LTE標準下Turbo碼 ASIC的開發提供了參考。

    標簽: Turbo LTE 標準 編譯碼器

    上傳時間: 2013-10-28

    上傳用戶:d815185728

  • cad字體查看工具SHX查看器

    很多使用CAD的朋友因為找不到自己需要的字體而煩惱,網上各種可供下載的CAD字庫也不少。之前我也將我收集的600多種字體上傳到百度網盤了,最近又下載了一個1000多種字體的字體庫。 不過發現一個問題:字體名可以隨便改,同一字體也可能有好多不同的版本。從下載的字體庫中就可以看到txt1\2\3\....等多種字體,這些字體到底有什么區別。hztxt.shx是國內使用很廣泛的一種字體文件,但這個文件我就見過多個版本,每個版本文件大小不同,字符顯示效果也不完全相同。因此要找到自己需要的字體說容易,也不容易,最保險的方法就是找到繪圖者使用的原始字體,到網上下載各種字庫都不是很保險。 不過我用過一個SHX字體查看工具,可以直接看到字體文件中的字符,給大家共享一下,但愿能給大家一些幫助。 利用SHX查看器,點“打開”按鈕,可以直接打開SHX文件,看到字體文件中包含的字符及字體效果,如下圖所示: 使用這個工具有下面三個用處: 1、在找到一個字體后,可以先用這個工具檢查一下,是否是自己所需要的字體,不要找到字體就盲目地復制到CAD的字體目錄下。 2、分別打開txt.shx、hztxt.shx、ltypeshp.shx這幾個形文件,可以了解一下字體、大字體和符號形文件里到底里面放了寫什么東西。 3、如果你想更深入了解字體,你可以將SHX在保存為字體源文件*.shp,這是一個純文本文件,你可以了解形文件的定義形式,如果你有興趣的話,甚至可以根據一些教程的指導自己來定義或修改字體文件。 cad字體查看工具SHX查看器注冊碼 Name: (Anything) s/n: sv89356241 Code: LLJL6Y2L

    標簽: cad SHX 字體

    上傳時間: 2015-01-01

    上傳用戶:Togetherheronce

  • LTE標準下Turbo碼編譯碼器的集成設計

    針對固定碼長Turbo碼適應性差的缺點,以LTE為應用背景,提出了一種幀長可配置的Turbo編譯碼器的FPGA實現方案。該設計可以依據具體的信道環境和速率要求調節信息幀長,平衡譯碼性能和系統時延。方案采用“自頂向下”的設計思想和“自底而上”的實現方法,對 Turbo編譯碼系統模塊化設計后優化統一,經時序仿真驗證后下載配置到Altera公司Stratix III系列的EP3SL150F1152C2N中。測試結果表明,系統運行穩健可靠,并具有良好的移植性;集成化一體設計,為LTE標準下Turbo碼 ASIC的開發提供了參考。

    標簽: Turbo LTE 標準 編譯碼器

    上傳時間: 2013-10-08

    上傳用戶:回電話#

  • 藍宙電子USB Qorivva JTAG調試器使用說明書

    USB Qorivva JTAG調試器簡介 USB Qorivva JTAG調試器可以用來燒寫和調試Freescale 公司的MPC55XX和MPC56XX系列Power PC單片機。USB Qorivva JTAG具有驅動自動安裝、與CodeWarroir IDE軟件無縫集成,使用方便等特點。USB Qorivva JTAG調試器采用了Freescale公司新推出帶有USB 2.0控制器的MC9S08JM60單片機作為主控芯片,確保高速下載代碼、高效的調試代碼。 USB Qorivva JTAG調試器特性: ? 全速USB 2.0接口(兼容USB1.1) ? 支持目標單片機系列: MPC55XX MPC56XX ? USB Qorivva JTAG調試器支持不同版本的CodeWarrior,例如CodeWarrior IDE for MPC55XX,56XX 2.7版、2.8版、2.9版等,也支持Codewarrior V10.1和Codewarrior V10.2等Eclipse version的Codewarrior ? 驅動程序自動安裝(前提是先要安裝Codewarrior) ? 與CodeWarrior無縫集成,無需復雜的設置,使用方法和PE公司的USB Qorivva Multilink完全一樣 ? USB狀態和目標板電源指示燈指示USB枚舉狀態和目標板電源連接 ? USB Qorivva JTAG固件程序自動更新 ? 支持向目標板供電 ? 兼容Windows 2000/XP/Vista/Win7操作系統

    標簽: Qorivva JTAG USB 藍宙電子

    上傳時間: 2013-10-23

    上傳用戶:fghygef

  • MP3播放器: 利用API函數[mciSendString]可以輕松實現MP3音樂文件的播放。下面這段程序實現了MP3播放的大部分常規操作

    MP3播放器: 利用API函數[mciSendString]可以輕松實現MP3音樂文件的播放。下面這段程序實現了MP3播放的大部分常規操作,對其稍加修改,做一個100KB大小的MP3播放器輕而易舉 啟動VB程序,在窗體上放置6個命令按鈕,三個標簽,一個公用對話框、一個進度條、一個狀態欄和一個計時器,窗本的布置請參考附圖 按鈕"Open MP3 File"是用來打開對話框選擇MP3文件,其他5個按鈕分別為Play(播放)、Pause(暫停)、Stopplay(停止播放)、Back(向后跳躍)、Prew(向前跳躍)。Label1用來表示歌曲當前時間;label2放在時度條的最左邊,Caption屬性為"00:00";lable3放在時度條的右邊,用來表示歌曲總長。

    標簽: MP3 mciSendString API 播放

    上傳時間: 2014-11-12

    上傳用戶:silenthink

  • pc.c是移植于μCOS-II的PC服務代碼(pc.c) 主要改動: 1、#include "includes.h"改為"config.h" 2、在屏幕上顯示改為向UART0發送數據

    pc.c是移植于μCOS-II的PC服務代碼(pc.c) 主要改動: 1、#include "includes.h"改為"config.h" 2、在屏幕上顯示改為向UART0發送數據,在電腦上顯示,影響的函數: PC_DispChar()、PC_DispClrCol()、PC_DispClrRow()、PC_DispClrScr()和PC_DispStr() 3、獲取鍵值改為從UART0獲取,影響的函數:PC_GetKey() 4、因為沒有dos環境所作的修改,影響的函數: PC_DOSReturn()、PC_DOSSaveReturn()、PC_SetTickRate()(刪除)、PC_VectGet()(刪除)和 PC_VectSet(刪除)。 5、因為定時器不同所作的修改,影響的函數: PC_ElapsedStart()和PC_ElapsedStop()。 6、因為實時時鐘不同所作的修改,影響的函數:PC_GetDateTime()。

    標簽: includes include COS-II config

    上傳時間: 2015-03-18

    上傳用戶:ynzfm

主站蜘蛛池模板: 山丹县| 石河子市| 平和县| 中西区| 磐石市| 南雄市| 松潘县| 田东县| 安塞县| 洪洞县| 剑阁县| 辰溪县| 长寿区| 浦江县| 肥乡县| 公安县| 安义县| 阳新县| 两当县| 德清县| 涟水县| 五莲县| 防城港市| 威海市| 南澳县| 龙南县| 新沂市| 丹寨县| 闸北区| 阿鲁科尔沁旗| 安吉县| 叙永县| 广州市| 裕民县| 宁都县| 彭阳县| 庆安县| 乐安县| 浙江省| 故城县| 周口市|