




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、-. z. . . . . 資料. . .課 程 設 計 報 告課程設計名稱: 簡易計算器 系 別:三系學生*:*夢瑤班 級:11通信1班 學 號:成 績:指導教師:袁靜開課時間:2013-2014學年1學期一設計題目簡易計算器二主要內容1、采用模塊化程序構造設計軟件,可將整個軟件分成假設干功能模塊。2、畫出程序流程圖。3、根據流程圖,編寫源程序。4、上機調試程序。三具體要求1、利用BIOS和DOS的中斷來設計一個計算器,要求在屏幕上顯示一個主菜單,提示用戶輸入相應的數字鍵,分別執行加、減、乘、除四種計算功能和完畢程序的功能。2、利用BIOS中斷的10號功能調用來設置顯示方式。3、利用DOS中
2、斷的01號和02號子功能來完成鍵盤接收,結果顯示。四進度安排周一周二周三周四周五講課設內容,安排任務查資料,確定硬件電路方案編程調試編程調試寫總結報告五成績評定考核方法:現場驗收占50%,課程設計報告占50%。考核內容:學習態度出勤情況,平時表現等、方案合理性、程序編制質量、演示效果、設計報告質量。成績評定:優,良,中,及格,不及格。特別說明:如發現抄襲,按照不及格處理。目 錄TOC o 1-3 h z uHYPERLINK l _Toc375485633前言 PAGEREF _Toc375485633 h 4HYPERLINK l _Toc3754856341、設計題目 PAGEREF _T
3、oc375485634 h 5HYPERLINK l _Toc3754856352、設計內容 PAGEREF _Toc375485635 h 5HYPERLINK l _Toc3754856362.1 根本內容 PAGEREF _Toc375485636 h 5HYPERLINK l _Toc3754856372.2 主要功能 PAGEREF _Toc375485637 h 5HYPERLINK l _Toc3754856403、設計原理及方案 PAGEREF _Toc375485640 h 6HYPERLINK l _Toc3754856413.1 總體方案 PAGEREF _Toc3754
4、85641 h 6HYPERLINK l _Toc3754856493.2 程序流程圖 PAGEREF _Toc375485649 h 7HYPERLINK l _Toc3754856503.2.1 主程序 PAGEREF _Toc375485650 h 7HYPERLINK l _Toc3754856513.2.2 計算子程序 PAGEREF _Toc375485651 h 8HYPERLINK l _Toc3754856523.3 系統模塊詳細設計 PAGEREF _Toc375485652 h 9HYPERLINK l _Toc3754856533.3.1 界面設置 PAGEREF _T
5、oc375485653 h 9HYPERLINK l _Toc3754856593.3.2 算法選擇設置 PAGEREF _Toc375485659 h 10HYPERLINK l _Toc3754856663.3.3 數制轉換設置 PAGEREF _Toc375485666 h 11HYPERLINK l _Toc3754856714.匯編源程序代碼 PAGEREF _Toc375485671 h 13HYPERLINK l _Toc3754857015、調試運行結果 PAGEREF _Toc375485701 h 20HYPERLINK l _Toc3754857025.1 操作說明 PA
6、GEREF _Toc375485702 h 20HYPERLINK l _Toc3754857035.2 調試運行結果 PAGEREF _Toc375485703 h 20HYPERLINK l _Toc3754857046、心得體會 PAGEREF _Toc375485704 h 23HYPERLINK l _Toc3754857057、參考文獻 PAGEREF _Toc375485705 h 24前言課程設計是培養和鍛煉學生在學習完本門課后綜合應用所學理論知識,解決實際工程設計和應用問題的能力的重要教學環節。它具有動手、動腦和理論聯系實際的特點,是培養在校工科大學生理論聯系實際、敢于動手、
7、善于動手和獨立自主解決設計實踐中遇到的各種問題能力的一個重要教學環節。計算器在我們日常生活中應用是相當普遍的,可以說它已經成為現代社會生活不可或缺的一局部。本次課程設計就是根據微機原理與接口的相關知識,利用BIOS和DOS的中斷來設計一個簡易計算器,能夠實現加減乘除四則運算,并在屏幕上顯示一個主菜單,提示用戶輸入相應的數字鍵,分別執行加、減、乘、除四種計算功能和完畢程序的功能。同時利用BIOS中斷的10號功能調用來設置顯示方式,利用DOS中斷的01號和02號子功能來完成鍵盤接收,結果顯示。通過本次課程設計,要求學生熟悉和掌握微機系統的軟件的方法、設計步驟,使學生得到微機開發應用方面的初步訓練,
8、熟練應用8086匯編語言編寫應用程序和實際設計中的軟件調試方法和步驟,熟悉微機系統的軟件開發工具的使用方法。通過課程設計實踐,不僅要培養學生事實求是和嚴肅認真的工作態度,培養學生的實際動手能力,檢驗學生對本門課學習的情況,更要培養學生在實際的工程設計中查閱資料,撰寫設計報告表達設計思想和結果的能力。1、設計題目簡易計算器2、設計內容2.1根本內容1、編寫一個程序,能從鍵盤上讀入數據,并完成加、減、乘、除的計算。2、利用BIOS和DOS的中斷來設計一個計算器,要求在屏幕上顯示一個主菜單,提示用戶輸入相應的數字鍵,分別執行加、減、乘、除四種計算功能和完畢程序的功能。3、利用BIOS中斷的10號功能
9、調用來設置顯示方式。4、利用DOS中斷的01號和02號子功能來完成鍵盤接收,結果顯示。2.2 主要功能一、顯示主菜單功能主菜單如下:Please input a number to choose the arithmetic operation1add 2subtract 3multiply 4divide qreturn to DOS二、計算功能1、別按數字鍵1、2、3,則執行相應子模塊1、2、3,進展兩個字節與兩個字節的加法、減法和乘法運算,并在屏幕上顯示運算結果。2、按數字鍵4,執行子模塊4,進展兩個字節除一個字節的除法運算,并顯示結果。3、按字母鍵q,執行子模塊5,程序退出,返回DOS
10、。4、假設按其它鍵則顯示提示字符串:Please Press Number 1、2、3、4、q:,然后繼續顯示主菜單。3、設計原理及方案3.1 總體方案利用BIOS中斷的10號功能調用來設置顯示方式。利用DOS中斷的01號、02號子功能來完成鍵盤承受、結果顯示。設置屏幕顯示方式。MOV AH,00HMOV AL,NUM NUM為顯示方式屬性字 INT 10H接著從鍵盤上承受鍵值,并判別后轉到相應的子模塊進展運算,并顯示結果。MOV AH,01H INT 21H ;AL=鍵入字符的ASCII碼從鍵盤上接收一串字符串命令:MOV AH,0AH MOV D*,OFFSET BUF ;BUF為數據段中
11、定義的數據緩沖區 INT 21H顯示單個字符命令:MOV AH,02HINT 21H顯示一串字符串的命令:MOV AH,09H MOV D*,OFFSET BUF ;BUF為被顯示字符串的首地址 INT 21H十進制數顯示過程:將十進制數送到B*中,B*除以1000,余數送B*中,商在AL中,*圍為09,顯示AL中的內容。B*除以100,余數送B*中,商在AL中,顯示AL中的內容,依次類推,直到分出個位數字。如最高位為0,則不應顯示,而非最高位的0則顯示。可利用設標志位并結合商的方法來決定是否顯示0。3.2 程序流程圖 主程序顯示主菜單顯示主菜單接收數字AL=1AL=2AL=3AL=4AL=5
12、調用加法子程序調用減法子程序調用乘法子程序調用除法子程序完畢開場圖3.1 主程序流程圖 計算子程序提示輸入第一個數提示輸入第一個數提示輸入第二個數計 算判斷結果正負,并儲存結果將結果轉為ASCII碼,并顯示結果提示返回DOS還是重新計算將第一個數的ASCII碼轉為二進制并保存將第二個數的ASCII碼轉為二進制并保存結 束圖3.2 計算子程序流程圖3.3 系統模塊詳細設計本次設計需要實現的模塊圖圖如1所示 四則運算器程序設計 四則運算器程序設計 界面設置算法選擇設置數制轉換設置 界面設置算法選擇設置數制轉換設置圖3.3 模塊圖1界面設置 主要實現確定界面樣式的功能,以菜單形式顯示。算法選擇設置用
13、于選擇加、減、乘、除來進展運算。3數制轉換設置 應用十進制二進制的轉換算法來處理加、減、乘、除四則運算。 界面設置1、設置屏幕顯示方式:MOV AH,00HMOV AL,2INT 10H通過調用BOIS的O2H號功能來設置屏幕顯示方式。此處AL=2,即設置屏幕顯示方式為80*25黑白文本。2、顯示主菜單:DOS不僅為用戶提供了許多指令,而且還有用戶可以直接調用的上百個常用子程序。這些子程序的功能主要是進展磁盤讀/寫、根本輸入/輸出管理等。在使用時,用戶只需要了解各個子程序的編號即可,這些編號成為DOS功能調用號。其調用過程為:1DOS功能條用號送AH存放器。2如果需要,按要求給定輸入參數由得不
14、需要輸入參數。3寫入中斷指令INT 21H。調用完畢,按功能使用其輸出參數。本程序主菜單顯示代碼如下:MOV AH,09HMOV D*,OFFSET TOPINT 21H先在數據段中定義主菜單中要顯示的字符串,再通過調用DOS系統的09H號功能顯示字符串串尾字符為,但不顯示來完成。 算法選擇設置匯編語言中加減乘除運算指令分別為ADD、SUB、MUL、DIV。首先選擇要進展的四則運算,規定:假設選擇1,則進展加法;選擇2,則進展減法;選擇3,則進展乘法;選擇4,則進展除法。具體計算過程分析如下:1、從鍵盤接收一個數字:MOV AH,01HINT 21H通過調用DOS系統的01H號功能鍵入字符并回
15、車來實現,其出口參數為鍵入字符的ASCII碼,存在AL中。2、接收鍵入用于計算的數:MOV AH,0AHMOV D*,OFFSET BUF1通過調用DOS系統的0AH號功能鍵入字符串至內存緩沖區來實現,其入口參數如下:DS:D*=存放鍵入字符串的緩沖區的首地址;DS:D*=用戶規定的緩沖區;DS:D*+1=實際鍵入的字符數;從DS:D*+2開場放鍵入的字符串。因此,在下面的程序中運用所鍵入的數字時要注意字符串的首地址。3、顯示結果:MOV AH,09HMOV D*,OFFSET BUF3INT 21H將結果存入數據段中定義的緩沖區BUF3中,再通過調用DOS系統的09H號功能顯示字符串串尾字符
16、為,但不顯示來完成。 數制轉換設置1、子程序A2將數的ASCII碼轉為二進制數:A2 PROC NEAR MOV CL,BUF1+1; 把BUF1+1中的實際鍵入的字符數放入CL MOV CH,0; CH清零 MOV B*,OFFSET BUF1+2; 把第一個數字的地址放在B* PUSH B*; 保存B*中的值 PUSH C* ; 保存C*中的值L1: MOV AL,B* AND AL,0FH ; 把ASCII碼轉換為十進制 MOV B*,AL; 存放十進制 INC B* ; 下一個數字的地址 LOOP L1 POP C* ; 恢復C* POP B*; 恢復B* MOV A*,0 ; 將累加
17、和賦零 MOV SI,10L2: MUL SIADD AL,B*ADC AH,0INC B* LOOP L2 ; 累加乘10L3: RETA2 ENDP入口:十進制數的ASCII在BUF1內;出口:轉換后的二進制數在A*內。算法:先將其轉換為十進制,再用累加和乘10加*的方法變為二進制,如將163轉換為二進制數,可先將累加和賦0,再計算0*10+1*10+6*10+3結果為二進制數。2、將計算結果的二進制數轉換為對應的十進制數ASCII碼并輸出顯示A3程序段:該模塊的程序設計詳見程序清單及說明中A3、BB程序段 入口:二進制數在A*內;出口:轉換后的ASCII碼在BUF內。算法:A*內的數*圍
18、在+32767到-32768之間,先檢查A*符號位,決定輸出+-,假設為負,先求補碼得到原碼后可與正數統一處理。方法:把將被轉換的二進制數先除以10000,商為萬位數,再將余數除以1000,商為千位數,以此類推,求出百十位數,剩下的為個位數。最后各個數加上30H,即為對應字符。4.匯編源程序代碼DATA SEGMENTN=15TOP DB 5 DUP(0AH) DB N DUP( ), Please input a number to choose the arithmetic operation, 0DH,0AH DB N DUP( ), , 0DH,0AH DB N DUP( ),1add
19、 2subtract 3multiply, 0DH,0AH DB N DUP( ),4divide qreturn to DOS, 0DH,0AH DB N DUP( ), , 0DH,0AH DB N DUP( ),Choice (.4.q):$MESG1 DB 0DH,0AH,Please press number: .4.q !$ MESG2 DB 0DH,0AH,Please input the first number :$MESG3 DB 0DH,0AH,Please input the second number :$MESG4 DB 0DH,0AH,Play Add :$MES
20、G5 DB 0DH,0AH,Play Subtract :$MESG6 DB 0DH,0AH,Play Multiply :$MESG7 DB 0DH,0AH,Play Divide :$MESG8 DB 0DH,0AH,The Result :$MESG9 DB 0DH,0AH,PRESS Q RETURN DOC,ANY PRESS RETURN START!$BUF1 DB 6 ; 十進制數的緩沖區,可接收6個字符 DB ; 保存,用于10號調用時DOC填入實際輸入字符數 DB 6 DUP() ; 一個符號位,四位數字ASCII碼,加上一個回車符BUF2 DW ; 將第一個數轉換為二進制
21、后,放于這里BUF3 DB 6 DUP(),$ ; 將結果轉換為ASCII碼后,放在這里DATA ENDSSTACK SEGMENT STACKSTACKCODE SEGMENTASSUME CS:CODE , DS:DATASTART: MOV A*,DATAMOV DS,A* MOV AH,00H ; 設置屏幕顯示方式 MOV AL,2 INT 10H MOV AH,09H ; 顯示菜單 MOV D*,OFFSET TOP INT 21HAA: MOV AH,01H ; 從鍵盤接收一個數字INT 21H CMP AL,1 ; 與1比擬 JNE NE*T1 ; 不等于1就轉到NE*T1 JM
22、P JIA ; 等于1就轉到加法程序NE*T1: CMP AL,2 ; 與2比擬 JNE NE*T2 ; 不等于2就轉到NE*T2 JMP JIAN ; 等于2就轉到減法程序NE*T2: CMP AL,3 ; 與3比擬 JNE NE*T3 ; 不等于3就轉到NE*T3 JMP CHENG ; 等于3就轉到乘法程序NE*T3: CMP AL,4 ; 與4比擬 JNE NE*T4 ; 不等于4就轉到NE*T4 JMP CHU ; 等于4就轉到除法程序NE*T4: CMP AL,q ; 與q比擬 JNE NE*T5 ; 不等于q就轉到NE*T5 MOV AH,4CH ; 回DOS INT 21HNE
23、*T5: MOV AH,09H ; 顯示MESG1MOV D*,OFFSET MESG1INT 21H JMP AA ; 跳到AAA1 PROC NEAR MOV AH,09H ; 提示輸入第一個數 MOV D*,OFFSET MESG2 INT 21H MOV AH,0AH ; 接收第一個數 MOV D*,OFFSET BUF1 INT 21H CALL A2 ; 調用A2進展ASCII-二進制的轉換 MOV BUF2,A* ; 把第一個數轉換的二進制放在BUF2 MOV AH,09H ; 提示輸入第二個數 MOV D*,OFFSET MESG3 INT 21H MOV AH,0AH ; 接
24、收第二個數 MOV D*,OFFSET BUF1 INT 21H CALL A2 ; 調用A2把第二個數進展ASCII-二進制轉換RETA1 ENDPA2 PROC NEAR MOV CL,BUF1+1 ; 把BUF1+1中的實際鍵入的字符數放入CL MOV CH,0 ; CH清零 MOV B*,OFFSET BUF1+2 ; 把第一個數字的地址放在B* PUSH B* ; 保存B*中的值 PUSH C* ; 保存C*中的值L1: MOV AL,B* AND AL,0FH ; 把ASCII碼轉換為十進制 MOV B*,AL ; 存放十進制 INC B* ; 下一個數字的地址 LOOP L1 P
25、OP C* ; 恢復C* POP B* ; 恢復B* MOV A*,0 ; 將累加和賦零 MOV SI,10L2: MUL SIADD AL,B*ADC AH,0INC B* LOOP L2 ; 累加乘10L3: RET A2 ENDPJIA: MOV AH,09H ; 加法程序MOV D*,OFFSET MESG4INT 21H CALL A1 ; 調用A1 ADD A*,BUF2 ; 把轉換后的放在BUF2中的第一個數和放在A* JMP A3 ; 的第二個數相加JIAN: MOV AH,09H ; 減法程序MOV D*,OFFSET MESG5INT 21H CALL A1 MOV B*,
26、A* ; 把轉換后的放在A*的第二個數放到B* MOV A*,BUF2 ; 把轉換后放在BUF2中的第一個數放到A* SBB A*,B* ; 兩數相減 JMP A3CHENG: MOV AH,09H ; 乘法程序MOV D*,OFFSET MESG6INT 21H CALL A1 MOV B*,A* ; 把轉換后的放在A*的第二個數放到B* MOV A*,BUF2 ; 把轉換后的放在BUF2中第一個數放到A* MUL B* ; 兩數相乘 JMP A3CHU: MOV AH,09H ; 除法程序MOV D*,OFFSET MESG7INT 21H CALL A1 MOV D*,A* ; 把轉換后
27、的放在A*的第二個數放到D* MOV A*,BUF2 ; 把轉換后的放在BUF2中第一個數放到A* DIV DL ; 兩數相除,商在AL里 MOV AH,0H ; 使AH清零 JMP A3A3: MOV BUF3,+ ; 把BUF3放+ CMP A*,0 ; 把結果于0比擬 JGE L4 ; A*0轉到 L4 NEG A* ; A*0將A*取反 MOV BUF3,- ; 把BUF3放-L4: CWDMOV B*,10000 DIV B* ; 商為第一位數字放在AL,余數放在D*CALL BB MOV BUF3+1,AL ; 把第一個數放在BUF3+1單元中 MOV A*,D* ; 把放在D*中
28、的余數放到A* CWD MOV B*,1000 DIV B* ; 商為第二位數字放在AL,余數放在D*CALL BB MOV BUF3+2,AL ; 把第二個數放在BUF3+2單元中 MOV A*,D* ; 把放在D*中的余數放到A* MOV BL,100 DIV BL ; 商為第三位數字放在AL,余數放在AHCALL BB MOV BUF3+3,AL ; 把第三個數放在BUF3+3單元中 MOV AL,AH ; 把放在AH 中的余數放到AL CBW MOV BL,10 DIV BL ; 商為第四位數字放在AL,余數放在ACALL BB MOV BUF3+4,AL ; 把第四個數放在BUF3+
29、4單元中 ADD AH,30H ; 把個位轉為ASSCII碼 MOV BUF3+5,AH ; 把第五個數放在BUF3+5單元中 MOV AH,09H ; 提示結果 MOV D*,OFFSET MESG8 INT 21H MOV AH,09H MOV D*,OFFSET BUF3 ; 把放在BUF3緩沖區中的結果顯示出來INT 21H MOV AH,09H ; 提示是返回DOS還是重新計算 MOV D*,OFFSET TOP INT 21H JMP NE*T5 ; 其他數字重新計算BB PROC NEAR CMP AL,0H ; 與零比擬 JE L5 JMP L6L5: MOV AL,20H ;
30、 等于零,賦AL空格JMP L7L6: ADD AL,30H ; 不等于零,把數轉為ASSCII碼L7: RETBB ENDPA4: MOV AH,4CH ; AL等于Q就返回DOSINT 21HCODE ENDSEND START5、調試運行結果5.1 操作說明1按提示輸入1,2,3,4。21:加法 ADD。32:減法 SUB。43:乘法 MUL。54:除法 DIV。輸入一個十進制數,回車。再輸入一個十進制數,回車。顯示計算結果。退出按q。5.2 調試運行結果1進入系統界面,程序運行截圖如圖5.1所示。圖5.1 進入系統界面2加法:算法選擇1,按提示輸入兩個十六進制數,回車后顯示計算式和結果。程序運行截圖如圖5.2所示。圖5.2 加法程序截圖3減法:算法選擇2,按提示輸入兩個十進制數,回車后顯示計算結果,程序運行截圖如圖5.3所示。圖5.3 減法程序截圖4乘法:算法選擇3,按提示輸入兩個十進制數,回車后顯示計算結果。程序運行截圖如圖5.4所示。圖5.4 乘法程序截圖5除法:算法選擇3,按提示出入兩個十進制數,回車后顯示計算結果,程序運行截圖如圖5.5所示。圖5.5 除法程序截圖6退出:按q鍵即可退出程序。程序運行截圖如圖5.6所示。圖5.6 退出運行截圖程序運行后可以看出,程序完成了十進制加減乘除四則運算,按q鍵則退出程序,符合設計要求。同
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《績效管理研討》課件
- 《流行性感冒的護理》課件
- 無人機維護和保養知識試題及答案
- 《績效考核體系》課件
- 《膽結石的治療》課件
- 企業實驗室安全管理體系構建
- 親子半日開放活動策劃與實施
- Crafting a Movie Review 電影評論寫作課件
- 小學一年級美術教學工作總結模版
- 碧桂園爬架培訓
- 2025江蘇省環保集團(籌)招聘92人易考易錯模擬試題(共500題)試卷后附參考答案
- 湖北省武漢市2025屆高三下學期四月調研考試(二模)數學試題 含解析
- 西南大學馬原試題及答案
- 《農村基層干部廉潔履行職責規定》知識培訓
- 超市管理制度獎罰制度
- 推理大模型與知識圖譜在信用債券數智化分析中的應用研究
- 醫院中醫康復科的建設與管理
- 無人機結構課件
- 正反比例知識詳解
- 第7單元 第1課 《自動行駛保出行》 課件【湘科2024版】信息科技 六年級下冊
- SZDBZ 139-2015 建筑電氣防火檢測技術規范
評論
0/150
提交評論