利用中斷實(shí)現(xiàn)發(fā)聲程序----課程設(shè)計(jì)_第1頁(yè)
利用中斷實(shí)現(xiàn)發(fā)聲程序----課程設(shè)計(jì)_第2頁(yè)
利用中斷實(shí)現(xiàn)發(fā)聲程序----課程設(shè)計(jì)_第3頁(yè)
利用中斷實(shí)現(xiàn)發(fā)聲程序----課程設(shè)計(jì)_第4頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 課程設(shè)計(jì)說(shuō)明書(shū) 課程名稱(chēng): 微機(jī)原理課程設(shè)計(jì) 題 目: 利用中斷實(shí)現(xiàn)發(fā)聲程序 院 系: 力物學(xué)院 專(zhuān)業(yè)班級(jí): 光電16-1班 學(xué) 號(hào): 2016305271 學(xué)生姓名: 任陳飛 指導(dǎo)教師: 郭娟 2019年 6月28日安徽理工大學(xué)課程設(shè)計(jì)(論文)任務(wù)書(shū) 數(shù)學(xué)與大數(shù)據(jù)學(xué)院 院系 信計(jì) 教研室學(xué) 號(hào)2016305271學(xué)生姓名任陳飛專(zhuān)業(yè)(班級(jí)) 光電16-1班設(shè)計(jì)題目 利用中斷實(shí)現(xiàn)發(fā)聲程序設(shè)計(jì)技術(shù)參數(shù)windows操作系統(tǒng)、masm5集成開(kāi)發(fā)環(huán)境設(shè)計(jì)要求用匯編語(yǔ)言編寫(xiě)程序完成發(fā)聲子程序,要求使用中斷程序?qū)崿F(xiàn)工作量1.編寫(xiě)代碼 2.設(shè)計(jì)說(shuō)明書(shū)不少于12頁(yè) 3.參考文獻(xiàn)不少于5個(gè)工作計(jì)劃2019.6

2、.24 接受設(shè)計(jì)任務(wù),收集資料2019.6.25 學(xué)習(xí)中斷原理,中斷服務(wù)程序設(shè)置方式2019.6.26 發(fā)聲子程序原理2019.6.28 編碼調(diào)試 書(shū)寫(xiě)設(shè)計(jì)說(shuō)明書(shū)2019.6.29 提交檢查參考資料1. 周荷琴.微機(jī)原理接口技術(shù)m.北京:清華大學(xué)出版社,2016.2. 徐晨.微機(jī)原理與應(yīng)用m.北京:高等教育出版社,2004.3. 王爽.匯編語(yǔ)言m.北京:清華大學(xué)出版社,2008.4. 孫德文.微型計(jì)算機(jī)技術(shù)m.高等教育出版社, 2010.5. 許立鋅.微型計(jì)算機(jī)原理及應(yīng)用m.北京:機(jī)械工業(yè)出版社,2003.指導(dǎo)教師簽字 教研室主任簽字 2019年6月24日 安徽理工大學(xué)課程設(shè)計(jì)(論文)成績(jī)?cè)u(píng)定

3、表學(xué)生姓名: 任陳飛 學(xué)號(hào): 2016305271 專(zhuān)業(yè)班級(jí): 光電16-1班 課程設(shè)計(jì)題目: 利用中斷實(shí)現(xiàn)發(fā)聲程序 指導(dǎo)教師評(píng)語(yǔ): 成績(jī): 指導(dǎo)教師: 年 月 日目錄1概述51.1 masm匯編開(kāi)發(fā)環(huán)境簡(jiǎn)介51.2 設(shè)計(jì)要求52需求分析52.1 cpu與i/o外設(shè)通信3種控制方式52.2 中斷方式實(shí)現(xiàn)原理72.2.1中斷服務(wù)子程序72.3 主程序72.3.1主程序負(fù)責(zé)對(duì)中斷向量進(jìn)行設(shè)置和恢復(fù)等操作72.3.2主程序的延時(shí)控制83程序?qū)崿F(xiàn)83.1 程序83.2 程序和運(yùn)行界面114總結(jié)12參考文獻(xiàn)141概述1.1 masm匯編開(kāi)發(fā)環(huán)境簡(jiǎn)介masm是microsoft macro assembl

