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

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

帶三個按鈕

  • 多路電壓采集系統

    多路電壓采集系統一、實驗目的1.熟悉可編程芯片ADC0809,8253的工作過程,掌握它們的編程方法。2.加深對所學知識的理解并學會應用所學的知識,達到在應用中掌握知識的目的。 二、實驗內容與要求1.基本要求通過一個A/D轉換器循環采樣4路模擬電壓,每隔一定時間去采樣一次,一次按順序采樣4路信號。A/D轉換器芯片AD0809將采樣到的模擬信號轉換為數字信號,轉換完成后,CPU讀取數據轉換結果,并將結果送入外設即CRT/LED顯示,顯示包括電壓路數和數據值。2. 提高要求 (1) 可以實現循環采集和選擇采集2種方式。(2)在CRT上繪制電壓變化曲線。 三、實驗報告要求 1.設計目的和內容 2.總體設計 3.硬件設計:原理圖(接線圖)及簡要說明 4.軟件設計框圖及程序清單5.設計結果和體會(包括遇到的問題及解決的方法) 四、總體設計設計思路如下:1) 4路模擬電壓信號通過4個電位器提供0-5V的電壓信號。2) 選擇ADC0809芯片作為A/D轉換器,4路輸入信號分別接到ADC0809的IN0—IN4通道,每隔一定的時間采樣一次,采完一路采集下一路,4路電壓循環采集。3) 利用3個LED數碼管顯示數據,1個數碼管用來顯示輸入電壓路數,3個數碼管用來顯示電壓采樣值。4) 延時由8253定時/計數器來實現。 五、硬件電路設計根據設計思路,硬件主要利用了微機實驗平臺上的ADC0809模數轉換器、8253定時/計數器以及LED顯示輸出等模塊。電路原理圖如下:1.基本接口實驗板部分1) 電位計模塊,4個電位計輸出4路1-5V的電壓信號。2) ADC0809模數轉換器,將4路電壓信號接到IN0-IN3,ADD_A、ADD_B、ADD_C分別接A0、A1、A2,CS_AD接CS0時,4個采樣通道對應的地址分別為280H—283H。3) 延時模塊,8253和8255組成延時電路。8255的PA0接到8253的OUT0,程序中查詢計數是否結束。硬件電路圖如圖1所示。 圖1 基本實驗板上的電路圖實驗板上的LED顯示部分實驗板上主要用到了LED數碼管顯示電路,插孔CS1用于數碼管段碼的輸出選通,插孔CS2用于數碼管位選信號的輸出選通。電路圖如圖2所示。

    標簽: 多路 電壓采集

    上傳時間: 2013-11-06

    上傳用戶:sunchao524

  • 基于PC機的電子琴設計

    基于PC機的電子琴設計 一、實驗目的1.掌握利用pc機揚聲器發出聲音的方法。2.學習利用系統功能調用從鍵盤上讀取字符的方法。 二、實驗內容與要求利用PC機和揚聲器實現簡易電子琴的功能。 1.基本要求(1)電子琴功能,編寫程序,程序運行時使pc機成為一架可彈奏的“鋼琴”。當按下PC機鍵盤數字鍵1-8時,依次發出1,2,3,4,5,6,7,i八個音調。(2)音樂盒功能,內部存儲至少2首以上的樂曲,根據菜單選擇播放。2.提高要求(1)使一組放光二極管隨音調變化而改變,實現音樂彩燈  (2)能夠實現高、中、低音的選擇。  (3)能夠存儲彈奏的內容,進行回放。 三、實驗報告要求 1.設計目的和內容 2.總體設計 3.硬件設計:原理圖(接線圖)及簡要說明 4.軟件設計框圖及程序清單 5.設計結果和體會(包括遇到的問題及解決的方法) 四、設計原理要使揚聲器發出不同的音調,就得輸入不同頻率的波形。通過給8253定時/計數器裝入不同的計數值,可以使其輸出不同頻率的方波。經過放大器的放大作用,便可驅動揚聲器發出不同的音調,只要插入一段延時程序之后,再將揚聲器切斷,音調的聲音就可以持續一端時間。通過計算機的不同按鍵輸出不同的音調,需要使用系統調用功能以接收鍵入字符,并且要建立一張表,使鍵入字符與頻率構成一個對應關系。

    標簽: PC機 電子琴

    上傳時間: 2013-10-16

    上傳用戶:xlcky

  • 微機總線與接口標準

    3.1 總線與接口概述 3.1.1 總線和接口及其標準的概念  總線:是在模塊和模塊之間或設備與設備之間的一組進行互連和傳輸信息的信號線,信息包括指令、數據和地址。   總線標準     指芯片之間、擴展卡之間以及系統之間,通過總線進行連接和傳輸信息時,應該遵守的一些協議與規范。  接口標準    外設接口的規范,涉及接口信號線定義、信號傳輸速率、傳輸方向和拓撲結構,以及電氣特性和機械特性等多個方面。 3.1.2 總線的分類 1) 按總線功能或信號類型劃分為: 數據總線:雙向三態邏輯,線寬表示了總線數據傳輸的能力。地址總線:單向三態邏輯,線寬決定了系統的尋址能力??刂瓶偩€:就某根來說是單向或雙向。控制總線最能體現總線特點,決定總線功能的強弱和適應性。2) 按總線的層次結構分為: CPU總線:微機系統中速度最快的總線,主要在CPU內部,連接CPU內部部件,在CPU周圍的小范圍內也分布該總線,提供系統原始的控制和命令。局部總線:在系統總線和CPU總線之間的一級總線,提供CPU和主板器件之間以及CPU到高速外設之間的快速信息通道。系統總線:也稱為I/O總線,是傳統的通過總線擴展卡連接外部設備的總線。由于速度慢,其功能已經被局部總線替代。通信總線:也稱為外部總線,是微機與微機,微機與外設之間進行通信的總線。3.1.3 總線的主要性能參數1.總線頻率:MHz表示的工作頻率,是總線速率的一個重要參數。2.總線寬度:指數據總線的位數。3.總線的數據傳輸率   總線的數據傳輸率=(總線寬度/8位)×總線頻率 例:PCI總線的總線頻率為33.3MHz,總線寬度為64位的情況下,總線數據傳輸率為266MB/s 。

    標簽: 微機 總線 接口標準

    上傳時間: 2013-11-17

    上傳用戶:shen954166632

  • 微型計算機課程設計論文—通用微機發聲程序的匯編設計

    微型計算機課程設計論文—通用微機發聲程序的匯編設計 本文講述了在微型計算機中利用可編程時間間隔定時器的通用發聲程序設計,重點講述了程序的發聲原理,節拍的產生,按節拍改變的動畫程序原理,并以設計一個簡單的樂曲評分程序為引子,分析程序設計的細節。關鍵字:微機 8253 通用發聲程序 動畫技術 直接寫屏 1. 可編程時間間隔定時器8253在通用個人計算機中,有一個可編程時間間隔定時器8253,它能夠根據程序提供的計數值和工作方式,產生各種形狀和各種頻率的計數/定時脈沖,提供給系統各個部件使用。本設計是利用計算機控制發聲的原理,編寫演奏樂曲的程序。    在8253/54定時器內部有3個獨立工作的計數器:計數器0,計數器1和計數器2,每個計數器都分配有一個斷口地址,分別為40H,41H和42H.8253/54內部還有一個公用的控制寄存器,端地址為43H.端口地址輸入到8253/54的CS,AL,A0端,分別對3個計數器和控制器尋址.     對8353/54編程時,先要設定控制字,以選擇計數器,確定工作方式和計數值的格式.每計數器由三個引腳與外部聯系,見教材第320頁圖9-1.CLK為時鐘輸入端,GATE為門控信號輸入端,OUT為計數/定時信號輸入端.每個計數器中包含一個16位計數寄存器,這個計數器時以倒計數的方式計數的,也就是說,從計數初值逐次減1,直到減為0為止.     8253/54的三個計數器是分別編程的,在對任一個計數器編程時,必須首先講控制字節寫入控制寄存器.控制字的作用是告訴8253/54選擇哪個計數器工作,要求輸出什么樣的脈沖波形.另外,對8253/54的初始化工作還包括,向選定的計數器輸入一個計數初值,因為這個計數值可以是8為的,也可以是16為的,而8253/5的數據總線是8位的,所以要用兩條輸出指令來寫入初值.下面給出8253/54初始化程序段的一個例子,將計數器2設定為方式3,(關于計數器的工作方式參閱教材第325—330頁)計數初值為65536.    MOV   AL,10110110B ;選擇計數器2,按方式3工作,計數值是二進制格式    OUT   43H,AL      ; j將控制字送入控制寄存器    MOV   AL,0        ;計數初值為0    OUT   42H,AL      ;將計數初值的低字節送入計數器2    OUT   42H,AL      ;將計數初值的高字節送入計數器2    在IBM PC中8253/54的三個時鐘端CLK0,CLK1和CLK2的輸入頻率都是1.1931817MHZ. PC機上的大多數I/O都是由主板上的8255(或8255A)可編程序外圍接口芯片(PPI)管理的.關于8255A的結構和工作原理及應用舉例參閱教材第340—373頁.教材第364頁的”PC/XT機中的揚聲器接口電路”一節介紹了揚聲器的驅動原理,并給出了通用發聲程序.本設計正是基于這個原理,通過編程,控制加到揚聲器上的信號的頻率,奏出樂曲的.2.發聲程序的設計下面是能產生頻率為f的通用發聲程序:MOV      AL, 10110110B   ;8253控制字:通道2,先寫低字節,后寫高字節        ;方式3,二進制計數OUT      43H, AL                  ;寫入控制字MOV      DX, 0012H               ;被除數高位MOV      AX, 35DEH              ;被除數低位 DIV      ID      ;求計數初值n,結果在AX中OUT      42H, AL     ;送出低8位MOV      AL, AHOUT      42H,AL     ;送出高8位IN      AL, 61H     ;讀入8255A端口B的內容MOV      AH, AL                  ;保護B口的原狀態OR  AL, 03H     ;使B口后兩位置1,其余位保留OUT 61H,AL     ;接通揚聲器,使它發聲

    標簽: 微型計算機 發聲程序 論文 微機

    上傳時間: 2013-10-17

    上傳用戶:sunjet

  • 單片機實用接口技術

    單片機實用接口技術介紹了MCS-51系列單片機應用系統的各種實用接口技術及其配置。內容包括:MCS-51系列單片機組成原理:應用系統擴展、開發與調試;鍵盤輸入接口的設計及調試;打印機和顯示器接口及設計實例;模擬輸入通道接口技術;A/D、D/A、接口技術及在控制系統中的應用設計;V/F轉換器接口技術、串行通訊接口技術以及其它與應用系統設計有關的實用技術等。本書是為滿足廣大科技工作者從事單片機應用系統軟件、硬件設計的需要而編寫的,具有內容新穎、實用、全面的特色。所有的接口設計都包括詳細的設計步驟、硬件線路圖及故障分析,并附有測試程序清單。書中大部分接口軟、硬件設計實例都是作者多年來從事單片機應用和開發工作的經驗總結,實用性和工程性較強,尤其是對應用系統中必備的鍵盤、顯示器、打印機、A/D、D/A通訊接口設計、模擬信號處理及開發系統應用舉例甚多,目的是讓將要開始和正在從事單片機應用開發的科研人員根據自己的實際需要來選擇應用,一書在手即可基本完成單片機應用系統的開發工作。 MCS-51系列單片機實用接口技術目錄 第一章 MCS51系列單片機組成原理第二章 MCS-51單片機系統擴展第三章 MCS-51單片機應用系統的開發第四章 鍵盤及其按口技術第五章 顯示器接口設計第六章 打印機接口設計第七章 模擬輸入通道接口技術第八章 D/A轉換器與MSC-51單片機的接口設計與實踐第九章 A/D轉換器與MCS-51單片機的接口設計與實踐 第十章 V/F轉換器接口技術 第十一章 串行通訊按日技術第十二章應用系統設計中的實用技術附錄AMCS51單片機指令速查表附錄一常用EPROM固化電壓參考表

    標簽: 單片機實用 接口技術

    上傳時間: 2013-11-24

    上傳用戶:hfnishi

  • MCS-51系列單片機實用接口技術

    MCS-51系列單片機實用接口技術全面、系統地介紹了MCS-51系列單片機應用系統的各種實用接口技術及其配置。內容包括:MCS-51系列單片機組成原理:應用系統擴展、開發與調試;鍵盤輸入接口的設計及調試;打印機和顯示器接口及設計實例;模擬輸入通道接口技術;A/D、D/A、接口技術及在控制系統中的應用設計;V/F轉換器接口技術、串行通訊接口技術以及其它與應用系統設計有關的實用技術等。本書是為滿足廣大科技工作者從事單片機應用系統軟件、硬件設計的需要而編寫的,具有內容新穎、實用、全面的特色。所有的接口設計都包括詳細的設計步驟、硬件線路圖及故障分析,并附有測試程序清單。書中大部分接口軟、硬件設計實例都是作者多年來從事單片機應用和開發工作的經驗總結,實用性和工程性較強,尤其是對應用系統中必備的鍵盤、顯示器、打印機、A/D、D/A通訊接口設計、模擬信號處理及開發系統應用舉例甚多,目的是讓將要開始和正在從事單片機應用開發的科研人員根據自己的實際需要來選擇應用,一書在手即可基本完成單片機應用系統的開發工作。 MCS-51系列單片機實用接口技術目錄 第一章 MCS51系列單片機組成原理第二章 MCS-51單片機系統擴展第三章 MCS-51單片機應用系統的開發第四章 鍵盤及其按口技術第五章 顯示器接口設計第六章 打印機接口設計第七章 模擬輸入通道接口技術第八章 D/A轉換器與MSC-51單片機的接口設計與實踐第九章 A/D轉換器與MCS-51單片機的接口設計與實踐 第十章 V/F轉換器接口技術 第十一章 串行通訊按日技術第十二章應用系統設計中的實用技術附錄AMCS51單片機指令速查表附錄一常用EPROM固化電壓參考表

    標簽: MCS 51 單片機實用 接口技術

    上傳時間: 2013-11-04

    上傳用戶:3294322651

  • 中斷技術

    一個完整的微機系統是由硬件和軟件共同構成的。微機系統的硬件有CPU、存儲器和I/O口,外設組成。CPU與存儲器之間的信息交換比較簡單,而CPU與外設之間進行信息交換之前必須確定外設是否準備好,即選擇I/O傳送方式。I/O傳送方式有4種:無條件、查詢、中斷和DMA。本章學習中斷傳送方式的有關內容。                                       4.1  中斷概述                                   4.2  MCS-51中斷系統   1、中斷的定義:        中斷是指如下過程:CPU與外設同時工作,CPU執行主程序,外設做準備工作,當外設準備好時向CPU發中斷請求信號,若條件滿足,則CPU終止主程序的執行,轉去執行中斷服務程序,在中斷服務程序中CPU與外設交換信息,待中斷服務程序執行完后,CPU再返回剛才終止的主程序繼續執行。 2、中斷系統的定義:中斷系統是指為了實現中斷傳送過程在CPU內外設置的硬件和有關中斷的指令。3、中斷源:⑴中斷源的定義:中斷源是指引起中斷請求的來源。⑵中斷源的分類: ①軟中斷和 ②硬中斷4、中斷處理的全過程       中斷處理的全過程分成3個階段:中斷請求、中斷響應和中斷服務。5、多重中斷與中斷優先級      ⑴ 當系統中有多個設備提出中斷請求時,多個外設的中請信號要通過門電路送到CPU的中請輸入端,使CPU能收到多個外設提出的中請。     ⑵ CPU在收到多個外設的請求后,按中斷處理原則處理中斷。     ⑶  確定優先級的方法解決優先級的問題一般可有三種方法:軟件查詢法、簡單硬件方法及專用硬件方法(采用可編程的中斷控制器芯片,如Intel8259A)。

    標簽: 中斷技術

    上傳時間: 2013-10-12

    上傳用戶:ysjing

  • 匯編語言程序設計PPT

    §4-1  程序設計語言計算機程序設計語言是指計算機能夠理解和執行的語言。  程序設計語言的種類很多,歸納起來有三種:                       機器語言、匯編語言和高級語言。  編程時采用哪種語言由程序設計語言的特點和適用場合決定。                     機器語言、匯編語言和高級語言比較一覽表§4-2  匯編語言源程序格式匯編語言源程序格式如下:1、匯編語言源程序由一條一條匯編語句組成。2、每條匯編語句獨占一行,以CR—LF結束。3、典型的匯編語句由四部分組成:                  標號:操作碼  操作數;注釋§4-3  偽指令一、偽指令與指令的區別:    偽指令由匯編程序識別,用來對匯編過程進行某種控制,或者對符號、標號賦值。在匯編過程中, 偽指令不產生可執行的目標代碼;而指令由CPU執行,在匯編過程中,產生可執行的目標代碼,完成對數據的運算與處理。二、常用的偽指令:ORG        END         EQU        DATA        DB       DW     DS §4-4  匯編語言程序設計基礎一、匯編語言程序設計的一般步驟        分析課題        確定算法        畫流程圖        編寫程序       上機調試二、程序結構          按程序的走向可以將程序分成4種結構:       簡單程序      分支程序       循環程序      子程序

    標簽: 匯編語言 程序設計

    上傳時間: 2013-10-15

    上傳用戶:daoxiang126

  • 子空間模式識別方法

    提出了一種改進的LSM-ALSM子空間模式識別方法,將LSM的旋轉策略引入ALSM,使子空間之間互不關聯的情況得到改善,提高了ALSM對相似樣本的區分能力。討論中以性能函數代替經驗函數來確定拒識規則的參數,實現了識別率、誤識率與拒識率之間的最佳平衡;通過對有限字符集的實驗結果表明,LSM-ALSM算法有效地改善了分類器的識別率和可靠性。關 鍵 詞 學習子空間; 性能函數; 散布矩陣; 最小描述長度在子空間模式識別方法中,一個線性子空間代表一個模式類別,該子空間由反映類別本質的一組特征矢量張成,分類器根據輸入樣本在各子空間上的投影長度將其歸為相應的類別。典型的子空間算法有以下三種[1, 2]:CLAFIC(Class-feature Information Compression)算法以相關矩陣的部分特征向量來構造子空間,實現了特征信息的壓縮,但對樣本的利用為一次性,不能根據分類結果進行調整和學習,對樣本信息的利用不充分;學習子空間方法(Leaning Subspace Method, LSM)通過旋轉子空間來拉大樣本所屬類別與最近鄰類別的距離,以此提高分類能力,但對樣本的訓練順序敏感,同一樣本訓練的順序不同對子空間構造的影響就不同;平均學習子空間算法(Averaged Learning Subspace Method, ALSM)是在迭代訓練過程中,用錯誤分類的樣本去調整散布矩陣,訓練結果與樣本輸入順序無關,所有樣本平均參與訓練,其不足之處是各模式的子空間之間相互獨立。針對以上問題,本文提出一種改進的子空間模式識別方法。子空間模式識別的基本原理1.1 子空間的分類規則子空間模式識別方法的每一類別由一個子空間表示,子空間分類器的基本分類規則是按矢量在各子空間上的投影長度大小,將樣本歸類到最大長度所對應的類別,在類x()iω的子空間上投影長度的平方為()211,2,,()argmax()jMTkkjpg===Σx􀀢 (1)式中 函數稱為分類函數;為子空間基矢量。兩類的分類情況如圖1所示。

    標簽: 子空間 模式 識別方法

    上傳時間: 2013-12-25

    上傳用戶:熊少鋒

  • 匯編+保護模式+教程

    九.輸入/輸出保護為了支持多任務,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位圖中的兩個位進行檢查,其低位是某個字節的最高位,高位是下一個字節的最低位??梢娂词怪灰獧z查兩個位,也可能需要讀取兩個字節。另一方面,最多檢查四個連續的位,即最多也只需讀取兩個字節。所以每次要讀取兩個字節。這也是在判別是否越界時再加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

主站蜘蛛池模板: 龙陵县| 潞城市| 札达县| 耒阳市| 界首市| 临邑县| 同仁县| 克山县| 龙门县| 启东市| 大方县| 襄垣县| 通化县| 股票| 渭南市| 岐山县| 兴宁市| 襄樊市| 濉溪县| 沿河| 长治县| 轮台县| 寿光市| 兖州市| 蓬莱市| 仪陇县| 左权县| 云浮市| 玉环县| 彭泽县| 通江县| 肇源县| 沙雅县| 旺苍县| 寿光市| 独山县| 仁寿县| 莒南县| 观塘区| 清新县| 滦南县|