

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課 程 設 計 報 告</p><p> 課程名稱 匯編語言程序設計 </p><p> 課題名稱 1.成績排名 2.中斷駐留程序 </p><p> 專 業(yè) 計算機科學與技術 </p><p> 班 級
2、 </p><p> 學 號 </p><p> 姓 名 </p><p> 指導教師
3、</p><p> 2013 年 1 月 9日</p><p> 一、設計內容與設計要求</p><p> 1.設計內容:通過本周的課程設計,學生能夠鞏固所學的基礎知識,并能夠使學生更加熟練運用匯編程序設計語言來掌握綜合匯編程序設計的方法和過程,以及為設計其它應用軟件提供幫助,進而提高學生的軟件設計能力。</p><p> 1、編
4、制一計算比賽成績的程序,要求完成以下功能:</p><p> ?。?) 9名評委,每個評委給分范圍為0~10(整數);</p><p> ?。?) 9名評委給分中,去掉一個最高分和一個最低分,剩余7名評委的平均分即為參賽者的得分(精確到小數點二位);</p><p> ?。?) 將得分在光標位置處顯示出來。</p><p> 2、編制一程序
5、,要求接收從鍵盤輸入的一個班的學生成績,并存放于30字的grade數組中,各數據的格式為:</p><p> 學號,成績1,成績2,…,成績5</p><p> 然后根據grade中的學生成績,把學生名次填入rank數據組中,并顯示出來,格式為:</p><p><b> 學號,名次</b></p><p> 3
6、、利用INT 1CH(大約每秒中斷18.2次)編寫一個中斷駐留程序,要求在屏幕的右上角顯示計算機中當前系統(tǒng)時間,顯示格式為</p><p> 時:分:秒:1/100秒</p><p> 4、輸入一個菱形的兩條對角線長,在屏幕上用‘*’號畫出一個彩色的菱形。</p><p> 5、設置圖形方式并顯示彩條,要求:</p><p> 選擇背
7、景色為藍色,調色板為0,然后每行顯示一種顏色,每四行重復一次,一直到整個屏幕都顯示出彩條</p><p><b> 2.設計要求:</b></p><p> 掌握結構化程序設計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經驗。</p><p> 設計正確,方案合理。</p>
8、;<p> 界面友好,使用方便。</p><p> 程序精煉,結構清晰。</p><p> 設計報告5000字以上,含程序設計說明,用戶使用說明,源程序清單及程序框圖。</p><p><b> 上機演示。</b></p><p> 按學號順序選課題號,并在規(guī)定的時間內獨自完成相關課題的匯編源程序
9、編寫、調整和運行。源程序及編譯生成各文件均保存在軟盤中;</p><p> 按本任務書的要求,按附錄的要求編寫《課程設計報告》(Word文檔格式)。并用A4的復印紙打印并裝訂; </p><p><b> 二、進度安排</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> 課程設計報告裝訂順序:封面、任務書、目錄、正文、評分、附件(A4
11、大小的圖紙及程序清單)。 </p><p> 正文的格式:一級標題用3號黑體,二級標題用四號宋體加粗,正文用小四號宋體;行距為22。</p><p> 正文的內容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫出模塊圖);三、主要功能的實現(至少要有一個主要模塊的流程圖);四、程序調試;五、總結;六、附件(所有程序的原代碼,要求對程序寫出必要的注釋)。</p>&
12、lt;p> 正文總字數要求在5000字以上(不含程序原代碼)。</p><p><b> 目錄</b></p><p> 課題1:學生成績排名程序</p><p> 1.1課題的主要功能…………………………………………1</p><p> 1.2課題的概要設計…………………………………………1</p
13、><p> 1.3課題的詳細設計…………………………………………4</p><p> 1.4調試結果與分析…………………………………………6</p><p> 1.5心得體會…………………………………………………8</p><p> 課題2:中斷駐留程序</p><p> 2.1課題的主要功能…………………………
14、………………9</p><p> 2.2課題的概要設計…………………………………………9</p><p> 2.3課題的詳細設計…………………………………………12</p><p> 2.4調試結果與分析…………………………………………14</p><p> 2.5心得體會…………………………………………………16</p>
15、<p> 附錄1:學生成績排名設計…………………………………17</p><p> 附錄2:中斷駐留設計………………………………………24</p><p> 課題一:學生成績排名</p><p><b> 一、課題主要功能</b></p><p> 學生成績排名程序的主要功能是從鍵盤輸入n個學生的
16、成績(格式為:學號、成績1、成績2),將其存儲在數組GRADE中。然后調用相關的功能模塊如成績信息復制模塊等來完成成績的排序以及排名并顯示出來(格式為:學號、名詞)。</p><p><b> 課題概要設計</b></p><p> 2.1課題功能模塊設計</p><p> 程序主要由如歡迎界面函數、成績輸入函數、成績信息復制函數、成績排
17、序函數、輸出函數五大模塊組成。其相關的功能在運行時會有相應的提示。各個功能模塊的關系如下:</p><p> 2.2成績輸出模塊流程圖</p><p> 成績輸出模塊的主要問題是將相關的數據項取得之后的后續(xù)處理。全局變量學號的位數DIGIT來控制整個進制的轉換的數量級。同時也是分為兩個循環(huán),內存循環(huán)主要的功能就是控制整個輸出的格式問題,外層循環(huán)則是控制整個輸出的項目的問題。一個數的輸出
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)為內循環(huán)即比較循環(huán),另一個則為外層循環(huán)控制內存循環(huán)的次數。 其流程圖如下:</p><p><b> N</b></p><p><b> Y</b></p><p><b> 課題詳細設計</b></p><p> 3.1
20、成績輸入模塊</p><p> 依次從鍵盤輸入學生學號及成績,TAB鍵為控制字符,每次輸入一個數據光標就向左移動8位,每次輸入完畢一個學生的信息就換行輸入。</p><p> 其單個數據輸入的代碼如下:</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> 其概要設計如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 學生成績輸出模塊</p><p> 其單個數據的輸入主要的實現如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> 調試結果與分析</b></p><p> 4.1
31、 EMU8086調試</p><p><b> 成績信息輸入</b></p><p> 說明:由于emu8086無法調用DOS 09H功能,所以字符串無法輸出</p><p><b> 排名結果輸出</b></p><p> 4.2 Masm for Windows調試</p>
32、<p><b> 五、心得體會</b></p><p> 此課題可以說是我自程序設計開始以來就一直做的課題,但是一開始并不能很快地就形成完整的一個程序。其主要的原因就在于以前的C語言程序設計、C++程序設計中等都有很多的數據結構體運用。如此此次的學生成績排序就可以定義一個學生成績的結構體,如struct score { char no[4],int math 、、、}。所以
33、此次首先解決的問題應該是找到一種適合的數據結構來完成所有的設計。</p><p> 因為首先采用的Masm for Windows軟件,其中的調試很是不直觀,所以采用了Emu8086軟件來完成一些基本的設計。其中遇到的問題主要是DOS 09H功能調用的失敗導致程序設計根本無法進行下去,后來設置為單個字符的輸出作為提示符逐步的完成所有的功能。其中如JA 、JB等指令的條件都很好的能夠知道,還有就是能夠單步的執(zhí)行指
34、令,查看常用寄存器中的內容。這樣的軟件對于我來說簡直是太棒了!我基本上能夠清晰的知道那個指令引起數據變化以及如何變化等。如成績信息復制模塊的設計在開始的時候由于CX頻繁的使用導致其循環(huán)的次數根本就是無效的,如CX=**FF等等。</p><p> 還有的一點就是所有的設計要畫圖。因為匯編中的內存數據主要是通過DI跟SI來控制的,所以你必須清楚的知道某一步操作完成之后的DI、SI的指向問題。如此次的課程設計中的成
35、績信息復制函數由于將所有的某個學生的成績相加放入RANK數組中后,忘記將SI加1導致將第5個成績作為學號輸入RANK數組中。</p><p> 此次課程設計使我對于匯編指令的運用有了初步的了解以及掌握。我深刻的知道了如果光看書本上的知識是無法進行現實操作的,那就是眼高手低的表現。任何的知識不僅僅是要看書了解、通讀、、、更為重要的是你要將學到的知識熟練的運用到現實生活中來。還有就是有不知道的問題可以尋求老師、同學
36、以及網絡的幫助。要知道一個人的力量總是有限的,大家的力量才是無限的。</p><p> 總之一句話,此次課程設計我學到了很多。</p><p> 課題二: 中斷駐留程序</p><p><b> 一、課題的主要功能</b></p><p> 本課題主要是完成一個中斷駐留程序,要求在屏幕的右上角顯示當前的系統(tǒng)時間,
37、時間格式為時:分:秒</p><p> 完成該課題的系統(tǒng)時間功能,需要不斷地以同步顯示系統(tǒng)時間,這里我們需要用</p><p> INT 1CH,平均每秒中斷18.2次,以這樣的頻率同步顯示系統(tǒng)時間足以滿足人們的視覺效果。完成系統(tǒng)時間同步的前提下,還要讀取系統(tǒng)時間和顯示時間。</p><p><b> 二、課題的概要設計</b></
38、p><p><b> 2.1功能模塊解釋</b></p><p> 該課題的的功能模塊,就是在定義好數據之后,完成讀取系統(tǒng)時間和顯示系統(tǒng)時間兩大模塊。包括獲取原中斷類型,保存原中斷類型,設置新的中斷類型,執(zhí)行中斷處理程序,應用堆棧保護現場,讀取系統(tǒng)時間,然后分別將時間的BCD碼轉換為字符,在制定內存位置寫入時間并顯示時間,最后恢復現場,中斷返回。</p>
39、<p> 該課題,采用調用子程序的思想來完成,主體功能都通過子程序模塊完成,中斷模塊,讀取系統(tǒng)時間模塊,顯示系統(tǒng)模塊,現場保護模塊及現場恢復模塊。通過調用子程序的方法,使本程序更加具有條理性,其中現場保護是為了使寄存器里有用的數據保存起來,讓寄存器進行其他運算,現場恢復是使之前保護起來的有用數據恢復,讀取系統(tǒng)時間并使屏幕顯示的時間與系統(tǒng)時間同步變化,這就不得不使用中斷模塊,運用INT 1CH,可以平均每秒中斷18.2次,足
40、以滿足視覺上的同步。</p><p> 2.2功能模塊流程圖</p><p> 2.3主要功能流程圖</p><p><b> 三、課題詳細設計</b></p><p> 3.1 系統(tǒng)時間功能調用</p><p> 這個程序主要是要實現獲取系統(tǒng)時間并顯示時間。</p>&l
41、t;p> 步驟一:定好好數據之后,在DOS環(huán)境下,用2C號取系統(tǒng)時間的功能,將時賦值 </p><p> 給CH,將分賦值給CL,將秒賦值給DH,將1/100賦值給DL,具體實現如下:</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> 子函數INTIC來具體實現系統(tǒng)時間顯示,將從系統(tǒng)中讀取的時,分,秒分別送入內存T到T7,然后塊裝入指令 把SI指向的存儲單元讀入累加器,其具體實現如下:</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> 四.程序調試</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> 調用DOS的31H功能,可以將光標及系統(tǒng)時間顯示在屏
46、幕的右上方。</p><p> 4.1.2 INT1C的調用</p><p> INT1C PROC FAR DEC CS:COUNT JZ C2 JMP CEND </p><p> 通過調用INT1C,我們實現了函數的中斷功能,程序運行至此中斷處,將執(zhí)行中斷處理功能,此時程序跳轉到中斷函數處,待執(zhí)行中斷函數后,返回到原來中斷處,繼續(xù)執(zhí)行下一個步驟。
47、</p><p><b> 4.2程序測試</b></p><p><b> 程序運行結果</b></p><p><b> 心得體會</b></p><p> 通過本次的中斷駐留程序,對于DOS以及BOIS功能的調用更為熟悉。鞏固了關于系統(tǒng)中斷向量的了解。中斷程序的主
48、要的目的是提高CPU的利用率,中斷處理過程最為主要的一點就是保存斷點現場。其次也進一步的了解了8086的指令的運用,對于計算機硬件有了相對的了解。</p><p> 此次課程設計到這里已經基本結束了,其中最大的體會就是前面所講的匯編程序設計跟C語言等高級語言程序設計最大的差別就在于數據段的定義以及操作的對象上面。像上面程序設計你所用到的指令的操作對象永遠只有6個:AX、BX、、、所以有時候就感覺像穿著棉襖在游泳
49、很是束縛,但是毫無疑問的是匯編永遠是計算機人員必須掌握的一門語言,不僅僅是因為實用性等,更多的是匯編程序設計讓我們有更多的時間來思考如何設計,而不是尋求插件等方式來減少設計過程中要關心的問題。在當今這個高級語言泛濫的年代中,我們總是在瘋狂的追逐流行語言,雖然他們讓我們更加簡單的設計程序,但是不得不說他讓程序設計人員感覺就像是時尚產品一樣有保質期,當然還有更多的不足之處,當然還是利大于弊的。匯編程序設計就像是金字塔的底層,我們應該懂得如何
50、使用,我們也必須知道并熟練的使用,因為他是所有程序設計的基礎。</p><p> 課程設計的時間已經過去了,但是我的匯編之旅才剛剛開始,寒假就是一個不錯的時間段!</p><p> 附錄1:學生成績排名程序</p><p><b> 源代碼: </b></p><p> DATAS SEGMENT
51、 ;數據段</p><p> M EQU 3 ;成績長度</p><p> NO EQU 10 ; 學生數目</p><p> DIQIT EQU 2 ;學生數目的位數</p><p> G EQU 5
52、 ;成績數目</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) ;學生名次</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)次數控制</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 ;無學生信息 則退出系統(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 ;判斷學生人數是否超過上限</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 ;將學生人數輸入至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 ;駐留內存 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> 計算機科學與技術系課程設計評分表</p><p> 課程名稱:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 匯編語言課程設計報告
- 匯編語言課程設計報告
- 匯編語言課程設計報告a
- 匯編語言課程設計
- 匯編語言課程設計
- 匯編語言課程設計報告---打字游戲
- 匯編語言課程設計安排
- 《匯編語言》課程設計報告--判斷閏年程序
- 匯編語言課程設計報告---顯示系統(tǒng)時間
- 《匯編語言》課程設計報告顯示系統(tǒng)時間
- 匯編語言推箱子課程設計
- 匯編語言課程設計----電子鬧鐘
- 打字游戲-匯編語言課程設計
- 匯編語言程序設計-課程設計
- 匯編語言程序設計課程設計
- 匯編語言動畫設計課程設計
- 微機原理與匯編語言課程設計
- 匯編語言課程設計磁盤文件管理
- 匯編語言課程設計_提取系統(tǒng)時間
- 匯編語言課程設計《定時顯示系統(tǒng)》
評論
0/150
提交評論