版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> ( 2012 -- 2013年度第 一 學(xué)期)</p><p> 名 稱:微機(jī)原理與匯編語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)</p><p> 題 目: 匯編語(yǔ)言編程實(shí)踐及電子鐘設(shè)計(jì) </p><p> 院 系: 計(jì)算機(jī)系
2、 </p><p> 班 級(jí): 信安1001 </p><p> 學(xué) 號(hào): </p><p> 學(xué)生姓名: </p><p>
3、; 指導(dǎo)教師: </p><p> 設(shè)計(jì)周數(shù): 2 </p><p> 成 績(jī): </p><p> 日期:2013 年 1 月 18 日</p><p>
4、 《微機(jī)原理與匯編語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)》評(píng)分表</p><p><b> 任 務(wù) 書</b></p><p><b> 一、 目的與要求</b></p><p> 本課程設(shè)計(jì)包含軟件部分和硬件部分兩個(gè)環(huán)節(jié)。</p><p> 軟件部分:進(jìn)一步熟悉匯編語(yǔ)言設(shè)計(jì)方法和步驟,完成在有限的課內(nèi)實(shí)
5、驗(yàn)環(huán)節(jié)無(wú)法涉及到的具有綜合設(shè)計(jì)性的軟件實(shí)驗(yàn),如中斷程序設(shè)計(jì)、I/O程序設(shè)計(jì)、宏設(shè)計(jì)等。</p><p> 硬件部分:利用偉福試驗(yàn)設(shè)備中的8253可編程定時(shí)/計(jì)數(shù)器,8259中斷控制器,8255可編程并行接口芯片和七段數(shù)碼管等設(shè)計(jì)一個(gè)電子鐘電路,并編制一個(gè)程序使電子鐘能正常運(yùn)行。 </p><p> 通過(guò)軟硬件環(huán)節(jié)的設(shè)計(jì)和調(diào)試,鞏固所學(xué)知識(shí),增強(qiáng)動(dòng)手能力,提高綜合性工程素質(zhì)。</p
6、><p><b> 二、 主要內(nèi)容</b></p><p> 軟件部分:1.熟悉編程環(huán)境,完善前期電話號(hào)碼本設(shè)計(jì)的功能;2.顯示器I/O程序設(shè)計(jì),完成窗口控制程序;3.中斷程序設(shè)計(jì),完成內(nèi)部中斷服務(wù)程序和外部中斷服務(wù)程序設(shè)計(jì);4.發(fā)聲系統(tǒng)設(shè)計(jì);5.鍵盤程序設(shè)計(jì)。</p><p> 硬件部分:1.總體模塊設(shè)計(jì),查閱資料,設(shè)計(jì)主程序和中斷服務(wù)程序
7、的流程;2.詳細(xì)設(shè)計(jì),完成軟硬件模塊的框架。3.調(diào)試,對(duì)前述工作進(jìn)一步細(xì)化;4.完善功能,實(shí)現(xiàn)電子鐘的準(zhǔn)確運(yùn)行,并進(jìn)一步改進(jìn)其功能;5.驗(yàn)收、實(shí)驗(yàn)報(bào)告撰寫。</p><p><b> 三、 進(jìn)度計(jì)劃</b></p><p> 四、 設(shè)計(jì)(實(shí)驗(yàn))成果要求</p><p> 1.軟件環(huán)節(jié)要求掌握各環(huán)節(jié)的設(shè)計(jì)原理、能實(shí)現(xiàn)各環(huán)節(jié)要求的功能。<
8、;/p><p> 2.硬件環(huán)節(jié)要求利用相關(guān)接口芯片,實(shí)現(xiàn)電子鐘的準(zhǔn)確運(yùn)行等功能。</p><p> 3.總結(jié)實(shí)驗(yàn),撰寫實(shí)驗(yàn)報(bào)告。</p><p><b> 五、 考核方式</b></p><p> 實(shí)驗(yàn)結(jié)果(60%)+實(shí)驗(yàn)報(bào)告(30%)+實(shí)驗(yàn)過(guò)程表現(xiàn)(10%)</p><p> 1.驗(yàn)收:完
9、成課程設(shè)計(jì)題目后由指導(dǎo)老師驗(yàn)收,學(xué)生匯報(bào)上機(jī)題目完成情況,回答提出的問(wèn)題。</p><p> 2.撰寫課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告:完成課程設(shè)計(jì)題目后,應(yīng)認(rèn)真撰寫課程設(shè)計(jì)報(bào)告,報(bào)告應(yīng)內(nèi)容全面、格式規(guī)范。</p><p><b> 學(xué)生姓名:</b></p><p> 指導(dǎo)教師: </p><p>
10、; 年 月 日</p><p> 實(shí)驗(yàn)一電話號(hào)碼本設(shè)計(jì)完善</p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))的目的與要求</p><p> 1. 熟練掌握匯編語(yǔ)言程序設(shè)計(jì)環(huán)境,根據(jù)前期掌握程度,可選擇Masm for windows集成實(shí)驗(yàn)環(huán)境(實(shí)驗(yàn)室配備),或自行安裝masm5.0、masm6.0、Emu8086,Tasm等,軟件開發(fā)環(huán)境可由學(xué)生根據(jù)使用
11、愛好自選。</p><p> 2 .根據(jù)課內(nèi)實(shí)驗(yàn)驗(yàn)收時(shí)指導(dǎo)教師提出的意見,以及和同學(xué)討論的結(jié)果,設(shè)計(jì)實(shí)現(xiàn)一個(gè)功能比較完善的電話號(hào)碼本,并在設(shè)計(jì)中體現(xiàn)自己的工作特色,即具備和其他設(shè)計(jì)不同之處。</p><p><b> 設(shè)計(jì)(實(shí)驗(yàn))正文</b></p><p><b> 定義電話本的結(jié)構(gòu)體</b></p>
12、<p><b> 刪除子程序</b></p><p> CANCEL PROC;刪除記錄的過(guò)程</p><p><b> newline</b></p><p> MOV DX,OFFSET CZTS</p><p><b> MOV AH,9H</b>
13、;</p><p><b> INT 21H</b></p><p> MOV AH,01H;輸入學(xué)號(hào)</p><p><b> INT 21H</b></p><p> MOV BJ1,AL</p><p> MOV AH,01H</p><
14、p><b> INT 21H</b></p><p> MOV BJ2,AL</p><p><b> MOV BX,0</b></p><p><b> MOV DI,30</b></p><p> ALCZ9:MOV SI,0;先檢查是否有要?jiǎng)h除的數(shù)據(jù)&
15、lt;/p><p> MOV AH,BJ1</p><p> CMP AH,STU[BX].NUM[SI]</p><p><b> JNE ALCZ8</b></p><p><b> INC SI</b></p><p> MOV AL,BJ2</p>
16、<p> CMP AL,STU[BX].NUM[SI]</p><p> JE ALSC1;有此學(xué)號(hào)就轉(zhuǎn)到刪除它</p><p> ALCZ8:ADD BX,TYPE STU</p><p><b> DEC DI</b></p><p><b> CMP DI,0</b>&
17、lt;/p><p><b> JNE ALCZ9</b></p><p><b> newline</b></p><p><b> MOV AH,9H</b></p><p> MOV DX,OFFSET NO;沒有就告知用戶</p><p>&
18、lt;b> INT 21H</b></p><p><b> newline</b></p><p> CALL TO_DOES</p><p> ALSC1:MOV BX,0</p><p> LSC4:MOV SI,0</p><p> MOV AH,BJ1<
19、;/p><p> CMP AH,STU[BX].NUM[SI]</p><p><b> JNE LSC1</b></p><p><b> INC SI</b></p><p> MOV AL,BJ2</p><p> CMP AL,STU[BX].NUM[SI]&l
20、t;/p><p> JE LSC2;找到要?jiǎng)h除的學(xué)生就刪除</p><p> LSC1:ADD BX,TYPE STU</p><p><b> JMP LSC4</b></p><p> LSC2:MOV SI,0;刪除學(xué)生資料,即把它清零</p><p> MOV STU[BX].N
21、UM[SI],0</p><p><b> INC SI</b></p><p> MOV STU[BX].NUM[SI],0</p><p><b> MOV SI,0</b></p><p><b> MOV CX,20</b></p><p&g
22、t; LSC3:MOV STU[BX].NAM[SI],0</p><p><b> INC SI</b></p><p><b> LOOP LSC3</b></p><p><b> MOV SI,0</b></p><p><b> MOV CX,12
23、</b></p><p> SC1: MOV STU[BX].TLE[SI],' '</p><p><b> INC SI</b></p><p><b> LOOP SC1</b></p><p><b> newline</b><
24、;/p><p><b> MOV AH,9</b></p><p> MOV DX,OFFSET SCCG ;顯示‘刪除成功’</p><p><b> INT 21H</b></p><p><b> newline</b&
25、gt;</p><p><b> RET</b></p><p> CANCEL ENDP</p><p><b> 查找記錄</b></p><p> FIND PROC;查找記錄的過(guò)程</p><p><b> newline</b>&l
26、t;/p><p> MOV DX,OFFSET CZTS</p><p><b> MOV AH,9H</b></p><p><b> INT 21H</b></p><p> MOV AH,01H;輸入查找的學(xué)號(hào)</p><p><b> INT 21H
27、</b></p><p> MOV BJ1,AL</p><p> MOV AH,01H</p><p><b> INT 21H</b></p><p> MOV BJ2,AL</p><p><b> newline</b></p>&
28、lt;p><b> MOV BX,0</b></p><p> MOV DI,30;循環(huán)次數(shù) </p><p> LCZ9: MOV SI,0;先檢查是否有要查找數(shù)據(jù)</p><p> MOV AH,BJ1</p><p> CMP AH,STU[BX].NUM[SI]</p><
29、p><b> JNE LCZ8</b></p><p><b> INC SI</b></p><p> MOV AL,BJ2</p><p> CMP AL,STU[BX].NUM[SI] </p><p><b> JE LCZ7</b></p>
30、;<p> LCZ8: ADD BX,TYPE STU</p><p><b> DEC DI</b></p><p><b> CMP DI,0</b></p><p><b> JNE LCZ9</b></p><p> MOV AH,9H;沒有
31、數(shù)據(jù)就告知用戶</p><p> MOV DX,OFFSET NO</p><p><b> INT 21H</b></p><p><b> newline</b></p><p> CALL TO_DOES</p><p> LCZ7: CALL LINE;有
32、要找的學(xué)號(hào)時(shí)先輸出欄目名稱</p><p><b> newline</b></p><p> MOV DX,OFFSET ML</p><p><b> MOV AH,9H</b></p><p><b> INT 21H</b></p><p&g
33、t;<b> newline</b></p><p> mov ah,02h;</p><p> MOV DL,' '</p><p> MOV DL,' '</p><p><b> INT 21H</b></p><p> MO
34、V BX,0;從第1個(gè)學(xué)生開始查找</p><p> LCZ4: MOV SI,0</p><p> MOV AH,BJ1</p><p> CMP STU[BX].NUM[SI],AH</p><p><b> JNE LCZ5</b></p><p><b> INC SI
35、</b></p><p> MOV AL,BJ2</p><p> CMP STU[BX].NUM[SI],AL</p><p><b> JZ LCZ2</b></p><p> LCZ5: ADD BX,TYPE STU</p><p><b> JMP LCZ
36、4</b></p><p> LCZ2: MOV SI,0;開始輸出要找的學(xué)生的資料</p><p> MOV AH,02H</p><p> MOV DL,STU[BX].NUM[SI];輸出學(xué)號(hào)</p><p><b> INT 21H</b></p><p><
37、b> INC SI</b></p><p> MOV DL,STU[BX].NUM[SI]</p><p><b> INT 21H</b></p><p> MOV CX,4;輸出空格</p><p> MOV AH,02H</p><p> HG: MOV D
38、L,' '</p><p><b> INT 21H</b></p><p><b> LOOP HG</b></p><p><b> MOV SI,0</b></p><p> LCZ3: MOV DL,STU[BX].NAM[SI];輸出姓名&l
39、t;/p><p><b> INT 21H</b></p><p><b> INC SI</b></p><p> CMP STU[BX].NAM[SI],0</p><p><b> JNE LCZ3</b></p><p><b>
40、 MOV CX,20</b></p><p> SUB CX,SI;輸出空格以便使數(shù)據(jù)輸出時(shí)對(duì)齊 </p><p> HG4: MOV DL,' '</p><p><b> INT 21H</b></p><p><b> LOOP HG4</b><
41、;/p><p><b> MOV SI,0</b></p><p> LDY1: MOV DL,STU[BX].TLE[SI];輸出電話號(hào)碼</p><p> CMP DL,' '</p><p><b> JE JJB</b></p><p><
42、b> INT 21H</b></p><p><b> INC SI</b></p><p><b> JMP LDY1</b></p><p> JJB: newline</p><p><b> CALL LINE</b></p>
43、<p><b> newline</b></p><p> CALL TO_DOES</p><p><b> RET</b></p><p> FIND ENDP</p><p><b> 5.瀏覽記錄</b></p><p>
44、 SKIM PROC ;瀏覽記錄的過(guò)程</p><p><b> newline</b></p><p><b> MOV BX,0</b></p><p><b> MOV DI,30</b></p><p> YY1: MOV SI,0;檢查是
45、否一個(gè)數(shù)據(jù)都沒有</p><p> CMP STU[BX].NAM[SI],0</p><p> JNE KK1;有數(shù)據(jù)時(shí)轉(zhuǎn)輸出</p><p> ADD BX,TYPE STU</p><p><b> DEC DI</b></p><p><b> CMP DI,0<
46、;/b></p><p><b> JNE YY1</b></p><p> MOV AH,9H;沒有就告知用戶</p><p> MOV DX,OFFSET NODA</p><p><b> INT 21H</b></p><p><b> n
47、ewline</b></p><p> CALL TO_DOES</p><p> KK1: CALL LINE</p><p><b> newline</b></p><p> MOV AH,9H;先輸出欄目名稱</p><p> MOV DX,OFFSET ML<
48、;/p><p><b> INT 21H</b></p><p><b> newline</b></p><p><b> MOV BX,0</b></p><p><b> MOV DI,30</b></p><p> L
49、L1: MOV SI,0;開始輸出所有學(xué)生資料</p><p> CMP STU[BX].NAM[SI],0</p><p><b> JNZ PP1</b></p><p> ADD BX,TYPE STU</p><p><b> DEC DI</b></p><
50、p><b> CMP DI,0</b></p><p><b> JNE LL1</b></p><p> JMP DOES10</p><p> PP1: MOV SI,0</p><p> MOV DL,' '</p><p> INT
51、 21H </p><p> MOV DL,' '</p><p><b> INT 21H</b></p><p> MOV DL,STU[BX].NUM[SI];輸出學(xué)號(hào)</p><p><b> INT 21H</b></p><p>
52、<b> INC SI</b></p><p> MOV DL,STU[BX].NUM[SI];輸出學(xué)號(hào)</p><p><b> INT 21H</b></p><p><b> MOV SI,0</b></p><p><b> MOV CX,4<
53、/b></p><p> MOV AH,02H </p><p> HG3: MOV DL,' '</p><p><b> INT 21H</b></p><p><b> LOOP HG3</b></p><p> NA1: MOV
54、 DL,STU[BX].NAM[SI];輸出姓名</p><p><b> INT 21H</b></p><p><b> INC SI</b></p><p> CMP STU[BX].NAM[SI],0</p><p><b> JNZ NA1</b></p
55、><p><b> MOV CX,20</b></p><p><b> SUB CX,SI</b></p><p> HG2: MOV DL,' '</p><p><b> INT 21H</b></p><p><b&g
56、t; LOOP HG2</b></p><p> MOV SI,0 </p><p> LDY2: MOV DL,STU[BX].TLE[SI];輸出電話號(hào)碼</p><p> CMP DL,' '</p><p><b> JE JJ1</b></p>&l
57、t;p><b> INT 21H</b></p><p><b> INC SI</b></p><p><b> JMP LDY2</b></p><p> JJ1: newline</p><p> ADD BX,TYPE STU</p>&
58、lt;p><b> DEC DI</b></p><p><b> CMP DI,0</b></p><p><b> JNE LL1</b></p><p> DOES10:CALL LINE</p><p><b> newline</b&g
59、t;</p><p> CALL TO_DOES</p><p><b> RET</b></p><p><b> SKIM ENDP</b></p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))總結(jié)或結(jié)論</p><p> 通過(guò)本次課程設(shè)計(jì),進(jìn)一步掌握了匯編的程序設(shè)計(jì)方法,對(duì)
60、原來(lái)學(xué)過(guò)的和沒學(xué)過(guò)的知識(shí)都有了較深的理解,也深刻體會(huì)到用匯編語(yǔ)言編寫代碼卻是不容易,匯編好幾行語(yǔ)句在高級(jí)語(yǔ)言中只需要一條就可以完成,但事物總有兩面行,存在即具其合理性,asm的優(yōu)越的性能(時(shí)間和空間),高級(jí)語(yǔ)言是望塵莫及的,所以學(xué)號(hào)匯編也是為我們以后的成功奠定基礎(chǔ)。相信通過(guò)這次匯編的課程實(shí)際,自己的分析問(wèn)題和處理問(wèn)題的能力都有了一次不小的提高,收獲不少。同時(shí)也要感謝在課程設(shè)計(jì)中給予我?guī)椭睦蠋煛4舜握n程設(shè)計(jì)目的已經(jīng)達(dá)到。</p&g
61、t;<p> 實(shí)驗(yàn)二:顯示器I/O程序設(shè)計(jì)</p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))的目的與要求</p><p> 示器I/O程序設(shè)計(jì),完成屏幕窗口控制程序。</p><p> 要求在屏幕上開出三個(gè)窗口,它們的左上角和右下角的坐標(biāo)分別是(5,10),(15,30)和(5,50),(15,70)和(18,15),(22,65),如從鍵盤輸入字符,則
62、顯示在右窗口,同時(shí)也顯示在下窗口的最下面一行。若需要將字符顯示于左窗口,則先按下←鍵,接著再?gòu)逆I盤輸入字符,字符就會(huì)從左窗口的最下行開始顯示,同時(shí)下窗口也顯示出左窗口的內(nèi)容。如果再按下→鍵,輸入字符就會(huì)接在先前輸入的字符之后顯示出來(lái)。當(dāng)一行字符顯示滿后,窗口自動(dòng)向上卷動(dòng)一行,輸入字符繼續(xù)顯示與最低一行,窗口最高一行向上卷動(dòng)后消失。</p><p><b> 設(shè)計(jì)(實(shí)驗(yàn))正文</b><
63、/p><p> I/O窗口中自己達(dá)到的目的有:</p><p> 1.回車:通過(guò)獲取回車鍵的接通碼進(jìn)入該程序段,進(jìn)行卷一行,且光標(biāo)設(shè)置,并進(jìn)行分左右窗口設(shè)置,跳轉(zhuǎn)不同。</p><p> ENTERHUAN: SCROLL 18,15,22,65,1</p><p> MOV DWY,15</p><p> CM
64、P WINDOWNUM,0</p><p><b> JZ ONE</b></p><p> SCROLL 5,50,15,70,1</p><p> POS_CURSE 15,50</p><p><b> MOV RY,50</b></p><p><b&g
65、t; mov rx,15</b></p><p><b> JMP INPUT</b></p><p> ONE: SCROLL 5,10,15,30,1</p><p> POS_CURSE 15,10</p><p><b> MOV LY,10</b><
66、/p><p> mov lx,15 </p><p> JMP INPUT </p><p> 2.刪除:通過(guò)int 10功能中03H獲取光標(biāo)位置,通過(guò)卷行,向前卷動(dòng),以達(dá)到刪除效果。</p><p> DEL: </p><p> mov ah,03h</p><p><
67、;b> int 10h</b></p><p><b> dec dl</b></p><p><b> push dx</b></p><p> SCROLL dh,dl,dh,dl,0</p><p><b> pop dx</b></p&
68、gt;<p> pos_curse dh,dl</p><p><b> mov ry,dl</b></p><p><b> jmp input</b></p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))總結(jié)或結(jié)論</p><p> 此實(shí)驗(yàn)中是在別人的基礎(chǔ)上進(jìn)行改動(dòng),雖然自己編寫的程序
69、不太長(zhǎng),但是仍然存在很多困難。并且在此程序中仍然存在錯(cuò)誤,如刪除中,向前滾動(dòng),并不能達(dá)到刪除,會(huì)出現(xiàn)輸出第二個(gè)字母的時(shí)候向后跳顯示,只是屏幕上顯示刪除,實(shí)際內(nèi)存中并沒刪除。并且并沒有判斷到窗口的最左行想上一行跳。</p><p> 實(shí)驗(yàn)三:中斷程序設(shè)計(jì)</p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))的目的與要求</p><p> 中斷程序設(shè)計(jì),完成內(nèi)部中斷服務(wù)程序和外
70、部中斷服務(wù)程序設(shè)計(jì)。具體要求為:</p><p> (1).編寫一個(gè)內(nèi)部中斷服務(wù)程序,使其能夠顯示以“0”結(jié)尾的字符串(利用顯示器功能調(diào)用INT 10H)。字符串緩沖區(qū)首地址為入口參數(shù),利用DS:DX傳遞此參數(shù)。</p><p> (2).編寫一個(gè)可屏蔽的外部中斷服務(wù)程序,中斷請(qǐng)求來(lái)自8259A的IRQ0,在新的外部中斷服務(wù)程序(新08H中斷)中,使得每55ms的中斷在屏幕上顯示一串信
71、息“A 8259A Interrupt!”,顯示10次后,恢復(fù)原中斷服務(wù)程序,返回DOS。</p><p><b> 設(shè)計(jì)(實(shí)驗(yàn))正文</b></p><p><b> 內(nèi)部中斷</b></p><p> 外部中斷其中增加了一小段進(jìn)行延遲,及中斷10次才輸出一次</p><p> inc
72、counter1</p><p> cmp counter1,0ah</p><p><b> jb stop</b></p><p> mov counter1,0</p><p> inc counter</p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))總結(jié)或結(jié)論</p>&l
73、t;p> 通過(guò)本次試驗(yàn),我了解了匯編程序的開發(fā)過(guò)程,能夠在MASM for window環(huán)境下的進(jìn)行編輯,變異,連接程序,掌握了INT 21H軟件中的的調(diào)用DOS內(nèi)部子程序的方法。但對(duì)于dos環(huán)境下的匯編程序的編輯編譯連接使用還不是很熟悉,只能是在masm for window繼承軟件開發(fā)環(huán)境熟悉的編譯連接運(yùn)行。</p><p> 實(shí)驗(yàn)四:發(fā)聲系統(tǒng)設(shè)計(jì)</p><p> 課程設(shè)
74、計(jì)(綜合實(shí)驗(yàn))的目的與要求</p><p> 發(fā)聲系統(tǒng)設(shè)計(jì),參考教材中的例9.1,利用揚(yáng)聲器控制原理,編寫一個(gè)簡(jiǎn)易樂(lè)器程序。</p><p> 要求當(dāng)按下1~8數(shù)字鍵時(shí),分別發(fā)出連續(xù)的中音1~7和高音i(對(duì)應(yīng)頻率依次為524Hz、588Hz、660Hz、698Hz、784Hz、880Hz、988Hz和1048Hz);當(dāng)按下其他鍵時(shí),暫停發(fā)聲。如果時(shí)間允許,可在此基礎(chǔ)上自行發(fā)揮,如增加按
75、鍵功能、編輯歌曲等。</p><p><b> 設(shè)計(jì)(實(shí)驗(yàn))正文</b></p><p><b> 揚(yáng)聲器設(shè)置</b></p><p> speakerproc</p><p><b> push ax</b></p><p> mov al
76、,0b6h;10 11 011 0</p><p> out 43h,al</p><p><b> pop ax</b></p><p> out 42h,al</p><p><b> mov al,ah</b></p><p> out 42h,al</
77、p><p><b> ret</b></p><p> speaker endp</p><p> speakon proc;揚(yáng)聲器開</p><p><b> push ax</b></p><p><b> in al,61h</b><
78、;/p><p><b> or al,03h</b></p><p> out 61h,al</p><p><b> pop ax</b></p><p><b> ret</b></p><p> speakon endp</p>
79、<p> speakoff proc;揚(yáng)聲器關(guān)</p><p><b> push ax</b></p><p><b> in al,61h</b></p><p> and al,0fch</p><p> out 61h,al</p><p>
80、<b> pop ax</b></p><p><b> ret</b></p><p> speakoff endp2.輸入判斷,并調(diào)用</p><p><b> first:</b></p><p><b> mov ah,1h</b>&l
81、t;/p><p><b> int 21h</b></p><p> cmp al,1bh</p><p><b> jz exit</b></p><p> cmp al,31h</p><p><b> jb close</b></p&g
82、t;<p> cmp al,38h</p><p><b> ja close</b></p><p> and al,0fh</p><p> mov ah,00h</p><p><b> add ax,ax</b></p><p><b&g
83、t; mov si,ax</b></p><p> mov bx,offset freq</p><p> mov ax,[bx+si]</p><p><b> mov cx,ax</b></p><p> mov dx,0012h</p><p> mov ax,34d
84、ch</p><p><b> div cx</b></p><p> call speaker</p><p> call speakon </p><p> jmp first </p><p><b> close:</b></p><
85、p> call speakoff</p><p><b> jmp first</b></p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))總結(jié)或結(jié)論</p><p> 音符和頻率之間有一定的對(duì)應(yīng)關(guān)系,如果計(jì)算機(jī)鍵盤上的一些鍵和音符、頻率也形成一種對(duì)應(yīng)關(guān)系,則可通過(guò)鍵盤控制揚(yáng)聲器發(fā)出各種音符聲音,這時(shí)計(jì)算機(jī)鍵盤就變成了鋼琴鍵盤,就可以用他彈奏出
86、簡(jiǎn)單的樂(lè)曲了。</p><p> 實(shí)驗(yàn)五:鍵盤程序設(shè)計(jì) </p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))的目的與要求</p><p> 鍵盤程序設(shè)計(jì),編寫一個(gè)程序,每當(dāng)在鍵盤上按下一個(gè)按鍵時(shí),就顯示其接通和斷開掃描碼。具體原理參見教材第十一章,并行接口。</p><p><b> 設(shè)計(jì)(實(shí)驗(yàn))正文</b></p&g
87、t;<p> 輸出接通掃描碼的十位個(gè)位計(jì)算</p><p> binihex proc</p><p><b> mov ch,4</b></p><p><b> rotate:</b></p><p><b> mov cl,4</b></p&
88、gt;<p> rol bx,cl ;循環(huán)左移</p><p><b> mov al,bl</b></p><p> and al,0fh</p><p> add al,30h</p><p> cmp al,3ah</p><p><b> jl p
89、rint</b></p><p><b> add al,7</b></p><p><b> print:</b></p><p><b> mov dl,al</b></p><p><b> mov ah,2</b></p&
90、gt;<p><b> int 21h</b></p><p><b> dec ch</b></p><p> jnz rotate</p><p><b> ret</b></p><p> binihex endp</p><p
91、> 計(jì)算斷開掃描碼,在接通掃描碼的基礎(chǔ)上加80h并調(diào)用以上程序</p><p> 鍵盤上F1~F9在字符上的輸出,先輸出F,再對(duì)其接通掃描碼減去3bh,進(jìn)行輸出</p><p> mov ah,2 ;是就輸出F</p><p> mov dl,46h</p><p><b> int 21h
92、</b></p><p> sub ch,3bh</p><p> add ch,30h</p><p><b> mov dl,ch</b></p><p><b> mov ah,2</b></p><p><b> int 21h<
93、/b></p><p> mov dl,0Dh</p><p><b> mov ah,2</b></p><p><b> int 21h</b></p><p> mov dl,0Ah</p><p><b> mov ah,2</b>
94、;</p><p><b> int 21h</b></p><p><b> jmp again</b></p><p> next: mov dl,cl</p><p><b> mov ah,2</b></p><p><b>
95、 int 21h</b></p><p><b> ;打印回車換行</b></p><p> mov dl,0Dh</p><p><b> mov ah,2</b></p><p><b> int 21h</b></p><p>
96、 mov dl,0Ah</p><p><b> mov ah,2</b></p><p><b> int 21h</b></p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))總結(jié)或結(jié)論</p><p> 本實(shí)驗(yàn)中的要求是將輸入的十六進(jìn)制的數(shù)轉(zhuǎn)換為十進(jìn)制的數(shù),并進(jìn)行輸出,結(jié)果是將十六進(jìn)制的數(shù)按ASCI
97、I碼轉(zhuǎn)換而得的。在此程序中較為復(fù)雜的是進(jìn)行轉(zhuǎn)換,程序中,需要設(shè)定循環(huán)次數(shù),以及跳轉(zhuǎn)方向。同時(shí),在輸出字符時(shí)也需要進(jìn)行判斷,分類輸出。</p><p><b> 實(shí)驗(yàn)六:電子鐘設(shè)計(jì)</b></p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))的目的與要求</p><p> 利用偉福實(shí)驗(yàn)系統(tǒng)提供的8253計(jì)數(shù)器,8259中斷控制器、七段數(shù)碼管、8255并行
98、接口芯片等,設(shè)計(jì)實(shí)現(xiàn)一個(gè)電子鐘的電路,并編制一個(gè)程序使得該電子鐘能正常工作。其中,8253計(jì)數(shù)器用于產(chǎn)生計(jì)時(shí)脈沖(如1s、100ms等),中斷服務(wù)程序用于對(duì)時(shí)、分、秒的計(jì)數(shù)更新,并存入相應(yīng)的存儲(chǔ)單元,主程序設(shè)置相應(yīng)芯片的工作方式、完成時(shí)、分、秒信息的顯示等。</p><p><b> 設(shè)計(jì)(實(shí)驗(yàn))正文</b></p><p> 在程序中自己進(jìn)行完成的方面有:<
99、;/p><p><b> 鬧鐘到點(diǎn)報(bào)時(shí)</b></p><p> NAOZHONG PROC NEAR</p><p> MOV AL,MINUTE ;將要進(jìn)行調(diào)整的鬧鐘賦給鬧鐘的時(shí)間</p><p> MOV NMINUTE,AL</p><p> MOV AL,HOUR&
100、lt;/p><p> MOV NHOUR,AL</p><p> SHI2: MOV AL,NHOUR ;將時(shí)間數(shù)字轉(zhuǎn)換賦給LED顯示緩沖區(qū)</p><p><b> MOV AH,0</b></p><p><b> MOV CL,10</b></p>&l
101、t;p><b> DIV CL</b></p><p><b> MOV CH,AH</b></p><p><b> MOV AH,0</b></p><p> MOV BX,OFFSET LEDMAP</p><p><b> ADD BX,AX&
102、lt;/b></p><p> MOV AL,[BX]</p><p> MOV LEDBUF,AL</p><p> MOV BX,OFFSET LEDMAP</p><p><b> MOV AL,CH</b></p><p><b> MOV AH,0</b&
103、gt;</p><p><b> ADD BX,AX</b></p><p> MOV AL,[BX]</p><p><b> OR AL,80H</b></p><p> MOV LEDBUF+1,AL</p><p> MOV AL,NMINUTE</p
104、><p><b> MOV AH,0</b></p><p><b> MOV CL,10</b></p><p><b> DIV CL</b></p><p><b> MOV CH,AH</b></p><p><b
105、> MOV AH,0</b></p><p> MOV BX,OFFSET LEDMAP</p><p><b> ADD BX,AX</b></p><p> MOV AL,[BX]</p><p> MOV LEDBUF+2,AL</p><p> MOV BX,
106、OFFSET LEDMAP</p><p><b> MOV AL,CH</b></p><p><b> MOV AH,0</b></p><p><b> ADD BX,AX</b></p><p> MOV AL,[BX]</p><p>
107、<b> OR AL,80H</b></p><p> MOV LEDBUF+3,AL</p><p> MOV LEDBUF+4,3FH</p><p> MOV LEDBUF+5,3FH</p><p> CALL DISPLAYLED ;調(diào)用完LED顯示</p>
108、;<p> CALL TESTKEY ;測(cè)試是否有輸入,有則判斷,無(wú)則繼續(xù)顯示</p><p><b> JNE SHI1</b></p><p><b> JMP SHI2</b></p><p> SHI1: CALL GETKEY</p><p> CM
109、P AL,0FH</p><p> JZ NXIAOSHI</p><p> CMP AL,0EH</p><p> JZ NFENZHONG</p><p> CMP AL,0BH</p><p><b> JZ JEND1</b></p><p> NFEN
110、ZHONG: ;分鐘判斷。按E進(jìn)行自增</p><p> INC NMinute</p><p> cmp NMinute,60</p><p><b> jz Nt2</b></p><p><b> JMP Nt3</b></p>&
111、lt;p> Nt2: mov NMinute,00</p><p><b> Nt3:</b></p><p><b> JMP SHI2</b></p><p> JEND1: JMP END1</p><p> NXIAOSHI:
112、 ;小時(shí)。按F進(jìn)行自增</p><p><b> INC NHour</b></p><p> CMP NHour,24</p><p><b> jz Nt0</b></p><p><b> JMP Nt1</b></p><p>
113、 Nt0: mov NHour,00</p><p><b> Nt1:</b></p><p><b> JMP SHI2</b></p><p> END1: RET ;按B結(jié)束</p><p> NAOZHONG ENDP</p>
114、;<p> 按暫停,以及重置進(jìn)行顯示字母</p><p> pause: CLI</p><p> mov ledbuf+3,6DH</p><p> mov ledbuf+4,79H</p><p> mov ledbuf+5,00H</p><p> mov ledbuf+2,3EH<
115、;/p><p> mov ledbuf+1,77H</p><p> mov ledbuf+0,73H</p><p> call displayled</p><p> CALL TESTKEY</p><p> JE PAUSE</p><p> JMP CONTIUE <
116、;/p><p><b> jmp LP</b></p><p> Reset: cli</p><p> MOV Hour,00</p><p> MOV Minute,00</p><p> MOV Second,00</p><p> mov ledbuf,31
117、H</p><p> mov ledbuf+1,79H</p><p> mov ledbuf+2,6DH</p><p> mov ledbuf+3,79H</p><p> mov ledbuf+4,78H</p><p> mov ledbuf+5,0</p><p> cal
118、l displayled</p><p> CALL TESTKEY</p><p> JE RESET</p><p> JMP CONTIUE </p><p><b> STI</b></p><p><b> JMP LP</b></
119、p><p> 在設(shè)置計(jì)數(shù)時(shí),AX所能存放的太小,不能達(dá)到1秒顯示,又只能調(diào)用一個(gè)8253,所以進(jìn)行設(shè)置中斷20次才調(diào)用一次顯示。</p><p><b> inc count</b></p><p> mov al,count</p><p><b> cmp al,20</b></p&g
120、t;<p><b> jne exit</b></p><p> 課程設(shè)計(jì)(綜合實(shí)驗(yàn))總結(jié)或結(jié)論</p><p> 在此實(shí)驗(yàn)中較為復(fù)雜的有實(shí)驗(yàn)本身存在難度,在兩個(gè)子程序中想要搞清楚較為復(fù)雜。同時(shí),實(shí)驗(yàn)還需要結(jié)合硬件,硬件要求要有較好的基礎(chǔ),明白8253,8259,8255是如何工作的。</p><p> 本次課程設(shè)計(jì),也因
121、為理論知識(shí)掌握比較好,花了三天時(shí)間將程序修改好,添加功能。在本次設(shè)計(jì),真正體會(huì)到軟硬件結(jié)合,在我們寫好程序之后還必須懂得硬件電路怎么連接,設(shè)計(jì)程序過(guò)程中經(jīng)常發(fā)現(xiàn)程序報(bào)錯(cuò),程序太長(zhǎng)就覺得煩,壓迫自己把程序的注釋寫上去,這樣很容易知道程序的入口跳轉(zhuǎn)以及錯(cuò)誤等。本次設(shè)計(jì)懂得了耐心很重要,雖然程序有點(diǎn)長(zhǎng),但是只要有耐心終究能將此程序完成的。</p><p><b> 附錄</b></p>
122、;<p> 實(shí)驗(yàn)一電話號(hào)碼本設(shè)計(jì)完善</p><p><b> 結(jié)果:</b></p><p> 實(shí)驗(yàn)二:顯示器I/O程序設(shè)計(jì)</p><p><b> 結(jié)果:</b></p><p><b> 輸入</b></p><p>&l
123、t;b> 刪除左窗口</b></p><p><b> 左窗口回車</b></p><p> 實(shí)驗(yàn)三:中斷程序設(shè)計(jì)</p><p><b> 結(jié)果</b></p><p><b> 內(nèi)部中斷:</b></p><p><
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)報(bào)告-----ibm匯編電子鐘
- 匯編語(yǔ)言課程設(shè)計(jì)報(bào)告
- 匯編語(yǔ)言課程設(shè)計(jì)報(bào)告
- 匯編語(yǔ)言課程設(shè)計(jì)報(bào)告
- 匯編語(yǔ)言課程設(shè)計(jì)報(bào)告a
- 匯編語(yǔ)言課程設(shè)計(jì)----電子鬧鐘
- 電子鐘課程設(shè)計(jì)----數(shù)字電子鐘的設(shè)計(jì)
- eda電子鐘課程設(shè)計(jì)----電子鐘的設(shè)計(jì)
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告
- 電子鐘的設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 數(shù)字電子鐘設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---數(shù)字電子鐘設(shè)計(jì)報(bào)告
- 電子鐘課程設(shè)計(jì)
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字電子鐘課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)--數(shù)字電子鐘設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---數(shù)字電子鐘設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)----數(shù)字電子鐘設(shè)計(jì)報(bào)告
- 電子鐘課程設(shè)計(jì)報(bào)告--數(shù)字鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論