4、er的縮寫(xiě),是微軟公司為x86微處理器家族開(kāi)發(fā)的匯編開(kāi)發(fā)環(huán)境,擁有可視化的開(kāi)發(fā)界面,使開(kāi)發(fā)人員不必再使用dos環(huán)境進(jìn)行匯編的開(kāi)發(fā),編譯速度快,支持80x86匯編以及win32asm,是windows下開(kāi)發(fā)匯編的利器。它與windows平臺(tái)的磨合程度非常好,但是在其他平臺(tái)上就有所限制,使用masm的開(kāi)發(fā)人員必須在windows下進(jìn)行開(kāi)發(fā)。它支持的宏很靈巧,既廣泛又多樣性,結(jié)構(gòu)化程序的慣用語(yǔ)法,包含高級(jí)架構(gòu)式的循環(huán)、程序調(diào)用,以及輪替 (alternation)(因此,masm 算是高級(jí)匯編器的一個(gè)范本)。1.2 設(shè)計(jì)要求利用中斷方式,編寫(xiě)程序?qū)崿F(xiàn)每隔10秒響鈴一次,并在屏幕上顯示“the bel

5、l is ring”2需求分析2.1 cpu與i/o外設(shè)通信3種控制方式cpu和i/o設(shè)備進(jìn)行輸入輸出數(shù)據(jù)的方式有三種:程序直接控制方式,中斷方式和dma方式。三種方式的特點(diǎn):(1)程序直接控制方式最簡(jiǎn)單的i/o控制方式是處理機(jī)對(duì)i/o設(shè)備直接進(jìn)行控制,采取程序i/o(programmed i/o)方式或稱(chēng)為忙一等待方式。cpu首先向設(shè)備控制器的控制寄存器發(fā)出一條i/o指令啟動(dòng)i/o設(shè)備進(jìn)行數(shù)據(jù)傳輸,硬件同時(shí)把狀態(tài)寄存器中的忙/閑標(biāo)志busy置為1,表示該i/o設(shè)備尚未輸入完一個(gè)字(符)。接著cpu應(yīng)重復(fù)讀取狀態(tài)寄存器忙/閑標(biāo)志busy進(jìn)行測(cè)試(cpu不能執(zhí)行其他進(jìn)程),直至busy=0,表示

6、該i/o設(shè)備已將輸入數(shù)據(jù)送入到i/o控制器的數(shù)據(jù)寄存器中,于是cpu將從數(shù)據(jù)寄存器中取出數(shù)據(jù),送入內(nèi)存的指定單元,接著,再啟動(dòng)去讀下一個(gè)數(shù)據(jù),并置busy=l。在程序i/o方式中,由于cpu的速度遠(yuǎn)遠(yuǎn)高于i/o設(shè)備,導(dǎo)致cpu的絕大部分時(shí)間都處于等待i/o設(shè)備完成而循環(huán)測(cè)試之中,造成了cpu的極大浪費(fèi)。但是它管理簡(jiǎn)單,在要求不高的場(chǎng)合可以被采用。(2)中斷控制在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,對(duì)i/o設(shè)備的控制,廣泛地采用中斷(interrupt-driven)方式,即當(dāng)某進(jìn)程要啟動(dòng)某個(gè)i/o設(shè)備時(shí),便由cpu向相應(yīng)的設(shè)備控制器的控制寄存器發(fā)出一條i/o命令,然后立即返回繼續(xù)執(zhí)行原來(lái)的任務(wù)。設(shè)備控制器便按照

