課程設計報告純軟件設計出題程序_第1頁
課程設計報告純軟件設計出題程序_第2頁
課程設計報告純軟件設計出題程序_第3頁
課程設計報告純軟件設計出題程序_第4頁
課程設計報告純軟件設計出題程序_第5頁
已閱讀5頁,還剩15頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 課程設計報告( 20132014年度第一學期)名 稱: 微機原理及應用 題 目:純軟件設計出題程序院 系: 控計學院 班 級: 學 號: 學生姓名: 指導教師: 設計周數: 同組人: 成 績: 日期:2014年1月9日18 / 20文檔可自由編輯打印一、課程設計的目的與要求1 通過純軟件編程實現隨機抽取10道簡單的加減乘除運算題 2 要求給出開始答題時間、答題結束時間以及總用時 3 要求對題目結果進行判斷并給出得分二、設計正文1 需求分析 1 . 1 MASM編程軟件2. 總體設計 2 . 1 產生兩個隨機運算數及隨機運算符 2 . 2 將運算數A和B以十進制方式輸入 2 . 3 產生一個隨

2、機運算式 2 . 4 在屏幕上顯示開始時間、結束時間及時間差 2 . 5 判斷結果的正確與否并給出最終得分 三、課程設計總結1 個人總結 本次課程設計我們做的課題是利用MASM編程軟件設計一個自動出題程序,兩人一組。整體設計構想由我們兩人共同完成,我負責主程序框架以及隨機數、屏幕背景、系統時間讀取這些部分。對于 主程序框架,它是整個程序的骨架,通過組內商量,我們最終確定了程序的流程:在進行初始化后,要對屏幕背景進行設置,接著確定題目數量、生成隨機運算式,然后根據系統算出的正確結果對輸入的結果進行判斷并給出得分。在程序編寫過程中,我也遇到了許多問題,其中包含有許多的調用,如屏幕背景設置、時間的調

3、用等以及隨機數的獲得。經過反復的修改、查閱資料、百度,我們的程序最終能夠完成預期的基本功能。我還負責了程序調試的部分,由于程序是由兩個人分開來寫的,所以整合在一起后遇到了許多問題,寄存器的使用錯亂是最嚴重的,之后經過一次次的調試,我們的程序最終總算是基本完成了。 通過本次課程設計,我總算學會了編程,學會了使用MASM,也終于體會到了什么叫學以致用。這讓我獲得了很大的滿足感。不過我們的程序還存在不少缺點,對于除法運算,當結果不是整數時,做題時它的結果該怎么書寫尚未找到方法,因此我們的程序中只涉及了加減乘這三種運算。2. 團體總結 本次課程設計,我們是兩人一組,由于人數的原因,我們沒有做太難的課題

4、,只是受網上模擬考試的啟發想到了這個課題。兩人合作中,互相配合顯得尤為重要,在課程設計過程中,我們明確分工又彼此配合,遇到問題積極討論,或是查閱書籍,或是上網搜索,或是找人詢問。在我們的通力合作下,我們解決了許多問題。 對于本次課程設計的結果我們還是比較滿意的,我們在此收獲了很多。不過,我們的程序還有不足的地方,那就是其中沒有除法運算。為了解決問題,我們也進行過積極的討論,遺憾的是仍然沒有解決這一問題。四、參考文獻1李繼燦.新編16/32位微型計算機原理及應用.清華大學出版社.第4版.2008.72馬力妮.80x86匯編語言程序設計.機械工程出版社.第2版.2009.6(2012.1重印)附錄

5、(設計流程圖、程序、表格、數據等)1、程序流程圖 開始初始化做題?Y產生隨機數值產生運算符“+”?“-”?“*”?“/”?NNN加減乘除YYYY題目數量T=0T=10?YN存儲判斷,計分T=T+1結束N 2、程序代碼 HUICHE MACRO ;回車換行 MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H ENDMDISP1 MACRO X ;將數字A,B十進制輸出 AL LOCAL SHI LOCAL GEE PUSHA MOV AL,X MOV AH,0 CMP AX,10 JAE SHI CMP AX,0 JAE GEESHI:

6、 MOV BX,10 DIV BL MOV CH,AH MOV DL,AL ADD DL,30H MOV AH,2 ;屏幕顯示 INT 21H MOV AL,CH MOV AH,0 GEE: MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POPA ENDMDISP3 MACRO X ;時間的輸出 AL LOCAL SHI2 LOCAL GEE2 PUSHA MOV AL,X MOV AH,0SHI2: MOV BX,10 DIV BL MOV CH,AH MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV AL,CH MOV AH,

7、0 GEE2: MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POPA ENDMDISP2 MACRO Y ;將結果十進制輸出 AX,先判斷結果是幾位數 LOCAL QIAN1 LOCAL BAI1 LOCAL SHI1 LOCAL GEE1 PUSHA MOV AX,Y CMP AX,1000 JAE QIAN1 CMP AX,100 JAE BAI1 CMP AX,10 JAE SHI1 CMP AX,0 JAE GEE1QIAN1: MOV BX,1000 MOV DX,0 DIV BX MOV SI,DX ;YUSHU MOV DX,AX ADD DL,3

