微機(jī)原理與匯編語(yǔ)言課設(shè)——電子琴_第1頁(yè)
微機(jī)原理與匯編語(yǔ)言課設(shè)——電子琴_第2頁(yè)
微機(jī)原理與匯編語(yǔ)言課設(shè)——電子琴_第3頁(yè)
微機(jī)原理與匯編語(yǔ)言課設(shè)——電子琴_第4頁(yè)
微機(jī)原理與匯編語(yǔ)言課設(shè)——電子琴_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、微機(jī)原理與匯編語(yǔ)言課程設(shè)計(jì)電子琴學(xué) 院: 計(jì)算機(jī)科學(xué)技術(shù) 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(工) 班 級(jí): 計(jì) 13-1 班 姓 名: 肖林英 學(xué) 號(hào): 2013170101 25 指導(dǎo)教師: 陳微 2016年 6 月 10 日微機(jī)原理與匯編語(yǔ)言課程設(shè)計(jì)任務(wù)書(shū)一、題目:電子琴二、設(shè)計(jì)的目的1. 掌握利用PC機(jī)揚(yáng)聲器發(fā)出不同頻率聲音的方法;2. 學(xué)習(xí)利用系統(tǒng)功能調(diào)用從鍵盤(pán)上讀取字符的方法;3. 掌握定時(shí)器/計(jì)數(shù)器8253的工作原理;三、設(shè)計(jì)要求編寫(xiě)程序,程序運(yùn)行時(shí)使PC 機(jī)成為一架可演奏的“鋼琴”。當(dāng)按下數(shù)字鍵1-8時(shí),依次發(fā)出1,2,3,4,5,6,7,七個(gè)高音和低音,Esc 則退出演奏狀態(tài)。獨(dú)立完

2、成課程設(shè)計(jì)。四、設(shè)計(jì)內(nèi)容及步驟1PC 機(jī)揚(yáng)聲器電路電路圖如圖1所示:圖1 PC 機(jī)揚(yáng)聲器控制電路通過(guò)給8253定時(shí)器裝入不同的計(jì)數(shù)值,可以使其輸出不同頻率的波形。當(dāng)與門(mén)打開(kāi)后,經(jīng)過(guò)放大器的放大作用,便可驅(qū)動(dòng)揚(yáng)聲器發(fā)出不同頻率的音調(diào)。為使該音調(diào)的聲音持續(xù)一段時(shí)間,要插入一段延時(shí)程序,之后再將揚(yáng)聲器關(guān)閉(關(guān)閉與門(mén))。2建立音頻表要使計(jì)算機(jī)成為可彈奏的簡(jiǎn)易電子琴,需要使用系統(tǒng)調(diào)用的01H 功能以接收鍵入字符,并且要建立一張音頻表。五、課程設(shè)計(jì)工作量每人的程序量應(yīng)在100行有效程序行以上,不得抄襲,否則給不及格成績(jī)。六、課程設(shè)計(jì)工作計(jì)劃2016年6月6日 指導(dǎo)教師講課,學(xué)生準(zhǔn)備文獻(xiàn)資料;2016年6月

3、6日2016年6月10日 每人完成自己程序并能獨(dú)立演示;2016年6月10日下午驗(yàn)收,學(xué)生撰寫(xiě)課程設(shè)計(jì)報(bào)告。指導(dǎo)教師簽字: 專業(yè)主任簽章: 微機(jī)原理與匯編語(yǔ)言課程設(shè)計(jì)指導(dǎo)教師評(píng)語(yǔ)與成績(jī)指導(dǎo)教師評(píng)語(yǔ):課程設(shè)計(jì)表現(xiàn)成績(jī): 課程設(shè)計(jì)驗(yàn)收成績(jī): 課程設(shè)計(jì)報(bào)告成績(jī): 課程設(shè)計(jì) 總成績(jī): 指導(dǎo)教師簽字: 2016年 月 日目 錄一、概述11.課題描述12.程序設(shè)計(jì)目的1二、 需求分析1三、總體設(shè)計(jì)21.電子琴程序22.單音調(diào)子程序SOUND3四、詳細(xì)設(shè)計(jì)31.揚(yáng)聲器32.界面設(shè)計(jì)4五、調(diào)試與運(yùn)行結(jié)果說(shuō)明51.主界面52.退出界面6六、課程設(shè)計(jì)總結(jié)6七、結(jié)束語(yǔ)7八、程序清單7參考文獻(xiàn)14 一、概述1.課題描