7、該命令的要求去控制i/o設(shè)備。若i/o設(shè)備忙,則由驅(qū)動(dòng)程序?qū)⒄?qǐng)求插入設(shè)備等待隊(duì)列。此時(shí), cpu與i/o設(shè)備處于并行工作狀態(tài)。例如,在輸入時(shí),當(dāng)設(shè)備控制器收到 cpu發(fā)來(lái)的讀命令后,便準(zhǔn)備接收從相應(yīng)輸入設(shè)備送來(lái)的數(shù)據(jù)。一旦數(shù)據(jù)進(jìn)入數(shù)據(jù)寄存器,控制器便通過(guò)中斷請(qǐng)求線int向cpu發(fā)送一中斷信號(hào),中斷子程序由cpu讀取狀態(tài)寄存器忙/閑標(biāo)志busy進(jìn)行測(cè)試檢查輸入過(guò)程中是否出錯(cuò),若無(wú)錯(cuò),便從數(shù)據(jù)寄存器中讀出數(shù)據(jù),寫(xiě)入指定內(nèi)存單元。所以,中斷驅(qū)動(dòng)方式在i/o設(shè)備輸入數(shù)據(jù)的過(guò)程中,無(wú)需 cpu干預(yù),可以使cpu與i/o設(shè)備并行工作。僅當(dāng)輸完一個(gè)數(shù)據(jù)時(shí),才需 cpu花費(fèi)極短的時(shí)間去進(jìn)行中斷處理。從而大大地

8、提高了整個(gè)系統(tǒng)的資源利用率及吞吐量,特別是cpu的利用率。(3)dma控制中斷驅(qū)動(dòng)i/o方式雖然大大提高了主機(jī)的利用率,但是它以字(節(jié))為單位進(jìn)行數(shù)據(jù)傳送,每完成一個(gè)字(節(jié))的傳送,控制器便要向cpu請(qǐng)求一次中斷(做保存現(xiàn)場(chǎng)信息,恢復(fù)現(xiàn)場(chǎng)等工作),仍然占用了cpu的許多時(shí)間。這種方式對(duì)于高速的塊設(shè)備的i/o控制顯然是不適合。為了進(jìn)一步減少cpu對(duì)i/o的干預(yù),引入了直接存儲(chǔ)器訪問(wèn)dma(direct memory access)控制方式。dma方式是一種完全由硬件執(zhí)行io數(shù)據(jù)交換的工作方式,它需要使用一個(gè)專(zhuān)門(mén)的dma控制器(dmac),內(nèi)含于設(shè)備控制器,dmac中有控制狀態(tài)寄存器、傳送字節(jié)計(jì)數(shù)

9、器、內(nèi)存地址寄存器和數(shù)據(jù)緩沖寄存器。在這種方式中,dmac采用盜竊總線控制權(quán)的方法從cpu接管對(duì)總線的控制,成批的數(shù)據(jù)交換不經(jīng)過(guò)cpu而直接在內(nèi)存和io設(shè)備之間進(jìn)行。dma方式下的數(shù)據(jù)傳送過(guò)程可分為三個(gè)階段:1) 預(yù)處理階段:當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),cpu把準(zhǔn)備存放輸入數(shù)據(jù)的內(nèi)存起始地址以及要傳送的字節(jié)數(shù)分別送入dmac中的內(nèi)存地址寄存器和傳送字節(jié)計(jì)數(shù)器。另外,還把控制狀態(tài)寄存器中的中斷允許位和啟動(dòng)位置成1,從而啟動(dòng)設(shè)備,開(kāi)始進(jìn)行數(shù)據(jù)輸入。2) 數(shù)據(jù)傳送階段:發(fā)出數(shù)據(jù)傳輸要求的進(jìn)程進(jìn)入等待狀態(tài),進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程占據(jù)cpu。dmac不斷地竊取cpu工作周期,執(zhí)行數(shù)據(jù)傳送的操作:向內(nèi)存發(fā)

