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

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

音頻格式轉(zhuǎn)換器

  • MCP定時器產生中心對稱PWM輸出

    MCP定時器產生中心對稱PWM輸出:PWM波是一種脈寬可調的脈沖波,用于交、直流電機的電壓控制。PWM一共有兩種調整方法,一是定頻調寬、另一種是定寬調頻。其中定頻調寬是種最常見的脈寬調制方式,它使脈沖波的頻率保持不變,只調整脈沖寬度。同時定頻調寬的PWM波形也分為兩種,一種是單邊的PWM,另一種是中心對稱的雙邊PWM。中心對稱的PWM主要應用在需要對稱PWM波形的場合,如半橋、全橋的雙極性驅動等。中心對稱的PWM的生成原理如圖1-2所示:定時計數器工作在連續增減計數方式,在計數初值設置為0且比較值小于周期值的條件下,當增計數過程中計數值和比較值匹配時置位輸出,而在周期匹配時會改計數方向為減計數,當減計數過程中計數值和比較值匹配時復位輸出,當減計數到零時會改計數方向為增計數,開始下一個循環。因此中心對稱的PWM的周期為設定周期的二倍,占空比為:%100))((×−TPRNTPR(N為比較匹配數據,TPR為周期寄存器的值)。比較值的改變會影響PWM的兩邊的波形,并且兩邊相對高電平的中心對稱,這便是中心對稱雙邊PWM波形的特點。如果比較值為零,那么PWM將一直輸出高電平;如比較值大于等于周期值,則PWM會一直輸出低電平,占空比為0。

    標簽: MCP PWM 定時器 對稱

    上傳時間: 2013-11-13

    上傳用戶:sammi

  • MCP定時器產生邊沿PWM輸出

    MCP定時器產生邊沿PWM輸出:PWM波是一種脈寬可調的脈沖波,用于交、直流電機的電壓控制。PWM一共有兩種調整方法,一是定頻調寬、另一種是定寬調頻。其中定頻調寬是種最常見的脈寬調制方式,它使脈沖波的頻率保持不變,只調整脈沖寬度。同時定頻調寬的PWM波形也分為兩種,一種是單邊的PWM,另一種是中心對稱的雙邊PWM。單邊的PWM的生成原理如圖1-2:定時計數器工作在增計數方式,在計數初值設置為0且比較值小于周期值的條件下,當計數值和比較值匹配時置位輸出,而在周期匹配時復位輸出,同時清零計數器,開始下一個循環。因此單邊PWM的占空比為:%100))((×−TPRNTPR(N為比較匹配數據,TPR為周期寄存器的值)。比較值的改變只影響PWM的單邊波形,這便是單邊PWM波形的特點。如果比較值為零,那么PWM將一直輸出高電平;如比較值同周期值相等,則PWM會輸出一個時鐘周期的低電平,占空比近似為0;當比較值大于周期值,那么PWM將一直輸出低電平。

    標簽: MCP PWM 定時器 輸出

    上傳時間: 2013-11-07

    上傳用戶:moerwang

  • 匯編指令查詢器V1.20版

    匯編指令查詢器:數據傳送指令 MOV 格式: MOV OPRD1,OPRD2 功能: 本指令將一個源操作數送到目的操作數中,即OPRD1<--OPRD2. 說明: 1. OPRD1 為目的操作數,可以是寄存器、存儲器、累加器.    OPRD2 為源操作數,可以是寄存器、存儲器、累加器和立即數. 2. MOV 指令以分為以下四種情況:     <1> 寄存器與寄存器之間的數據傳送指令       <2> 立即數到通用寄存器數據傳送指令                 <3> 寄存器與存儲器之間的數據傳送指令                 <4> 立即數到存儲器的數據傳送 3. 本指令不影響狀態標志位

    標簽: 1.20 匯編指令 查詢

    上傳時間: 2013-11-13

    上傳用戶:腳趾頭

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

    微型計算機課程設計論文—通用微機發聲程序的匯編設計 本文講述了在微型計算機中利用可編程時間間隔定時器的通用發聲程序設計,重點講述了程序的發聲原理,節拍的產生,按節拍改變的動畫程序原理,并以設計一個簡單的樂曲評分程序為引子,分析程序設計的細節。關鍵字:微機 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

  • AVR高速嵌入式單片機原理與應用(修訂版)

    AVR高速嵌入式單片機原理與應用(修訂版)詳細介紹ATMEL公司開發的AVR高速嵌入式單片機的結構;講述AVR單片機的開發工具和集成開發環境(IDE),包括Studio調試工具、AVR單片機匯編器和單片機串行下載編程;學習指令系統時,每條指令均有實例,邊學習邊調試,使學習者看得見指令流向及操作結果,真正理解每條指令的功能及使用注意事項;介紹AVR系列多種單片機功能特點、實用程序設計及應用實例;作為提高篇,講述簡單易學、適用AVR單片機的高級語言BASCOMAVR及ICC AVR C編譯器。 AVR高速嵌入式單片機原理與應用(修訂版) 目錄 第一章ATMEL單片機簡介1.1ATMEL公司產品的特點11.2AT90系列單片機簡介21.3AT91M系列單片機簡介2第二章AVR單片機系統結構2.1AVR單片機總體結構42.2AVR單片機中央處理器CPU62.2.1結構概述72.2.2通用寄存器堆92.2.3X、Y、Z寄存器92.2.4ALU運算邏輯單元92.3AVR單片機存儲器組織102.3.1可下載的Flash程序存儲器102.3.2內部和外部的SRAM數據存儲器102.3.3EEPROM數據存儲器112.3.4存儲器訪問和指令執行時序112.3.5I/O存儲器132.4AVR單片機系統復位162.4.1復位源172.4.2加電復位182.4.3外部復位192.4.4看門狗復位192.5AVR單片機中斷系統202.5.1中斷處理202.5.2外部中斷232.5.3中斷應答時間232.5.4MCU控制寄存器 MCUCR232.6AVR單片機的省電方式242.6.1休眠狀態242.6.2空閑模式242.6.3掉電模式252.7AVR單片機定時器/計數器252.7.1定時器/計數器預定比例器252.7.28位定時器/計數器0252.7.316位定時器/計數器1272.7.4看門狗定時器332.8AVR單片機EEPROM讀/寫訪問342.9AVR單片機串行接口352.9.1同步串行接口 SPI352.9.2通用串行接口 UART402.10AVR單片機模擬比較器452.10.1模擬比較器452.10.2模擬比較器控制和狀態寄存器ACSR462.11AVR單片機I/O端口472.11.1端口A472.11.2端口 B482.11.3端口 C542.11.4端口 D552.12AVR單片機存儲器編程612.12.1編程存儲器鎖定位612.12.2熔斷位612.12.3芯片代碼612.12.4編程 Flash和 EEPROM612.12.5并行編程622.12.6串行下載662.12.7可編程特性67第三章AVR單片機開發工具3.1AVR實時在線仿真器ICE200693.2JTAG ICE仿真器693.3AVR嵌入式單片機開發下載實驗器SL?AVR703.4AVR集成開發環境(IDE)753.4.1AVR Assembler編譯器753.4.2AVR Studio773.4.3AVR Prog783.5SL?AVR系列組態開發實驗系統793.6SL?AVR*.ASM源文件說明81第四章AVR單片機指令系統4.1指令格式844.1.1匯編指令844.1.2匯編器偽指令844.1.3表達式874.2尋址方式894.3數據操作和指令類型924.3.1數據操作924.3.2指令類型924.3.3指令集名詞924.4算術和邏輯指令934.4.1加法指令934.4.2減法指令974.4.3乘法指令1014.4.4取反碼指令1014.4.5取補指令1024.4.6比較指令1034.4.7邏輯與指令1054.4.8邏輯或指令1074.4.9邏輯異或指令1104.5轉移指令1114.5.1無條件轉移指令1114.5.2條件轉移指令1144.6數據傳送指令1354.6.1直接數據傳送指令1354.6.2間接數據傳送指令1374.6.3從程序存儲器直接取數據指令1444.6.4I/O口數據傳送指令1454.6.5堆棧操作指令1464.7位指令和位測試指令1474.7.1帶進位邏輯操作指令1474.7.2位變量傳送指令1514.7.3位變量修改指令1524.7.4其它指令1614.8新增指令(新器件)1624.8.1EICALL-- 延長間接調用子程序1624.8.2EIJMP--擴展間接跳轉1634.8.3ELPM--擴展裝載程序存儲器1644.8.4ESPM--擴展存儲程序存儲器1644.8.5FMUL--小數乘法1664.8.6FMULS--有符號數乘法1664.8.7FMULSU--有符號小數和無符號小數乘法1674.8.8MOVW--拷貝寄存器字1684.8.9MULS--有符號數乘法1694.8.10MULSU--有符號數與無符號數乘法1694.8.11SPM--存儲程序存儲器170 第五章AVR單片機AT90系列5.1AT90S12001725.1.1特點1725.1.2描述1735.1.3引腳配置1745.1.4結構縱覽1755.2AT90S23131835.2.1特點1835.2.2描述1845.2.3引腳配置1855.3ATmega8/8L1855.3.1特點1865.3.2描述1875.3.3引腳配置1895.3.4開發實驗工具1905.4AT90S2333/44331915.4.1特點1915.4.2描述1925.4.3引腳配置1945.5AT90S4414/85151955.5.1特點1955.5.2AT90S4414和AT90S8515的比較1965.5.3引腳配置1965.6AT90S4434/85351975.6.1特點1975.6.2描述1985.6.3AT90S4434和AT90S8535的比較1985.6.4引腳配置2005.6.5AVR RISC結構2015.6.6定時器/計數器2125.6.7看門狗定時器 2175.6.8EEPROM讀/寫2175.6.9串行外設接口SPI2175.6.10通用串行接口UART2175.6.11模擬比較器 2175.6.12模數轉換器2185.6.13I/O端口2235.7ATmega83/1632285.7.1特點2285.7.2描述2295.7.3ATmega83與ATmega163的比較2315.7.4引腳配置2315.8ATtiny10/11/122325.8.1特點2325.8.2描述2335.8.3引腳配置2355.9ATtiny15/L2375.9.1特點2375.9.2描述2375.9.3引腳配置2395 .10ATmega128/128L2395.10.1特點2405.10.2描述2415.10.3引腳配置2435.10.4開發實驗工具2455.11ATmega1612465.11.1特點2465.11.2描述2475.11.3引腳配置2475.12AVR單片機替代MCS51單片機249第六章實用程序設計6.1程序設計方法2506.1.1程序設計步驟2506.1.2程序設計技術2506.2應用程序舉例2516.2.1內部寄存器和位定義文件2516.2.2訪問內部 EEPROM2546.2.3數據塊傳送2546.2.4乘法和除法運算應用一2556.2.5乘法和除法運算應用二2556.2.616位運算2556.2.7BCD運算2556.2.8冒泡分類算法2556.2.9設置和使用模擬比較器2556.2.10半雙工中斷方式UART應用一2556.2.11半雙工中斷方式UART應用二2566.2.128位精度A/D轉換器2566.2.13裝載程序存儲器2566.2.14安裝和使用相同模擬比較器2566.2.15CRC程序存儲的檢查2566.2.164×4鍵區休眠觸發方式2576.2.17多工法驅動LED和4×4鍵區掃描2576.2.18I2C總線2576.2.19I2C工作2586.2.20SPI軟件2586.2.21驗證SLAVR實驗器及AT90S1200的口功能12596.2.22驗證SLAVR實驗器及AT90S1200的口功能22596.2.23驗證SLAVR實驗器及具有DIP40封裝的口功能第七章AVR單片機的應用7.1通用延時子程序2607.2簡單I/O口輸出實驗2667.2.1SLAVR721.ASM 2667.2.2SLAVR722.ASM2677.2.3SLAVR723.ASM2687.2.4SLAVR724.ASM2707.2.5SLAVR725.ASM2717.2.6SLAVR726.ASM2727.2.7SLAVR727.ASM2737.3綜合程序2747.3.1LED/LCD/鍵盤掃描綜合程序2747.3.2LED鍵盤掃描綜合程序2757.3.3在LED上實現字符8的循環移位顯示程序2757.3.4電腦放音機2777.3.5鍵盤掃描程序2857.3.6十進制計數顯示2867.3.7廉價的A/D轉換器2897.3.8高精度廉價的A/D轉換器2947.3.9星星燈2977.3.10按鈕猜數程序2987.3.11漢字的輸入3047.4復雜實用程序3067.4.110位A/D轉換3067.4.2步進電機控制程序3097.4.3測脈沖寬度3127.4.4LCD顯示8字循環3187.4.5LED電腦時鐘3247.4.6測頻率3307.4.7測轉速3327.4.8AT90S8535的A/D轉換334第八章BASCOMAVR的應用8.1基于高級語言BASCOMAVR的單片機開發平臺3408.2BASCOMAVR軟件平臺的安裝與使用3418.3AVR I/O口的應用3458.3.1LED發光二極管的控制3458.3.2簡易手控廣告燈3468.3.3簡易電腦音樂放音機3478.4LCD顯示器3498.4.1標準LCD顯示器的應用3498.4.2簡單游戲機--按鈕猜數3518.5串口通信UART3528.5.1AVR系統與PC的簡易通信3538.5.2PC控制的簡易廣告燈3548.6單總線接口和溫度計3568.7I2C總線接口和簡易IC卡讀寫器359第九章ICC AVR C編譯器的使用9.1ICC AVR的概述3659.1.1介紹ImageCraft的ICC AVR3659.1.2ICC AVR中的文件類型及其擴展名3659.1.3附注和擴充3669.2ImageCraft的ICC AVR編譯器安裝3679.2.1安裝SETUP.EXE程序3679.2.2對安裝完成的軟件進行注冊3679.3ICC AVR導游3689.3.1起步3689.3.2C程序的剖析3699.4ICC AVR的IDE環境3709.4.1編譯一個單獨的文件3709.4.2創建一個新的工程3709.4.3工程管理3719.4.4編輯窗口3719.4.5應用構筑向導3719.4.6狀態窗口3719.4.7終端仿真3719.5C庫函數與啟動文件3729.5.1啟動文件3729.5.2常用庫函數3729.5.3字符類型庫3739.5.4浮點運算庫3749.5.5標準輸入/輸出庫3759.5.6標準庫和內存分配函數3769.5.7字符串函數3779.5.8變量參數函數3799.5.9堆棧檢查函數3799.6AVR硬件訪問的編程3809.6.1訪問AVR的底層硬件3809.6.2位操作3809.6.3程序存儲器和常量數據3819.6.4字符串3829.6.5堆棧3839.6.6在線匯編3839.6.7I/O寄存器3849.6.8絕對內存地址3849.6.9C任務3859.6.10中斷操作3869.6.11訪問UART3879.6.12訪問EEPROM3879.6.13訪問SPI3889.6.14相對轉移/調用的地址范圍3889.6.15C的運行結構3889.6.16匯編界面和調用規則3899.6.17函數返回非整型值3909.6.18程序和數據區的使用3909.6.19編程區域3919.6.20調試3919.7應用舉例*3929.7.1讀/寫口3929.7.2延時函數3929.7.3讀/寫EEPROM3929.7.4AVR的PB口變速移位3939.7.5音符聲程序3939.7.68字循環移位顯示程序3949.7.7鋸齒波程序3959.7.8正三角波程序3969.7.9梯形波程序396附錄1AT89系列單片機簡介398附錄2AT94K系列現場可編程系統標準集成電路401附錄3指令集綜合404附錄4AVR單片機選型表408參 考 文 獻412

    標簽: AVR 高速嵌入式 單片機原理

    上傳時間: 2013-11-08

    上傳用戶:xcy122677

  • 匯編+保護模式+教程

    九.輸入/輸出保護為了支持多任務,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

  • 基于TMS320DM3730的H.264編碼器移植與優化方法

    提出了一種在TI公司高性能數字信號處理器TMS320DM3730上進行H.264編碼器(即x264編碼器)移植與優化的方法,詳細描述了在CCS4.2開發平臺上進行x264編碼器移植工作的基本原理和需要注意的問題。為了提高編碼速度,針對DM3730處理器的結構特點,對x264編碼器進行了優化,主要方法包括編譯器優化、內存優化、C語言代碼優化及匯編代碼優化。對x264編碼器進行的CIF格式編碼測試結果表明,在均值信噪比略微降低的前提下,編碼速度得到了顯著提高,因此獲得了更優的編碼效率。

    標簽: 3730 TMS 320 264

    上傳時間: 2013-10-30

    上傳用戶:evil

  • 數字陷波器的設計

    陷波器是無限沖擊響應(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

  • 采用高速串行收發器Rocket I/O實現數據率為2.5 G

    摘要: 串行傳輸技術具有更高的傳輸速率和更低的設計成本, 已成為業界首選, 被廣泛應用于高速通信領域。提出了一種新的高速串行傳輸接口的設計方案, 改進了Aurora 協議數據幀格式定義的弊端, 并采用高速串行收發器Rocket I/O, 實現數據率為2.5 Gbps的高速串行傳輸。關鍵詞: 高速串行傳輸; Rocket I/O; Aurora 協議 為促使FPGA 芯片與串行傳輸技術更好地結合以滿足市場需求, Xilinx 公司適時推出了內嵌高速串行收發器RocketI/O 的Virtex II Pro 系列FPGA 和可升級的小型鏈路層協議———Aurora 協議。Rocket I/O支持從622 Mbps 至3.125 Gbps的全雙工傳輸速率, 還具有8 B/10 B 編解碼、時鐘生成及恢復等功能, 可以理想地適用于芯片之間或背板的高速串行數據傳輸。Aurora 協議是為專有上層協議或行業標準的上層協議提供透明接口的第一款串行互連協議, 可用于高速線性通路之間的點到點串行數據傳輸, 同時其可擴展的帶寬, 為系統設計人員提供了所需要的靈活性[4]。但該協議幀格式的定義存在弊端,會導致系統資源的浪費。本文提出的設計方案可以改進Aurora 協議的固有缺陷,提高系統性能, 實現數據率為2.5 Gbps 的高速串行傳輸, 具有良好的可行性和廣闊的應用前景。

    標簽: Rocket 2.5 高速串行 收發器

    上傳時間: 2013-11-06

    上傳用戶:smallfish

主站蜘蛛池模板: 嵊泗县| 自治县| 舞钢市| 洛扎县| 阳江市| 申扎县| 临沭县| 安国市| 灌云县| 响水县| 老河口市| 拜泉县| 江城| 汽车| 永川市| 阿鲁科尔沁旗| 吴桥县| 洛扎县| 嫩江县| 鹤岗市| 连山| 顺平县| 上栗县| 广丰县| 托里县| 紫金县| 应城市| 肇东市| 唐山市| 乌审旗| 朔州市| 漳州市| 苏尼特左旗| 大埔区| 昌图县| 馆陶县| 盐城市| 凤城市| 中牟县| 穆棱市| 曲松县|