4、述隨著社會(huì)發(fā)展,計(jì)算機(jī)硬件技術(shù)越來(lái)越多的應(yīng)用到生活中的各個(gè)領(lǐng)域,人們對(duì)軟硬件技術(shù)結(jié)合開(kāi)發(fā)出來(lái)的產(chǎn)品的要求越來(lái)越迫切,需求日益增加,如今用軟硬件結(jié)合設(shè)計(jì)電子產(chǎn)品已經(jīng)成為了一大時(shí)尚。本設(shè)計(jì)編寫(xiě)的一個(gè)用PC機(jī)模擬電子琴的程序,利用PC機(jī)中的8253和鍵盤(pán)的按鍵模擬電子琴8個(gè)音節(jié)的發(fā)聲。編程使計(jì)算機(jī)的數(shù)字鍵1、2、3、4、5、6、7、8作為電子琴按鍵,按下即發(fā)出相應(yīng)的音階。在本次課程設(shè)計(jì)中,考察了我們編程的技巧、運(yùn)用Debug動(dòng)態(tài)調(diào)試工具進(jìn)行程序的調(diào)試的能力。同時(shí),本道設(shè)計(jì)題目還檢查了我們對(duì)匯編語(yǔ)言這門(mén)課程的基本知識(shí)的掌握程度。只有掌握匯編語(yǔ)言基本編程方法,掌握程序各部分功能及其相互聯(lián)系、相互作用,并

5、要熟悉基本的音樂(lè)知識(shí),才能獨(dú)立的把程序?qū)懗鰜?lái),才能把程序?qū)懞?。開(kāi)發(fā)工具:匯編語(yǔ)言 MASM FOR WINDOWS2.程序設(shè)計(jì)目的課程設(shè)計(jì)是培養(yǎng)學(xué)生運(yùn)用有關(guān)課程的基礎(chǔ)理論和技能解決實(shí)際問(wèn)題,進(jìn)一步提高學(xué)生本專業(yè)必要的基本技能、方法和創(chuàng)新能力的重要環(huán)節(jié)之一。通過(guò)課程設(shè)計(jì)使學(xué)生受到設(shè)計(jì)方法的初步訓(xùn)練,能用文字、圖形和現(xiàn)代設(shè)計(jì)方法簡(jiǎn)要、系統(tǒng)、正確地表達(dá)設(shè)計(jì)成果。微機(jī)原理與匯編語(yǔ)言課程設(shè)計(jì) 主要是訓(xùn)練學(xué)生綜合運(yùn)用學(xué)過(guò)的微機(jī)原理的軟件和硬件知識(shí),獨(dú)立完成一個(gè)實(shí)際的微機(jī)應(yīng)用設(shè)計(jì)系統(tǒng),并在實(shí)驗(yàn)室實(shí)現(xiàn)。此次課設(shè)是對(duì)個(gè)人的程序設(shè)計(jì)方法和技能的基本訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)程序設(shè)計(jì)的基本知識(shí)和基本方法,為學(xué)習(xí)后

