

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 報 告</p><p> 課程名稱 匯編語言程序設(shè)計 </p><p> 課題名稱 1.成績排名 2.中斷駐留程序 </p><p> 專 業(yè) 計算機(jī)科學(xué)與技術(shù) </p><p> 班 級
2、 </p><p> 學(xué) 號 </p><p> 姓 名 </p><p> 指導(dǎo)教師
3、</p><p> 2013 年 1 月 9日</p><p> 一、設(shè)計內(nèi)容與設(shè)計要求</p><p> 1.設(shè)計內(nèi)容:通過本周的課程設(shè)計,學(xué)生能夠鞏固所學(xué)的基礎(chǔ)知識,并能夠使學(xué)生更加熟練運用匯編程序設(shè)計語言來掌握綜合匯編程序設(shè)計的方法和過程,以及為設(shè)計其它應(yīng)用軟件提供幫助,進(jìn)而提高學(xué)生的軟件設(shè)計能力。</p><p> 1、編
4、制一計算比賽成績的程序,要求完成以下功能:</p><p> (1) 9名評委,每個評委給分范圍為0~10(整數(shù));</p><p> ?。?) 9名評委給分中,去掉一個最高分和一個最低分,剩余7名評委的平均分即為參賽者的得分(精確到小數(shù)點二位);</p><p> (3) 將得分在光標(biāo)位置處顯示出來。</p><p> 2、編制一程序
5、,要求接收從鍵盤輸入的一個班的學(xué)生成績,并存放于30字的grade數(shù)組中,各數(shù)據(jù)的格式為:</p><p> 學(xué)號,成績1,成績2,…,成績5</p><p> 然后根據(jù)grade中的學(xué)生成績,把學(xué)生名次填入rank數(shù)據(jù)組中,并顯示出來,格式為:</p><p><b> 學(xué)號,名次</b></p><p> 3
6、、利用INT 1CH(大約每秒中斷18.2次)編寫一個中斷駐留程序,要求在屏幕的右上角顯示計算機(jī)中當(dāng)前系統(tǒng)時間,顯示格式為</p><p> 時:分:秒:1/100秒</p><p> 4、輸入一個菱形的兩條對角線長,在屏幕上用‘*’號畫出一個彩色的菱形。</p><p> 5、設(shè)置圖形方式并顯示彩條,要求:</p><p> 選擇背
7、景色為藍(lán)色,調(diào)色板為0,然后每行顯示一種顏色,每四行重復(fù)一次,一直到整個屏幕都顯示出彩條</p><p><b> 2.設(shè)計要求:</b></p><p> 掌握結(jié)構(gòu)化程序設(shè)計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經(jīng)驗。</p><p> 設(shè)計正確,方案合理。</p>
8、;<p> 界面友好,使用方便。</p><p> 程序精煉,結(jié)構(gòu)清晰。</p><p> 設(shè)計報告5000字以上,含程序設(shè)計說明,用戶使用說明,源程序清單及程序框圖。</p><p><b> 上機(jī)演示。</b></p><p> 按學(xué)號順序選課題號,并在規(guī)定的時間內(nèi)獨自完成相關(guān)課題的匯編源程序
9、編寫、調(diào)整和運行。源程序及編譯生成各文件均保存在軟盤中;</p><p> 按本任務(wù)書的要求,按附錄的要求編寫《課程設(shè)計報告》(Word文檔格式)。并用A4的復(fù)印紙打印并裝訂; </p><p><b> 二、進(jìn)度安排</b></p><p><b> 第 1 周: </b></p><p&g
10、t; 星期日:8:00-12:00 </p><p> 星期日:13:00-17:00 </p><p> 星期一:8:00-12:00 </p><p><b> 附:</b></p><p> 課程設(shè)計報告裝訂順序:封面、任務(wù)書、目錄、正文、評分、附件(A4
11、大小的圖紙及程序清單)。 </p><p> 正文的格式:一級標(biāo)題用3號黑體,二級標(biāo)題用四號宋體加粗,正文用小四號宋體;行距為22。</p><p> 正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實現(xiàn)(至少要有一個主要模塊的流程圖);四、程序調(diào)試;五、總結(jié);六、附件(所有程序的原代碼,要求對程序?qū)懗霰匾淖⑨專?lt;/p>&
12、lt;p> 正文總字?jǐn)?shù)要求在5000字以上(不含程序原代碼)。</p><p><b> 目錄</b></p><p> 課題1:學(xué)生成績排名程序</p><p> 1.1課題的主要功能…………………………………………1</p><p> 1.2課題的概要設(shè)計…………………………………………1</p
13、><p> 1.3課題的詳細(xì)設(shè)計…………………………………………4</p><p> 1.4調(diào)試結(jié)果與分析…………………………………………6</p><p> 1.5心得體會…………………………………………………8</p><p> 課題2:中斷駐留程序</p><p> 2.1課題的主要功能…………………………
14、………………9</p><p> 2.2課題的概要設(shè)計…………………………………………9</p><p> 2.3課題的詳細(xì)設(shè)計…………………………………………12</p><p> 2.4調(diào)試結(jié)果與分析…………………………………………14</p><p> 2.5心得體會…………………………………………………16</p>
15、<p> 附錄1:學(xué)生成績排名設(shè)計…………………………………17</p><p> 附錄2:中斷駐留設(shè)計………………………………………24</p><p> 課題一:學(xué)生成績排名</p><p><b> 一、課題主要功能</b></p><p> 學(xué)生成績排名程序的主要功能是從鍵盤輸入n個學(xué)生的
16、成績(格式為:學(xué)號、成績1、成績2),將其存儲在數(shù)組GRADE中。然后調(diào)用相關(guān)的功能模塊如成績信息復(fù)制模塊等來完成成績的排序以及排名并顯示出來(格式為:學(xué)號、名詞)。</p><p><b> 課題概要設(shè)計</b></p><p> 2.1課題功能模塊設(shè)計</p><p> 程序主要由如歡迎界面函數(shù)、成績輸入函數(shù)、成績信息復(fù)制函數(shù)、成績排
17、序函數(shù)、輸出函數(shù)五大模塊組成。其相關(guān)的功能在運行時會有相應(yīng)的提示。各個功能模塊的關(guān)系如下:</p><p> 2.2成績輸出模塊流程圖</p><p> 成績輸出模塊的主要問題是將相關(guān)的數(shù)據(jù)項取得之后的后續(xù)處理。全局變量學(xué)號的位數(shù)DIGIT來控制整個進(jìn)制的轉(zhuǎn)換的數(shù)量級。同時也是分為兩個循環(huán),內(nèi)存循環(huán)主要的功能就是控制整個輸出的格式問題,外層循環(huán)則是控制整個輸出的項目的問題。一個數(shù)的輸出
18、流程圖如下(省略了如前幾位為0的功能):</p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p> 2.3成績排序模塊流程圖</p><p> 成績排序模塊主要的算法是冒
19、泡排序算法,其中令CX控制兩個循環(huán),一個循環(huán)為內(nèi)循環(huán)即比較循環(huán),另一個則為外層循環(huán)控制內(nèi)存循環(huán)的次數(shù)。 其流程圖如下:</p><p><b> N</b></p><p><b> Y</b></p><p><b> 課題詳細(xì)設(shè)計</b></p><p> 3.1
20、成績輸入模塊</p><p> 依次從鍵盤輸入學(xué)生學(xué)號及成績,TAB鍵為控制字符,每次輸入一個數(shù)據(jù)光標(biāo)就向左移動8位,每次輸入完畢一個學(xué)生的信息就換行輸入。</p><p> 其單個數(shù)據(jù)輸入的代碼如下:</p><p> INPUT2 PROC NEAR</p><p> MOV AH,01H</p>
21、;<p> INT 21H</p><p> CMP AL,'0'</p><p> JB EXT2</p><p> CMP AL,'9'</p><p> JA EXT2</p><p> CMP
22、 AL,09H</p><p> JBE EXT2</p><p> AND AX,00FFH</p><p> SUB AL,30H</p><p><b> CBW</b></p><p> XCHG AX,BX</p&
23、gt;<p> MOV DX,10</p><p> MUL DX</p><p> ADD BX,AX</p><p> JMP INPUT2</p><p> INPUT2 ENDP</p><p> 3.2 成績排序模塊</p>
24、;<p> 其概要設(shè)計如2.3成績排序流程圖,其主要的代碼如下:</p><p><b> SORT3:</b></p><p> MOV AX,[SI+2]</p><p> MOV BX,[DI+2]</p><p> CMP AX,BX</p>
25、<p> JAE SORT2 ;ax>bx</p><p> MOV AX,[SI]</p><p> MOV BX,[DI]</p><p> XCHG AX,BX</p><p> MOV [SI],AX</p><p&
26、gt; MOV [DI],BX</p><p> MOV AX,[SI+2]</p><p> MOV BX,[DI+2]</p><p> XCHG AX,BX</p><p> MOV [SI+2],AX</p><p> MOV [
27、DI+2],BX</p><p> 3.3 學(xué)生成績輸出模塊</p><p> 其單個數(shù)據(jù)的輸入主要的實現(xiàn)如2.2成績輸出模塊流程圖,一下主要是其外圍的控制代碼:</p><p> OUTPUT2: PUSH BX</p><p> MOV CX,2</p><p> OUTPUT3:
28、 PUSH CX </p><p> MOV AX,[SI]</p><p> MOV DATA1,AX</p><p> CALL OUTPUT1</p><p> MOV DX,09H</p><p> MOV AH,02H</p
29、><p> INT 21H</p><p> ADD SI,2 </p><p> POP CX</p><p> LOOP OUTPUT3</p><p> CALL ENT</p><p> POP BX</p
30、><p> MOV CX,BX</p><p> DEC BX</p><p> LOOP OUTPUT2 </p><p> JMP EXT1</p><p><b> 調(diào)試結(jié)果與分析</b></p><p> 4.1
31、 EMU8086調(diào)試</p><p><b> 成績信息輸入</b></p><p> 說明:由于emu8086無法調(diào)用DOS 09H功能,所以字符串無法輸出</p><p><b> 排名結(jié)果輸出</b></p><p> 4.2 Masm for Windows調(diào)試</p>
32、<p><b> 五、心得體會</b></p><p> 此課題可以說是我自程序設(shè)計開始以來就一直做的課題,但是一開始并不能很快地就形成完整的一個程序。其主要的原因就在于以前的C語言程序設(shè)計、C++程序設(shè)計中等都有很多的數(shù)據(jù)結(jié)構(gòu)體運用。如此此次的學(xué)生成績排序就可以定義一個學(xué)生成績的結(jié)構(gòu)體,如struct score { char no[4],int math 、、、}。所以
33、此次首先解決的問題應(yīng)該是找到一種適合的數(shù)據(jù)結(jié)構(gòu)來完成所有的設(shè)計。</p><p> 因為首先采用的Masm for Windows軟件,其中的調(diào)試很是不直觀,所以采用了Emu8086軟件來完成一些基本的設(shè)計。其中遇到的問題主要是DOS 09H功能調(diào)用的失敗導(dǎo)致程序設(shè)計根本無法進(jìn)行下去,后來設(shè)置為單個字符的輸出作為提示符逐步的完成所有的功能。其中如JA 、JB等指令的條件都很好的能夠知道,還有就是能夠單步的執(zhí)行指
34、令,查看常用寄存器中的內(nèi)容。這樣的軟件對于我來說簡直是太棒了!我基本上能夠清晰的知道那個指令引起數(shù)據(jù)變化以及如何變化等。如成績信息復(fù)制模塊的設(shè)計在開始的時候由于CX頻繁的使用導(dǎo)致其循環(huán)的次數(shù)根本就是無效的,如CX=**FF等等。</p><p> 還有的一點就是所有的設(shè)計要畫圖。因為匯編中的內(nèi)存數(shù)據(jù)主要是通過DI跟SI來控制的,所以你必須清楚的知道某一步操作完成之后的DI、SI的指向問題。如此次的課程設(shè)計中的成
35、績信息復(fù)制函數(shù)由于將所有的某個學(xué)生的成績相加放入RANK數(shù)組中后,忘記將SI加1導(dǎo)致將第5個成績作為學(xué)號輸入RANK數(shù)組中。</p><p> 此次課程設(shè)計使我對于匯編指令的運用有了初步的了解以及掌握。我深刻的知道了如果光看書本上的知識是無法進(jìn)行現(xiàn)實操作的,那就是眼高手低的表現(xiàn)。任何的知識不僅僅是要看書了解、通讀、、、更為重要的是你要將學(xué)到的知識熟練的運用到現(xiàn)實生活中來。還有就是有不知道的問題可以尋求老師、同學(xué)
36、以及網(wǎng)絡(luò)的幫助。要知道一個人的力量總是有限的,大家的力量才是無限的。</p><p> 總之一句話,此次課程設(shè)計我學(xué)到了很多。</p><p> 課題二: 中斷駐留程序</p><p><b> 一、課題的主要功能</b></p><p> 本課題主要是完成一個中斷駐留程序,要求在屏幕的右上角顯示當(dāng)前的系統(tǒng)時間,
37、時間格式為時:分:秒</p><p> 完成該課題的系統(tǒng)時間功能,需要不斷地以同步顯示系統(tǒng)時間,這里我們需要用</p><p> INT 1CH,平均每秒中斷18.2次,以這樣的頻率同步顯示系統(tǒng)時間足以滿足人們的視覺效果。完成系統(tǒng)時間同步的前提下,還要讀取系統(tǒng)時間和顯示時間。</p><p><b> 二、課題的概要設(shè)計</b></
38、p><p><b> 2.1功能模塊解釋</b></p><p> 該課題的的功能模塊,就是在定義好數(shù)據(jù)之后,完成讀取系統(tǒng)時間和顯示系統(tǒng)時間兩大模塊。包括獲取原中斷類型,保存原中斷類型,設(shè)置新的中斷類型,執(zhí)行中斷處理程序,應(yīng)用堆棧保護(hù)現(xiàn)場,讀取系統(tǒng)時間,然后分別將時間的BCD碼轉(zhuǎn)換為字符,在制定內(nèi)存位置寫入時間并顯示時間,最后恢復(fù)現(xiàn)場,中斷返回。</p>
39、<p> 該課題,采用調(diào)用子程序的思想來完成,主體功能都通過子程序模塊完成,中斷模塊,讀取系統(tǒng)時間模塊,顯示系統(tǒng)模塊,現(xiàn)場保護(hù)模塊及現(xiàn)場恢復(fù)模塊。通過調(diào)用子程序的方法,使本程序更加具有條理性,其中現(xiàn)場保護(hù)是為了使寄存器里有用的數(shù)據(jù)保存起來,讓寄存器進(jìn)行其他運算,現(xiàn)場恢復(fù)是使之前保護(hù)起來的有用數(shù)據(jù)恢復(fù),讀取系統(tǒng)時間并使屏幕顯示的時間與系統(tǒng)時間同步變化,這就不得不使用中斷模塊,運用INT 1CH,可以平均每秒中斷18.2次,足
40、以滿足視覺上的同步。</p><p> 2.2功能模塊流程圖</p><p> 2.3主要功能流程圖</p><p><b> 三、課題詳細(xì)設(shè)計</b></p><p> 3.1 系統(tǒng)時間功能調(diào)用</p><p> 這個程序主要是要實現(xiàn)獲取系統(tǒng)時間并顯示時間。</p>&l
41、t;p> 步驟一:定好好數(shù)據(jù)之后,在DOS環(huán)境下,用2C號取系統(tǒng)時間的功能,將時賦值 </p><p> 給CH,將分賦值給CL,將秒賦值給DH,將1/100賦值給DL,具體實現(xiàn)如下:</p><p> MOV AH,2CH INT 21H MOV HOUR, CH MOV MINUTE,CL MOV SECOND,DH</p>&l
42、t;p> 3.2 系統(tǒng)時間顯示</p><p> 子函數(shù)INTIC來具體實現(xiàn)系統(tǒng)時間顯示,將從系統(tǒng)中讀取的時,分,秒分別送入內(nèi)存T到T7,然后塊裝入指令 把SI指向的存儲單元讀入累加器,其具體實現(xiàn)如下:</p><p> C1: MOV AL,HOUR CBW MOV DL,0AH DIV DL OR AX,3030H MOV WORD PTR[T],AX ;將小時送
43、入到[T] MOV AL,MINUTE CBW DIV DL OR AX,3030H MOV WORD PTR[T+3],AX ;將分鐘送入到[T+3]和[T+4] MOV AL,SECOND CBW DIV DL OR AX,3030H MOV WORD PTR[T+6],AX ;將秒鐘送入到[T+6]和[T+7] MOV CX,8 MOV AX,0B800H MOV ES,AX LEA SI,[T] M
44、OV DI,144 </p><p> C3: LODSB ;塊裝入指令 把SI指向的存儲單元讀入累加器 STOSW ;從 AX 讀取的字 送入到ES:DI LOOP C3 CEND: IRET INT1C ENDP </p><p><b> 四.程序調(diào)試</b></p><p><b> 4.1程序分析</b&
45、gt;</p><p> 4.1.1 時間的顯示</p><p> MOV AX,3100H</p><p> MOV DX,(PRG_LEN+15)/16+16</p><p><b> INT 21H</b></p><p> 調(diào)用DOS的31H功能,可以將光標(biāo)及系統(tǒng)時間顯示在屏
46、幕的右上方。</p><p> 4.1.2 INT1C的調(diào)用</p><p> INT1C PROC FAR DEC CS:COUNT JZ C2 JMP CEND </p><p> 通過調(diào)用INT1C,我們實現(xiàn)了函數(shù)的中斷功能,程序運行至此中斷處,將執(zhí)行中斷處理功能,此時程序跳轉(zhuǎn)到中斷函數(shù)處,待執(zhí)行中斷函數(shù)后,返回到原來中斷處,繼續(xù)執(zhí)行下一個步驟。
47、</p><p><b> 4.2程序測試</b></p><p><b> 程序運行結(jié)果</b></p><p><b> 心得體會</b></p><p> 通過本次的中斷駐留程序,對于DOS以及BOIS功能的調(diào)用更為熟悉。鞏固了關(guān)于系統(tǒng)中斷向量的了解。中斷程序的主
48、要的目的是提高CPU的利用率,中斷處理過程最為主要的一點就是保存斷點現(xiàn)場。其次也進(jìn)一步的了解了8086的指令的運用,對于計算機(jī)硬件有了相對的了解。</p><p> 此次課程設(shè)計到這里已經(jīng)基本結(jié)束了,其中最大的體會就是前面所講的匯編程序設(shè)計跟C語言等高級語言程序設(shè)計最大的差別就在于數(shù)據(jù)段的定義以及操作的對象上面。像上面程序設(shè)計你所用到的指令的操作對象永遠(yuǎn)只有6個:AX、BX、、、所以有時候就感覺像穿著棉襖在游泳
49、很是束縛,但是毫無疑問的是匯編永遠(yuǎn)是計算機(jī)人員必須掌握的一門語言,不僅僅是因為實用性等,更多的是匯編程序設(shè)計讓我們有更多的時間來思考如何設(shè)計,而不是尋求插件等方式來減少設(shè)計過程中要關(guān)心的問題。在當(dāng)今這個高級語言泛濫的年代中,我們總是在瘋狂的追逐流行語言,雖然他們讓我們更加簡單的設(shè)計程序,但是不得不說他讓程序設(shè)計人員感覺就像是時尚產(chǎn)品一樣有保質(zhì)期,當(dāng)然還有更多的不足之處,當(dāng)然還是利大于弊的。匯編程序設(shè)計就像是金字塔的底層,我們應(yīng)該懂得如何
50、使用,我們也必須知道并熟練的使用,因為他是所有程序設(shè)計的基礎(chǔ)。</p><p> 課程設(shè)計的時間已經(jīng)過去了,但是我的匯編之旅才剛剛開始,寒假就是一個不錯的時間段!</p><p> 附錄1:學(xué)生成績排名程序</p><p><b> 源代碼: </b></p><p> DATAS SEGMENT
51、 ;數(shù)據(jù)段</p><p> M EQU 3 ;成績長度</p><p> NO EQU 10 ; 學(xué)生數(shù)目</p><p> DIQIT EQU 2 ;學(xué)生數(shù)目的位數(shù)</p><p> G EQU 5
52、 ;成績數(shù)目</p><p> FLAG DB 1</p><p> FLAG1 DW 1 </p><p> P DW 0</p><p> DATA1 DW 0 ;輸出緩沖區(qū)</p><p> SCORE DB
53、 60 DUP(0) ;成績存儲空間</p><p> RANK DW NO*2 DUP(0) ;學(xué)生名次</p><p> BUFFER1 DB 'START$'</p><p> BUFFER2 DB 10,13,'PLEASE ENTER THE NUMBER OF STUD
54、ENT:',10,13,'$'</p><p> BUFFER3 DB 10,13,10,13,'HERE IS RANK BY THE GRADE OF THE STUDENTS:',10,13,10,13, '$'</p><p> BUFFER4 DB 10,13,'PLEASE EN
55、TER THE NUMBER OF STUDENT AGAIN:',10,13,'$'</p><p> BUFFER5 DB 10,13,'PLEASE ENTER THE IMFORMATION OF STUDENT:',10,13,'$'</p><p> BUFFER6 DB 10,13,&
56、#39;NO CHINESE MATH1 MATH2 ENGLISH BIOLOGY' ,10,13,'$'</p><p> DATAS ENDS</p><p> CODES SEGMENT ;代碼段</p><p> ASSUME CS:CODES,DS:DATAS</
57、p><p><b> START:</b></p><p> MOV AX,DATAS ;初始化</p><p> MOV DS,AX</p><p> CALL WELCOME</p><p><b> INPUT:</b>&l
58、t;/p><p><b> ;輸入提示 </b></p><p> MOV DX,OFFSET BUFFER5</p><p> MOV AH,09H</p><p> INT 21H</p><p> CALL ENT</p>&
59、lt;p> MOV DX,OFFSET BUFFER6</p><p> MOV AH,09H</p><p> INT 21H</p><p> CALL ENT </p><p> XOR AX,AX</p><p> MOV
60、AX,P ;輸入循環(huán)次數(shù)控制</p><p> MOV DX,G</p><p> ADD DX,1</p><p> MUL DX</p><p> MOV CX,AX</p><p> MOV DX,0</p><
61、;p> MOV FLAG1,DX</p><p> LEA SI,SCORE</p><p><b> INPUT1: </b></p><p> MOV BX,0</p><p> CALL INPUT2</p><p> MOV
62、 [SI],BX</p><p> INC SI</p><p> MOV DX,FLAG1 </p><p> INC DX</p><p> MOV FLAG1,DX</p><p> MOV AX,DX</p><
63、;p> MOV BX,G+1</p><p> MOV FLAG1,DX</p><p> SUB BX,DX</p><p> CMP BX,1</p><p> JAE INPUT3 </p><p> MOV DX,FLAG
64、1</p><p> MOV DX,0</p><p> MOV FLAG1,DX</p><p> CALL ENT</p><p><b> INPUT3: </b></p><p> LOOP INPUT1</p><
65、;p> JMP COPY </p><p> INPUT2 PROC NEAR</p><p> MOV AH,01H</p><p> INT 21H</p><p> CMP AL,'0'</p><p> JB
66、 EXT2</p><p> CMP AL,'9'</p><p> JA EXT2</p><p> CMP AL,09H</p><p> JBE EXT2</p><p> AND AX,00FFH</p>&
67、lt;p> SUB AL,30H</p><p><b> CBW</b></p><p> XCHG AX,BX</p><p> MOV DX,10</p><p> MUL DX</p><p> ADD BX,AX
68、</p><p> JMP INPUT2</p><p> INPUT2 ENDP</p><p><b> COPY:</b></p><p> LEA SI,SCORE</p><p> LEA DI,RANK</p><p&
69、gt; MOV CX,P</p><p><b> COPY1:</b></p><p> MOV DX,CX</p><p> PUSH DX</p><p> MOV AL,[SI]</p><p><b> CBW</
70、b></p><p> MOV [DI],AX</p><p> INC DI</p><p> INC DI </p><p> MOV CX,G</p><p> MOV AX,0 </p><p> MOV
71、 BX,0</p><p><b> COPY2: </b></p><p> INC SI</p><p> MOV BL,BYTE PTR[SI]</p><p> ADD AX,BX </p><p> LOOP COPY2&
72、lt;/p><p> MOV [DI],AX</p><p> INC DI</p><p> INC DI</p><p> INC SI</p><p> POP DX </p><p> MOV CX,DX &
73、lt;/p><p> DEC DX</p><p> LOOP COPY1</p><p><b> SORT:</b></p><p> LEA DI,SCORE</p><p> MOV BX,[DI]</p><p>
74、; CMP BX,0 ;無學(xué)生信息 則退出系統(tǒng)</p><p> JBE EXT1</p><p> MOV CX,P</p><p> DEC CX</p><p><b> SORT1:</b></p><p> LEA
75、 SI,RANK</p><p> MOV DI,SI</p><p> ADD DI,4 </p><p> MOV DX,CX</p><p><b> SORT3:</b></p><p> MOV AX,[SI+2]&l
76、t;/p><p> MOV BX,[DI+2]</p><p> CMP AX,BX</p><p> JAE SORT2 ;ax>bx</p><p> MOV AX,[SI]</p><p> MOV BX,[DI]</p&g
77、t;<p> XCHG AX,BX</p><p> MOV [SI],AX</p><p> MOV [DI],BX</p><p> MOV AX,[SI+2]</p><p> MOV BX,[DI+2]</p><p> XCH
78、G AX,BX</p><p> MOV [SI+2],AX</p><p> MOV [DI+2],BX</p><p><b> SORT2:</b></p><p> ADD SI,4</p><p> ADD DI,4&l
79、t;/p><p> LOOP SORT3</p><p> MOV CX,DX</p><p> DEC DX</p><p> LOOP SORT1</p><p> LEA SI,RANK</p><p> MOV
80、CX,P </p><p> MOV BX,1</p><p><b> RANKING:</b></p><p> MOV [SI+2],BX</p><p> INC BX</p><p> ADD SI,4</p>&l
81、t;p> LOOP RANKING</p><p><b> OUTPUT:</b></p><p> LEA DX,BUFFER3</p><p> MOV AH,09H</p><p> INT 21H</p><p> LEA
82、 SI,RANK</p><p> MOV BX,P</p><p> OUTPUT2: PUSH BX</p><p> MOV CX,2</p><p> OUTPUT3: PUSH CX </p><p> MOV AX,[SI]&l
83、t;/p><p> MOV DATA1,AX</p><p> CALL OUTPUT1</p><p> MOV DX,09H</p><p> MOV AH,02H</p><p> INT 21H</p><p> ADD
84、 SI,2 </p><p> POP CX</p><p> LOOP OUTPUT3</p><p> CALL ENT</p><p> POP BX</p><p> MOV CX,BX</p><p> DE
85、C BX</p><p> LOOP OUTPUT2 </p><p> JMP EXT1</p><p> OUTPUT1 PROC NEAR</p><p> MOV BX,DIQIT</p><p> DEC BX</p>
86、<p> MOV CX,BX</p><p><b> CHANGE1:</b></p><p> MOV AL,1</p><p> MOV DX,10</p><p> MUL DX</p><p> LOOP
87、 CHANGE1</p><p> MOV DX,AX</p><p> MOV AX,DATA1</p><p><b> CBW</b></p><p> DIV DL</p><p> MOV DL,AH</p><
88、;p><b> CBW</b></p><p> MOV DATA1,DX</p><p> MOV DL,AL</p><p> ADD DL,30H</p><p> CMP DL,31H</p><p> JB
89、CHANGE2</p><p> MOV AH,02H</p><p> INT 21H</p><p><b> CHANGE2: </b></p><p> MOV CX,BX</p><p> DEC BX</p>&l
90、t;p> LOOP CHANGE1</p><p> MOV DX,DATA1</p><p> ADD DL,30H</p><p> MOV AH,02H</p><p> INT 21H</p><p> RET </p
91、><p> OUTPUT1 ENDP</p><p> ENT PROC NEAR</p><p> MOV AH,2</p><p> MOV DL,0DH</p><p> INT 21H</p><p> MOV AH,
92、2</p><p> MOV DL,0AH</p><p> INT 21H </p><p><b> RET</b></p><p><b> ENT ENDP</b></p><p> WELCOME PROC NEAR&
93、lt;/p><p> MOV DX,OFFSET BUFFER1</p><p> MOV AH,09H</p><p> INT 21H</p><p> CALL ENT</p><p> MOV DX,OFFSET BUFFER2</p>
94、<p> MOV AH,09H</p><p> INT 21H</p><p> CALL ENT</p><p><b> IN1:</b></p><p> MOV AH,01H</p><p> INT 2
95、1H</p><p> SUB AL,30H</p><p> CMP AL,NO ;判斷學(xué)生人數(shù)是否超過上限</p><p> JA RIN1 ;如果超過上限則重新輸入</p><p> JMP NEXT1</p><p><
96、b> RIN1:</b></p><p> MOV DX,OFFSET BUFFER4 ;如果超過上限則重新輸入</p><p> MOV AH,09H</p><p> INT 21H</p><p> JMP IN1</p><p&
97、gt;<b> NEXT1: </b></p><p> MOV AH,0</p><p> MOV P,AX ;將學(xué)生人數(shù)輸入至p</p><p> CALL ENT</p><p><b> RET</b></p><
98、;p> WELCOME ENDP</p><p><b> EXT1:</b></p><p> MOV AX,4C00H ;退出程序</p><p> INT 21H</p><p><b> EXT2:</b></p><p&g
99、t;<b> RET</b></p><p> CODES ENDS</p><p> END START</p><p> 附錄2:中斷駐停程序</p><p><b> 源代碼:</b></p><p> CODE SEGMENT ORG 10
100、0H ASSUME CS:CODE,DS:CODE HOUR DB 0 MINUTE DB 0 SECOND DB 0 COUNT DB 18 T DB "00:00:00" </p><p> START:MOV AX,CODE MOV DS,AX MOV AH,2CH INT 21H MOV HOUR, CH MOV MINUTE,CL MOV SECOND,D
101、H LEA DX,INT1C MOV AX,251CH INT 21H MOV AH,1 INT 21H MOV AX,3100H ;駐留內(nèi)存 MOV DX,(PRG_LEN+15)/16+16 INT 21H </p><p> INT1C PROC FAR DEC CS:COUNT JZ C2 JMP CEND </p><p> C2: PUSH DS
102、PUSH ES PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSH CS POP DS MOV COUNT,18 INC SECOND CMP SECOND,60 JB C1 MOV SECOND,0 INC MINUTE CMP MINUTE,60 JB C1 MOV MINUTE,0 INC HOUR CMP HOUR,24 JB C1
103、MOV HOUR,0 </p><p> C1: MOV AL,HOUR CBW MOV DL,0AH DIV DL OR AX,3030H MOV WORD PTR[T],AX ;將小時送入到[T] MOV AL,MINUTE CBW DIV DL OR AX,3030H MOV WORD PTR[T+3],AX ;將分鐘送入到[T+3]和[T+4] MOV AL,SECOND CB
104、W DIV DL OR AX,3030H MOV WORD PTR[T+6],AX ;將秒鐘送入到[T+6]和[T+7] MOV CX,8 MOV AX,0B800H MOV ES,AX LEA SI,[T] MOV DI,144 </p><p> C3: LODSB ;塊裝入指令 把SI指向的存儲單元讀入累加器 STOSW ;從 AX 讀取的字 送入到ES:DI LOOP C3 POP
105、 DI POP SI POP DX POP CX POP BX POP AX POP ES POP DS CEND: IRET INT1C ENDP PRG_LEN EQU $-START CODE ENDS END START </p><p> 計算機(jī)科學(xué)與技術(shù)系課程設(shè)計評分表</p><p> 課程名稱:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 匯編語言課程設(shè)計報告
- 匯編語言課程設(shè)計報告
- 匯編語言課程設(shè)計報告a
- 匯編語言課程設(shè)計
- 匯編語言課程設(shè)計
- 匯編語言課程設(shè)計報告---打字游戲
- 匯編語言課程設(shè)計安排
- 《匯編語言》課程設(shè)計報告--判斷閏年程序
- 匯編語言課程設(shè)計報告---顯示系統(tǒng)時間
- 《匯編語言》課程設(shè)計報告顯示系統(tǒng)時間
- 匯編語言推箱子課程設(shè)計
- 匯編語言課程設(shè)計----電子鬧鐘
- 打字游戲-匯編語言課程設(shè)計
- 匯編語言程序設(shè)計-課程設(shè)計
- 匯編語言程序設(shè)計課程設(shè)計
- 匯編語言動畫設(shè)計課程設(shè)計
- 微機(jī)原理與匯編語言課程設(shè)計
- 匯編語言課程設(shè)計磁盤文件管理
- 匯編語言課程設(shè)計_提取系統(tǒng)時間
- 匯編語言課程設(shè)計《定時顯示系統(tǒng)》
評論
0/150
提交評論