8、0H MOV AH,2 INT 21H MOV AX,SI MOV DX,0BAI1: MOV BX,100 DIV BL MOV CH,AH ;YUSHU MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV AL,CH MOV AH,0 SHI1: MOV BX,10 DIV BL MOV CH,AH ;YUSHU MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV AL,CH MOV AH,0GEE1: MOV DL,AL ADD DL,30H MOV AH,2 INT 21H POPA ENDM YUNSUAN MACRO

9、X,Y,Z ;其中,A=X,B=Y,符號為Z。運算結果存到R中 LOCAL JIA1 LOCAL JIAN1 LOCAL CHENG1 LOCAL CHU1 LOCAL EXIT1 PUSHA MOV AL,X MOV CL,Y MOV BL,Z CMP BL,+ JE JIA1 CMP BL,- JE JIAN1 CMP BL,* JE CHENG1 CMP BL,/ JE CHU1JIA1: ADD AL,CL MOV AH,0 MOV R,AX JMP EXIT1JIAN1: SUB AL,CL MOV AH,0 MOV R,AX JMP EXIT1CHENG1: MOV AH,0 MU

10、L CL MOV R,AX JMP EXIT1CHU1: MOV AH,0 DIV CL MOV AH,0 MOV R,AXEXIT1: POPA ENDMDATAS SEGMENT ;此處輸入數據段代碼 X DW 0 Y DW 0 ;用來存得分 H DB ? ;開始時間 M DB ? S DB ? WH DB ?;時間差 WM DB ? WS DB ? HA DB ?;結束時間 MA DB ? SA DB ? A DB ? ;第一運算數 B DB ? ;第二運算數 R DW ? ;正確結果的存儲 FUHAO DB ?;符號 BUFF DB 6,?,6 DUP(?);用來寫輸入的結果 R1 D

11、W 0;存寫入的結果 ;ARRAY DB 10 DUP(?),$;存儲每題的結果 TIT DB Children Answering System,$ STA DB 1.start to test,$ DERE DB Do you want to check detailed results Y/N,$ QU DB 2.are you ready,please press Sto begin,$ STATIME DB Start Time: ,$ ENDTIME DB End Time: ,$ TTIME DB Total Time: ,$ INFO1 DB Please input corr

12、ect number,$ TIMU DB Question : ,$ TP DB Total Points: ,$ TMGS DB Qing shu ru ti mu ge shu : ,$ DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;此處輸入代碼段代碼INI: CALL INITIAL ;跳轉到背景設置 MOV AH,7 ;鍵盤輸入(無回顯) INT 21H CMP AL,53H ;用符號

13、S表示開始做題 JE STAR CMP AL,45H ;用符號E表示結束做題 JE EXIT9 JMP WRSTAR: MOV AH,7 ;屏幕下滾 MOV AL,0 MOV CH,0 MOV CL,0 MOV DH,24 MOV DL,79 MOV BH,00110000B ;答題界面,淡藍底黑字 INT 10H CALL TIME ;開始時間 MOV AH,2 ;設置光標位置 MOV BX,0 ;頁號 MOV DH,2 ;行號 MOV DL,25 ;列號 INT 10H LEA DX, STATIME MOV AH,9 INT 21H MOV DL,H ;輸出開始時間 DISP3 DL M

14、OV DL,: MOV AH,2 ;顯示一字符 INT 21H MOV DL,M DISP3 DL MOV DL,: MOV AH,2 INT 21H MOV DL,S DISP3 DL HUICHE MOV CX,10;出十個題 HUICHELOOP1: LEA DX,TIMU MOV AH,9 INT 21H CALL SUANSHI LOOP LOOP1 MOV AH,2 MOV BX,0 MOV DH,15 MOV DL,25 INT 10H LEA DX,TP MOV AH,9 INT 21H MOV DX,Y ;最后得分 DISP2 DX HUICHE CALL TIME1 ;結束

15、時間,并算出時間差 MOV AH,2 MOV BX,0 MOV DH,16 MOV DL,25 INT 10H ;設置光標位置 LEA DX,ENDTIME MOV AH,9 INT 21H ;輸出字符串“End Time :” MOV DL,HA DISP3 DL MOV DL,: MOV AH,2 INT 21H MOV DL,MA DISP3 DL MOV DL,: MOV AH,2 INT 21H MOV DL,SA DISP3 DL ;輸出結束時間 HUICHE MOV AH,2 MOV BX,0 MOV DH,17 MOV DL,25 INT 10H ;設置光標位置 LEA DX,