6、繼的基礎(chǔ)課和專業(yè)課打下堅(jiān)實(shí)的基礎(chǔ)。課設(shè)所用的是匯編語(yǔ)言,它是一種機(jī)器語(yǔ)言,是計(jì)算機(jī)能提供的最快最有效的語(yǔ)言,也是能夠利用計(jì)算機(jī)所有硬件性能并能直接控制硬件的語(yǔ)言。實(shí)驗(yàn)不僅培養(yǎng)了實(shí)際動(dòng)手能力,也進(jìn)一步學(xué)習(xí)了匯編語(yǔ)言的結(jié)構(gòu)和使用方法,提高了匯編語(yǔ)言的水平。2、 需求分析本實(shí)驗(yàn)是利用微機(jī)原理試驗(yàn)箱、8255芯片、8253芯片、鍵盤(pán)、揚(yáng)聲器等硬件設(shè)備,設(shè)計(jì)簡(jiǎn)易電子琴。首先利用了編程程序,編輯了8255芯片控制字, 對(duì)其進(jìn)行初始化,使其工作在方式0,即基本輸入輸出狀態(tài),將8255的A端口設(shè)置為輸出,C端口進(jìn)行,經(jīng)CPU運(yùn)算后, 輸出到8253芯片的A端口中,由此實(shí)現(xiàn)對(duì)其的初始化。將8253芯片設(shè)置為工作

7、在方式3,即輸出對(duì)稱方波狀態(tài)。A端口為輸入,“OUT”指令可將輸出對(duì)應(yīng)一定頻率的方波送到揚(yáng)聲器中,由此實(shí)現(xiàn)發(fā)聲。本實(shí)驗(yàn)通過(guò)頻率大小控制發(fā)出聲音的高低,通過(guò)對(duì)延時(shí)程序的調(diào)用控制發(fā)出聲音的長(zhǎng)短。并通過(guò)所編程序?qū)崿F(xiàn)對(duì)鍵盤(pán)的重復(fù)掃描,重而可以彈奏多個(gè)音符的試驗(yàn)?zāi)康摹H?、總體設(shè)計(jì) 1.電子琴程序由于是用鍵盤(pán)的數(shù)字鍵1-8,要先讀取鍵盤(pán)的輸入,判斷輸入是否在1-8之間,不在就退到主菜單,若是就根據(jù)鍵值查表找出相應(yīng)的頻率,計(jì)算初值,調(diào)用發(fā)音子程序即可,此時(shí)的音長(zhǎng)固定。初值的計(jì)算方法是用輸入的clk頻率除以音符的頻率。程序流程圖如圖1所示。YNYN顯示提示信息等待鍵盤(pán)按鍵放入ALAL30>AL查表FRE

8、Q得頻率計(jì)算初值,置音長(zhǎng)返回主菜單調(diào)用8253初始化程序AL 小于1AL大于8圖1.1 電子琴程序流程圖2.單音調(diào)子程序SOUND單音調(diào)子程序的調(diào)用前需要進(jìn)行以下幾個(gè)方面工作:(1)確定相應(yīng)的音調(diào)所對(duì)應(yīng)的頻率,查表可以得到,再由頻率得到對(duì)應(yīng)的8253計(jì)數(shù)初值。(2)確定音長(zhǎng),即一個(gè)音符所持續(xù)的時(shí)間。在單音調(diào)子程序中實(shí)現(xiàn)發(fā)出一個(gè)音符的聲音,持續(xù)所需的時(shí)間,流程圖如圖2所示: 讀取8253計(jì)數(shù)初值和音長(zhǎng)8253置初值開(kāi)啟與門(mén)和8253GATE延時(shí)關(guān)閉與門(mén)和8253GATE返回圖2.1 單音調(diào)子程序流程圖 四、詳細(xì)設(shè)計(jì)1.揚(yáng)聲器在PC/XT機(jī)中,揚(yáng)聲器接口電路由8255A-5、8253-5、驅(qū)動(dòng)器和