10、出地址和控制信號(hào),進(jìn)行地址修改,對(duì)傳送字的個(gè)數(shù)計(jì)數(shù),直到所要求的字節(jié)全部傳送完畢。   3) 后處理階段:dmac在傳送完所有字節(jié)時(shí),通過(guò)中斷請(qǐng)求線發(fā)出中斷信號(hào)。cpu在接收到中斷信號(hào)后,轉(zhuǎn)入中斷處理程序進(jìn)行后續(xù)處理。中斷處理結(jié)束后,cpu返回到被中斷的進(jìn)程中,或切換到新的進(jìn)程上下文環(huán)境中,繼續(xù)執(zhí)行。dma方式起到代理cpu的功能,較之中斷驅(qū)動(dòng)方式,又是成百倍地減少了cpu對(duì) i/o控制的干預(yù),進(jìn)一步提高了cpu與i/o設(shè)備的并行操作程度。2.2 中斷方式實(shí)現(xiàn)原理中斷工作原理:計(jì)算技術(shù)里中斷過(guò)程,就是主芯片的外部信號(hào)或內(nèi)部信號(hào),中斷了該芯片正在執(zhí)行的程序,主芯片轉(zhuǎn)

11、而處理由該信號(hào)引發(fā)的其他程序,結(jié)束后再回到中斷的“斷點(diǎn)”,繼續(xù)執(zhí)行原有程序。2.2.1中斷服務(wù)子程序(1)利用揚(yáng)聲器發(fā)出聲音端口號(hào)為61h的設(shè)備控制器的第1位交替為1和0,該位與揚(yáng)聲器的脈沖門(mén)相連,當(dāng)?shù)谝晃挥?變0或由0變1,且維持一段時(shí)間,產(chǎn)生一個(gè)脈沖電流,經(jīng)放大后送至揚(yáng)聲器發(fā)出聲音。61h的第0位和振蕩器相連,不需要振蕩器發(fā)聲,所以把它置0。(2)10秒控制10秒控制:定時(shí)器每秒鐘中斷18.2次,每次調(diào)用一個(gè)1ch類(lèi)型的中斷。系統(tǒng)中原有的1ch類(lèi)型中斷服務(wù)子程序沒(méi)有執(zhí)行任何功能。即每次中斷不執(zhí)行任何操作返回主程序。替換原有中斷服務(wù)程序,變?yōu)橛脩?hù)的發(fā)聲子程序ring。10秒鐘將進(jìn)行182次中

12、斷,在第182次中斷時(shí)執(zhí)行發(fā)聲功能,并重置計(jì)數(shù)次數(shù)182,其他直接跳出中斷服務(wù)子程序。2.3 主程序2.3.1主程序負(fù)責(zé)對(duì)中斷向量進(jìn)行設(shè)置和恢復(fù)等操作中斷向量的存取:(1)設(shè)置中斷向量:mov dx, offset ring;新偏移量送dxmov ax, seg ringmov ds, ax;新段址送dsmov al, 1chmov ah, 25hint 21h;寫(xiě)入新的中斷向量(2)取中斷向量:mov al,1ch;取中斷向量mov ah,35hint 21hpush es;存原中斷向量段址push bx;存原中斷向量偏移量2.3.2主程序的延時(shí)控制 延時(shí)控制目的是延長(zhǎng)主程序執(zhí)行期間給中斷服

13、務(wù)程序機(jī)會(huì)實(shí)現(xiàn)中斷。mov bx, 1234hmov dx, bxloop1: mov cx,bxdelay: loop delay dec dx loop loop13程序?qū)崿F(xiàn)3.1 程序數(shù)據(jù)段:datasegmentcount dw 1mess db the bell is ring!, 0dh,0ah,$data ends主程序:code segmentassume cs:code,ds:data,es:datamain proc farstart: push dssub ax, axpush axmov ax, datamov ds, axmov al, 1ch;取中斷向量mov ah

14、, 35hint 21hpush es;存原中斷向量段址push bx;存原中斷向量偏移量push dsmov dx,offset ring;新偏移量送dxmov ax, seg ringmov ds,ax;新段址送dsmov al, 1chmov ah, 25hint 21h;寫(xiě)入新的中斷向量pop dsin al,21h;讀取中斷屏蔽字and al,11111110b;允許定時(shí)器中斷out 21h, alsti; 開(kāi)中斷mov bx,50delay: mov di, 65535delay2:mov si,65535;延時(shí) delay1:dec sijnz delay1dec dijnz d