16、TTIME MOV AH,9 INT 21H ;輸出字符串“Total Time : ” MOV DL,WM DISP3 DL MOV DL,: MOV AH,2 INT 21H MOV DL,WS DISP3 DL MOV AH,7 INT 21H ;輸出時間差EXIT10: MOV Y,0 JMP INI;返回去WR: HUICHE LEA DX,INFO1 MOV AH,9 INT 21H JMP EXIT10 EXIT9: MOV AH,4CH INT 21H ;程序結束 RAND1 PROC ;A隨機數1,A PUSH AX PUSH BX PUSH CX PUSH DX STI M

17、OV AH,0 INT 1AH MOV AX,DX AND AH,03H ;清空高六位,防止溢出 MOV DL,50 ;得到1100的隨機數 DIV DL MOV BL,AH ;隨機數給到BL中 MOV BH,0 INC BX MOV A,BL POP DX POP CX POP BX POP AX RETRAND1 ENDPRAND2 PROC ;B隨機數2,B PUSH AX PUSH BX PUSH CX PUSH DX STI MOV AH,0 INT 1AH MOV AX,DX NOT AL AND AH,03H ;清空高六位,防止溢出 MOV DL,31 ;得到1100的隨機數 D

18、IV DL MOV BL,AH ;隨機數給到BL中 MOV BH,0 INC BX MOV B,BL POP DX POP CX POP BX POP AX RETRAND2 ENDP RAND3 PROC ;+-*/運算符的隨機,存到FUHAO PUSH AX PUSH BX PUSH DX PUSH CX MOV AL,A MOV AH,0 MOV BL,8 DIV BL CMP AH,0 JE JIA CMP AH,1 JE JIAN CMP AH,2 JE CHENG CMP AH,3 JE CHENG CMP AH,4 JE JIA CMP AH,5 JE JIAN CMP AH,6

19、 JE CHENG CMP AH,7 JE JIAJIA: MOV DL,+ MOV AH,2 INT 21H MOV FUHAO,+ JMP END1JIAN:MOV DL,- MOV AH,2 INT 21H MOV FUHAO,- JMP END1CHENG:MOV DL,* MOV AH,2 INT 21H MOV FUHAO,* JMP END1CHU: MOV DL,/ MOV AH,2 INT 21H MOV FUHAO,/ END1: POP CX POP DX POP BX POP AX RETRAND3 ENDPSUANSHI PROC ; 得到算式達式 A+B PUSH

20、DX PUSH AX PUSH BX CALL RAND1 CALL RAND2 MOV AH,A MOV AL,B CMP AH,AL ;比較A,B,如果小,就交換,為了保證永遠是正數 JB CHANGE JAE NEXT1CHANGE: MOV BL,AH MOV AH,AL MOV AL,BL MOV A,AH MOV B,ALNEXT1: DISP1 A ;輸出 CALL RAND3 DISP1 B MOV DL,= MOV AH,2 INT 21H YUNSUAN A,B,FUHAO ;計算并把結果存入R中 CALL PANDUAN ;判斷對錯 POP BX POP AX POP D

21、X RETSUANSHI ENDP PANDUAN PROC ;判斷結果是否正確,正確的,總分Y+10 PUSH AX PUSH CX PUSH DX PUSH SI PUSH DI PUSH BP MOV BP,X ;做下標,用來判斷每道題 LEA DX,BUFF MOV AH,0AH INT 21H MOV CL,BUFF1 MOV CH,0 MOV BX,1 LOOP5: ;將輸入的結果轉為數字 MOV AL,BUFF1+BX SUB AL,30H MOV AH,0 MOV SI,AX MOV AX,R1 MOV DL,10 MUL DL ADD AX,SI MOV R1,AX INC

22、BX LOOP LOOP5 MOV DL,0DH ;換行 MOV AH,2 INT 21H MOV SI,R1 ;輸入的結果 MOV DI,R ;正確結果 CMP SI,DI JE CORRECT JNE WRONG ;錯誤的話不做操作CORRECT: ADD Y,10 ;正確,加十分 MOV DL,54H MOV AH,2 INT 21H ;MOV ARRAYBP,Y JMP EXIT4WRONG: MOV AH,2 MOV DL,46H INT 21H ;MOV ARRAYBP,NEXIT4: MOV R1,0 ;置零, ADD BP,1 MOV X,BP HUICHE POP BP PO

23、P DI POP SI POP DX POP CX POP AX RETPANDUAN ENDPTIME PROC ;得到開始時間 PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI MOV AH,2CH INT 21H MOV H,CH MOV M,CL MOV S,DH POP DI POP SI POP DX POP CX POP BX POP AX RETTIME ENDPTIME1 PROC ;得到結束時間,并且算出時間差 PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI MOV AH,2CH INT 21H MOV HA,CH MOV MA,CL MOV SA,DH MOV AH,H MOV AL,M MOV BH,S CMP DH,BH ;比較SECOND JAE NEXT6 JB NEXT7NEXT6: SUB

溫馨提示

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

評論

0/150

提交評論