9、低通濾波器等構(gòu)成,其中8253-5是音頻信號(hào)源,8255A-5作控制器,驅(qū)動(dòng)器用來(lái)增大8253-5輸出的TTL電平信號(hào)的驅(qū)動(dòng)能力,低通濾波器將脈沖信號(hào)轉(zhuǎn)換成接近濾波的音頻信號(hào),去驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。8253-5的計(jì)數(shù)器2的CLK2端所加的時(shí)鐘脈沖頻率為1.19318MHZ??筛鶕?jù)這個(gè)頻率和所要產(chǎn)生的聲音頻率,計(jì)算出定時(shí)常數(shù),經(jīng)編程讓計(jì)數(shù)器2輸出指定頻率的波形。8255A-5的PB0接8253-5的GATE2,作為計(jì)數(shù)器的門(mén)控信號(hào),允許或禁止8253-5計(jì)數(shù)。8255A-5的PB1接與門(mén)U87的一個(gè)輸入端,用來(lái)對(duì)計(jì)數(shù)器2的OUT2端輸出的波形作進(jìn)一步的控制,當(dāng)PB1=1時(shí),8253-5從OUT2輸出

10、的波形才能通過(guò)與門(mén)U87送到驅(qū)動(dòng)器75477的A端,送到揚(yáng)聲器插座使之發(fā)聲。當(dāng)PB1=0時(shí),OUT2輸出的波形不能通過(guò)與門(mén),揚(yáng)聲器不會(huì)發(fā)聲。當(dāng)PB1PB0=11時(shí)揚(yáng)聲器能連續(xù)發(fā)聲。 2.界面設(shè)計(jì)主界面為一架電子琴,并采用漂亮的字體作為提示語(yǔ)。利用int 10h實(shí)現(xiàn),利用宏定義畫(huà)線和矩形。DRAWSQRE MACRO START_X,START_Y,END_X,END_Y,COLORLOCAL ROW_UP,ROW_DOWN,RANK_LEFT,RANK_RIGHTPUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV AH,0CH MOV AL,COLOR MO

11、V BH,0 MOV CX,START_X MOV DX,START_YROW_UP: ;畫(huà)上邊 INT 10H INC CX CMP CX,END_X JNE ROW_UPRANK_RIGHT: ;畫(huà)右邊 INT 10H INC DX CMP DX,END_Y JNE RANK_RIGHT MOV CX, START_X ;下邊起始點(diǎn) MOV SI,END_X INC SIROW_DOWN: ;畫(huà)下邊 INT 10H INC CX CMP CX,SI JNE ROW_DOWN MOV DX,START_Y ;右邊起始點(diǎn) MOV CX,START_XRANK_LEFT: ;畫(huà)右邊 INT 10

12、H INC DX CMP DX, END_Y JNE RANK_LEFT POP SI POP DX POP CX POP BX POP AXENDM五、調(diào)試與運(yùn)行結(jié)果說(shuō)明1.主界面圖5.1 主界面2.退出界面圖5.2 退出界面六、課程設(shè)計(jì)總結(jié)本次課程設(shè)計(jì)由我、鄧云杰、劉萌萌三個(gè)同學(xué)協(xié)作共同完成。通過(guò)這次的課程設(shè)計(jì),讓我對(duì)微機(jī)原理與匯編語(yǔ)言這門(mén)課有了更深的認(rèn)識(shí),系統(tǒng)的掌握了微機(jī)原理與匯編語(yǔ)言的應(yīng)用知識(shí)。 這次課程設(shè)計(jì)我們做的是用PC機(jī)模擬電子琴發(fā)聲,通過(guò)老師的提示及相關(guān)實(shí)驗(yàn)指導(dǎo)書(shū)的資料我們找到了入手點(diǎn),在已有基礎(chǔ)題目的基礎(chǔ)上加入創(chuàng)新內(nèi)容。在基礎(chǔ)功能的實(shí)現(xiàn)上并沒(méi)有遇到問(wèn)題,主要也是有參考內(nèi)容的指