15、elay2pop dx;恢復(fù)原中斷向量pop dsmov al, 1chmov ah, 25hint 21hretmain endp中斷服務(wù)程序:ring proc nearpush ds;各工作寄存器內(nèi)容入棧push axpush cxpush dxmov ax, datamov ds, axsti dec count;計(jì)秒值 jnz exit mov dx, offset mess mov ah, 09h int 21h mov dx, 100in al, 61hand al, 0fchsound: xor al, 02out 61h,al;揚(yáng)聲器發(fā)聲mov cx, 140hwait1:

16、loop wait1;延時(shí)等待dec dxjne soundmov count, 182exit: cli;關(guān)中斷pop dxpop cxpop axpop dsiret;中斷返回ring endp3.2 程序和運(yùn)行界面 圖3-1 程序1 圖3-2 程序2 圖3-3 運(yùn)行結(jié)果4總結(jié)不知不覺(jué),微機(jī)原理與接口技術(shù)課程已經(jīng)結(jié)束了?;叵肫饋?lái)受益匪淺,主要是加深了對(duì)計(jì)算機(jī)的一些硬件情況和運(yùn)行原理的理解和匯編語(yǔ)言的編寫(xiě),期間也聽(tīng)老師講過(guò),微機(jī)原理這門(mén)課程是比較偏硬件一點(diǎn)的。正是因?yàn)檫@一點(diǎn),我還是對(duì)它比較喜歡的,因?yàn)樗臀业膶?zhuān)業(yè)方向“光電信息”有很大的聯(lián)系,在光電信息領(lǐng)域很多場(chǎng)合要應(yīng)用到微機(jī),本著想就業(yè)好的

17、心態(tài),因此對(duì)該課程的學(xué)習(xí)還是有濃厚的興趣的。下面談?wù)勥@期學(xué)習(xí)該課程的心得與體會(huì):剛開(kāi)始接觸這門(mén)課程的時(shí)候,感覺(jué)到它似乎非常的容易,尤其是第一章,它講到的都是一些計(jì)算機(jī)的發(fā)展歷程,聽(tīng)的是津津有味的,知道原來(lái)計(jì)算機(jī)是那么來(lái)的啊!這時(shí)我有一個(gè)感想,當(dāng)初發(fā)明出第一臺(tái)計(jì)算機(jī)的人是多么的偉大啊,使人在計(jì)算復(fù)雜問(wèn)題上,速度得到了很大的提高,隨著時(shí)代的發(fā)展,計(jì)算機(jī)的運(yùn)行速度也越來(lái)越快,cpu由原來(lái)的m級(jí)發(fā)展到了g級(jí),是多么令人驚奇的一個(gè)進(jìn)步,到了21世紀(jì),計(jì)算機(jī)得到了充足的發(fā)展,it行業(yè)也成為了一個(gè)熱門(mén)的行業(yè),如果專(zhuān)業(yè)技能強(qiáng)的話,一般比其它行業(yè)拿的工資都要高,同時(shí)也就增添了我對(duì)它學(xué)習(xí)的信心。就像我們學(xué)的這個(gè)微機(jī)原理與接口技術(shù)課,如果能把它融會(huì)貫通的話,對(duì)專(zhuān)業(yè)的學(xué)習(xí)和深造都會(huì)有很大的益處,對(duì)將來(lái)的就業(yè)也會(huì)有極大的幫助。其實(shí)我覺(jué)得,在學(xué)習(xí)微機(jī)原理這一塊,最讓我覺(jué)得棘手就是這個(gè)匯編語(yǔ)言了,在學(xué)它的過(guò)程中,覺(jué)得還是有點(diǎn)吃力,尤其是它的指令很多的,有時(shí)候總是把它給記混了,所以在做練習(xí)的時(shí)候這個(gè)問(wèn)題最突出了,如果是自己寫(xiě)程序的話,總是寫(xiě)不對(duì),到計(jì)算機(jī)上也運(yùn)行不了,唯一的解決辦法就是看參考書(shū)上的程序再模仿編寫(xiě),但是自己的編程能力上沒(méi)有得到有效的提高。這也有可能是自己學(xué)習(xí)方法上的不足吧!在今后的學(xué)習(xí)中要針對(duì)性的改

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論