13、導(dǎo),同時(shí)通過(guò)參考內(nèi)容更好的把握了設(shè)計(jì)的整體思路及各個(gè)模塊的細(xì)節(jié)。但是在拓展功能上就有不少的問(wèn)題。對(duì)于在程序設(shè)計(jì)中出現(xiàn)的一些問(wèn)題,我們通過(guò)翻閱相關(guān)資料和請(qǐng)教老師,最終都得到了解決。 雖然此次課程設(shè)計(jì)的過(guò)程是艱辛的,但結(jié)果還是令我們比較欣慰的。提高了自己的分析解決問(wèn)題的能力,并且使自己所學(xué)的知識(shí)與實(shí)踐相結(jié)合,應(yīng)用到實(shí)踐當(dāng)中。遇到問(wèn)題時(shí),應(yīng)該對(duì)自己有信心,但也要知道自己的不足,認(rèn)真去查閱資料和學(xué)習(xí)不懂的知識(shí)。另外在本次課程設(shè)計(jì)中,培養(yǎng)了同學(xué)之間協(xié)作精神,有問(wèn)題時(shí)一起討論共同解決問(wèn)題,提高了自己的合作能力。七、結(jié)束語(yǔ) 匯編語(yǔ)言作為一種低級(jí)程序設(shè)計(jì)語(yǔ)言,既然是低級(jí)所以應(yīng)該是最底層的,與我們計(jì)算機(jī)內(nèi)部的結(jié)

14、構(gòu)聯(lián)系應(yīng)該聯(lián)系很密切,而且在我們學(xué)習(xí)中也深刻的了解到了這一點(diǎn) 。比如說(shuō)后來(lái)學(xué)到的寄存器、 中斷、 還要各種尋址方式以及進(jìn)棧出棧, 好多的就是設(shè)計(jì)到計(jì)算機(jī)硬件 。 學(xué)完匯編這門(mén)課我也對(duì)之前的高級(jí)語(yǔ)言中的一些知識(shí)有了更新的認(rèn)識(shí), 能夠讓我們更好的理解高級(jí)語(yǔ)言,尤其是高級(jí)語(yǔ)言中的 C語(yǔ)言。匯編語(yǔ)言對(duì)于內(nèi)存的操作都是基于內(nèi)存地址的,而 C語(yǔ)言中最令人頭疼的指針概念,說(shuō)白了就是內(nèi)存的地址指針的學(xué)習(xí)和應(yīng)用中最頭疼的就是在指針這個(gè)抽象的概念和實(shí)際的內(nèi)存單元之問(wèn)建立思維映射, 而這些恰恰是我們?cè)趨R編語(yǔ)言學(xué)習(xí)中頻繁做的一件平常事另外,對(duì)于 c語(yǔ)言中的數(shù)據(jù)類型形參實(shí)參函數(shù)調(diào)用全局變量局部變量等概念及操作, 我們都

15、可以用匯編語(yǔ)言中的一些操作相關(guān)聯(lián), 把這些抽象的概念和過(guò)程, 通過(guò)匯編語(yǔ)言形成一個(gè)具體的映像, 深度割析,這樣我們才能真正的學(xué)會(huì)學(xué)好 C 語(yǔ)言計(jì)算機(jī)科學(xué)的各個(gè)方面是一個(gè)統(tǒng)一的整體, 只有多方面穿插, 交互才能更好的搭建計(jì)算機(jī)知識(shí)體系。 我想如果想學(xué)好計(jì)算機(jī)編程技能, 如果想做一名合格的編程人員, 如果想在計(jì)算機(jī)編程之路走的更遠(yuǎn), 我們也必須從匯編語(yǔ)言開(kāi)始, 才能完整、完善的建立計(jì)算機(jī)編程知識(shí)體系! 所以對(duì)于我自己來(lái)說(shuō), 要以今天的學(xué)習(xí)為跳板, 為今后的匯編語(yǔ)言的繼續(xù)學(xué)習(xí)打好基礎(chǔ)。愿自己在計(jì)算機(jī)這條道路上越走越遠(yuǎn)。本次設(shè)計(jì)得到了老師的大力支持和幫助,其中老師對(duì)此次設(shè)計(jì)的題目的主要難度以及一些要求

16、和目的給出了詳細(xì)的解釋。同學(xué)對(duì)設(shè)計(jì)中遇到的匯編語(yǔ)言方面的知識(shí)給予了很大的幫助。 感謝陳微老師這學(xué)期對(duì)我們的諄諄教導(dǎo)、對(duì)微機(jī)原理課程的認(rèn)真講解以及對(duì)課程設(shè)計(jì)的細(xì)心指導(dǎo)。您的認(rèn)真負(fù)責(zé)讓我感覺(jué)到了一個(gè)電腦工作者所要具備的素質(zhì),您的講課風(fēng)格讓我對(duì)微機(jī)原理這門(mén)課產(chǎn)生了濃厚興趣,并會(huì)更努力的去學(xué)習(xí)它! 八、程序清單DRAW MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAW_NEXT;local:避免宏重復(fù)調(diào)用時(shí),標(biāo)號(hào)的重復(fù);功能:畫(huà)填充的矩形;使用條件:START_X<END_X,START_Y<END_YPUSH AXPUSH BX PUS

17、H CX PUSH DX MOV AH,0CH ;寫(xiě)像素點(diǎn) MOV AL,COLOR ;設(shè)置顏色 MOV BH,0 ;選用頁(yè)號(hào)0 MOV CX,START_X ;列起始點(diǎn) MOV DX,START_Y ;行起始點(diǎn)DRAW_NEXT: INT 10H ;畫(huà)點(diǎn) INC CX ;畫(huà)橫線 CMP CX,END_X ;比較行是否畫(huà)完 JNE DRAW_NEXT ;畫(huà)另一行 MOV CX, START_X ;另一行的起始點(diǎn) INC DX CMP DX,END_Y ;比較列是否畫(huà)完 JNE DRAW_NEXT ;未完繼續(xù)畫(huà) POP DX POP CX POP BX POP AXENDMDRAWSQRE MA

18、CRO START_X,START_Y,END_X,END_Y,COLORLOCAL ROW_UP,ROW_DOWN,RANK_LEFT,RANK_RIGHT;功能:畫(huà)不填充的矩形PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV AH,0CH MOV AL,COLOR MOV BH,0 MOV CX,START_X MOV DX,START_YROW_UP: ;畫(huà)上邊 INT 10H INC CX CMP CX,END_X JNE ROW_UPRANK_RIGHT: ;畫(huà)右邊 INT 10H INC DX CMP DX,END_Y JNE RANK_RIG

19、HT MOV CX, START_X ;下邊起始點(diǎn) MOV SI,END_X INC SIROW_DOWN: ;畫(huà)下邊 INT 10H INC CX CMP CX,SI JNE ROW_DOWN MOV DX,START_Y ;右邊起始點(diǎn) MOV CX,START_XRANK_LEFT: ;畫(huà)右邊 INT 10H INC DX CMP DX, END_Y JNE RANK_LEFT POP SI POP DX POP CX POP BX POP AXENDMDATAS SEGMENT;此處輸入數(shù)據(jù)段代碼 DATA1 DB 49h,56h,62h,66h,74h,83h,94h,10h ;音頻表

20、NUM DB ? ;NUM為8253計(jì)數(shù)器初值的序號(hào) ;白色琴鍵坐標(biāo) ST_LX DW 50,61,72,83,94,105,116 ST_MX DW 127,138,149,160,171,182,193 ST_HX DW 204,215,226,237,248,259,270 ST_Y DW 50 ED_LX DW 60,71,82,93,104,115,126 ED_MX DW 137,148,159,170,181,192,203 ED_HX DW 214,225,236,247,258,269,280 ED_Y DW 90 ;黑色琴鍵坐標(biāo) BT_X DW 57,68,90,101,1

21、12 DW 134,145,167,178,189 DW 211,222,244,254,265 BT_Y DW 50 BD_X DW 64,75,97,108,119 DW 141,152,174,185,196 DW 218,229,251,262,273 BD_Y DW 70 ;定義在屏幕繪制字 START_COL DB ? ;存儲(chǔ)起始行 TEXT DB 16 ;起始行 DB 2 ;起始列 DB 31H ;字體顏色 DB 'This Is My Curriculum Design',0FFH DB 'Thank You For Your Support',

22、0FFH DB '1.PRESS 18 TO PLAY',0FFH DB '2.PRESS ESC TO EXIT',0FFH,0FFH ;顯示字DATAS ENDSSTACKS SEGMENT;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSMAIN PROC NEARSTART: ;此處輸入代碼段代碼CALL INIT ;調(diào)用初始化程序 MOV BX,OFFSET DATA1 ;獲取音頻表 SKY: MOV AH,07H ;無(wú)回顯過(guò)濾的字符輸入 AL=8位數(shù)據(jù) INT 2

23、1H CMP AL,27 ;如果按CTRL+C,退出 JE EXIT1 CMP AL,31H ;若AL小于1,循環(huán),否則繼續(xù)執(zhí)行程序,31H是ASKII碼'1' JL SKY CMP AL,38H ;若AL大于8,循環(huán),否則繼續(xù)執(zhí)行程序,38H是ASKII碼'8' JG SKY SUB AL,31H MOV AH,00H MOV DI,BX+SI MOV SI,AX MOV NUM,AL ;將所獲取的鍵值賦給8253計(jì)數(shù)器 MOV AL,BXSI ;寄存器基址加變址尋址方式 PUSH BX CALL INIT1CALL WAITFIN AL,61HAND AL,

24、0FCHOUT 61H,AL ; 關(guān)閉揚(yáng)聲器 JMP SKYMAIN ENDP ;8253初始化子程序INIT1 PROC NEAR ;選擇方式三通道二 MOV DL,0AH ;控制揚(yáng)聲器聲音MUL DL MOV DI,AX MOV AL,0B6H OUT 43H,AL MOV DX,0012H MOV AX,34DEH DIV DI OUT 42H,AL MOV AL,AH OUT 42H,AL IN AL,61H ;聲音開(kāi)始 MOV AH,AL OR AL,03H OUT 61H,AL RETINIT1 ENDP;延時(shí)子程序WAITF PROC NEAR PUSH AX ;保護(hù)寄存器WAI

25、TF1: IN AL,61H ;讀取PB端口值A(chǔ)ND AL,10H ;低四位清零CMP AL,AH JE WAITF1 MOV AH,AL LOOP WAITF1 POP AX RET WAITF ENDP INIT PROC NEAR;初始化屏幕:畫(huà)琴鍵MOV AX,DATAS MOV DS,AX MOV AH,0 ;設(shè)置屏幕 MOV AL,0DH INT 10H ;BIOS 對(duì)屏幕及顯示器所提供的服務(wù)程序 MOV AH,0BH MOV BH,0 MOV BL,09H ;背景色 INT 10H CALL SHOW_TEXT DRAW 45,30,285,94,05H DRAWSQRE 45,30,285,94,0DH DRAWSQRE 49,48,280,49,00H LEA SI,ST_LX ;畫(huà)21個(gè)白色鍵 LEA DI,ED_LX MOV CX,21INIT_DRAW: DRAW SI,ST_Y,DI,ED_Y,0FH DRAW SI,90,DI,93,07H ;陰影 ADD SI,2 ADD DI,2 LOOP INIT_DRAW LEA SI,BT_X ;畫(huà)15個(gè)黑色鍵 LEA DI,B

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論