




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、遁城工寺院匯編語言課程設計報告(2011 - 2012年度第2學期)實現(xiàn)加減乘除四則運算的計算器專業(yè) 計算機科學與技術學生姓名 班級 學號 指導教師完成日期目錄目 錄 錯誤! 未定義書簽。1 概 述 錯誤 ! 未定義書簽。設計目的錯誤!未定義書簽。設計內容錯誤!未定義書簽。2 系統(tǒng)需求分析錯誤! 未定義書簽。系統(tǒng)目標錯誤!未定義書簽。主體功能錯誤!未定義書簽。開發(fā)環(huán)境錯誤!未定義書簽。3 系統(tǒng)概要設計錯誤! 未定義書簽。系統(tǒng)的功能模塊劃分錯誤 ! 未定義書簽。系統(tǒng)流程圖錯誤!未定義書簽。4 系統(tǒng)詳細設計錯誤! 未定義書簽。5 測試錯誤! 未定義書簽。測試方案錯誤!未定義書簽。測試結果錯誤!未定
2、義書簽。6 小結錯誤! 未定義書簽。參考文獻錯誤!未定義書簽。附 錄 錯誤! 未定義書簽。附錄 源程序清單錯誤!未定義書簽。實現(xiàn)加減乘除四則運算的計算器1 概 述設計目的本課程設計是在學完教學大綱規(guī)定的全部內容、完成所有實踐環(huán)節(jié)的基礎上,旨在深化學生學習的匯編語言課程基本知識,進一步掌握匯編語言程序設計方法,提高分析問題、解決問題的綜合應用能力。設計內容能實現(xiàn)加、減、乘、除的計算;該程序接受的是16 進制數(shù);執(zhí)行時,需要在文件名后直接跟上計算表達式,如在命令提示符下執(zhí)行結果如下:c:tasmjs 3+252 系統(tǒng)需求分析系統(tǒng)目標本次匯編語言課程設計的最終目的是要實現(xiàn)一個簡單加減乘除四則運算的計
3、算器,要求編寫一個程序,每運行一次可執(zhí)行程序,可以實現(xiàn)數(shù)的加減乘除四則運算。比如, 十進制數(shù)的加減乘除四則運算。我們曾經學習過兩個具體數(shù)字進行加減法運算,但是對于簡單計算器用匯編語言實現(xiàn)難點在于這兩個要做運算的數(shù)是未知的,是由自己調用中斷輸入到屏幕上并要用程序存儲起來的數(shù),然后才能對這兩個數(shù)進行運算,而且做的是加法運算、減法運算乘法運算還是除法運算也未可知,為此我們還要判斷用戶所輸入的運算是四則運算中的哪一個運算。此外,運算過程中的進位或是借位,選擇用什么樣的方式進行輸出,如何實現(xiàn)清屏等也是要解決的問題。主體功能系統(tǒng)分析主要包括設計的功能分析和系統(tǒng)的流程,功能分析放在首位,每一個軟件都要能滿足
4、一定的功能才有使用價值。根據(jù)功能需求來創(chuàng)建應用程序。本設計的功能如下:1、輸入 2 個數(shù),先判斷是加減運算還是乘除運算,再進行計算2、判斷符號是否為運算符3、回車為換行符4、用十進制或十六進制輸出運算結果開發(fā)環(huán)境集成環(huán)境3 系統(tǒng)概要設計系統(tǒng)的功能模塊劃分本題目實現(xiàn)的模塊圖如圖3-1 所示四則運算計算器程序設計十進制轉換設置選擇算法設置界面設置圖3-1概要模塊界面設置主要實現(xiàn)確定界面樣式的功能,以菜單形式顯示。選擇算法設置用于選擇加、減、乘、除法來進行運算。十進制轉換設置應用十進制的轉換算法來處理加、減、乘、除法四則運算系統(tǒng)流程圖輸入選擇鍵是卜六進制加法X=1否是卜六進制減法X=2否卜六進制乘法
5、X=3卜六進制除法X=4,提不出錯!X=0否X=Y/y是束產否( 否圖四則運算計算器執(zhí)行過程流程圖4系統(tǒng)詳細設計界面設置通過定義數(shù)據(jù)段,利用09H顯示出功能列表。通過定義數(shù)據(jù)段,以字符串的形 式輸入每個提示信息,利用09H鍵盤輸入并回顯命令顯示每一個功能提示,是計算 器的功能列表有序清晰的顯示在屏幕上。選擇算法設置首先選擇要進行的四則運算,若選擇 1,則進行加法;若選擇 2,則進行減法;若 選才 3,則進行乘法;若選擇4,則進行除法。加法:先輸入第一個小于 4位十六 進制數(shù)存入SI中,在輸入第二個小于4位十六進制數(shù)存入BX中,然后顯示BX和 SI中的內容相加存在BX中。減法:先輸入第一個小于
6、4位十六進制數(shù)存入SI中, 在輸入第二個小于4位十六進制數(shù)存入BX中,然后顯示BX和SI中的內容相減存 在BX中,然后用NEG來求反,即為第一個數(shù)減去第二個數(shù)的差,顯示 BX的內容 即為差。乘法:先輸入第一個小于 4位十六進制數(shù)存入SI中,在輸入第二個小于4 位十六進制數(shù)存入BX中,把BX的值給AX,然后讓AX乘以SI,然后再分別將DX, AX中的內容賦給BX,接著依次顯示DX, AX的內容,即為積。除法:先輸入第一 個小于4位十六進制數(shù)存入SI中,在輸入第二個小于4位十六進制數(shù)存入BX中, 將SI賦給AX作被除數(shù),讓BX作除數(shù),得到的商存放在 AX中,余數(shù)放在DX中, 然后依次賦給BX,將其
7、依次顯示即為商。十進制轉換設置要完成十進制轉換成十六,一般采用除十六取余法來完成,其大致過程如下: 將待轉換的數(shù)除以16得到第一個商和余數(shù),此第一個余數(shù)就是所求的十六進制數(shù) 的各位,再用第一個商除以16,得到第二個商和余數(shù),此第二個余數(shù)就是所求十六 進制數(shù)的十位,重復這一過程直至商為 0,此時的余數(shù)就是所求十六進制數(shù)的最高 位。在內存中分配一緩沖區(qū),用來存放以上分離出來的使十進制數(shù)的每一位,然后 再逐個轉換成ASCIB,轉換成ASCIIB的過程很簡單,就是給每個十六進制位加上 30H即可,最后送顯示器輸出。5測試測試方案對程序源代碼進行功能調試和功能驗證。程序代碼運行成功后,分別檢驗測試其加、
8、 減、乘、除功能,并對結果進行分析。當用戶選擇 0時,輸入Y或N決定是否退出 程序。測試結果輸入數(shù)字進行加減乘除運算,計算結果如下圖所示:圖計算結果測試結束后,退出程序,如下圖所示:lease input the choose i*c you. sure圖退出程序6小結程序的主要功能是實現(xiàn)四則運算,整個程序中主要分為,輸入算式,加法,減法,乘法,除法和以 十進制顯示結果這幾個部分。本程序基本實現(xiàn)了四則運算的功能,但還沒能實現(xiàn)帶有括號的四則運 算,還有在除法運算中不能運算較大的數(shù),會產生溢出現(xiàn)象。一開始的時候自己編出來的程序有很 多問題,尤其是在循環(huán)程序上,因此查閱了不少資料,也請教了好幾個同學
9、幫著修改,調試了好久 才能正常運行。由于能力有限,程序還是有不完美的地方。這次的綜合實驗讓我對匯編有了更深刻 的認識,對各種指令有了進一步的理解/、 y 、 f f-參考文獻1劉其明.匯編語言程序設計教程. 徐州:中國礦業(yè)大學出版社附錄附錄 源程序清單IN16 MACRO;完成從鍵盤接受二個數(shù)并轉換為十六制數(shù),第一個數(shù)由SI 指向,第二個數(shù)存放在BX中第二個數(shù)LEA DX,PR CALL OUTPUT LEA DX,INPUT1 CALL OUTPUT CALL INPUT LEA SI,RESULT MOV SI,BX LEA DX,PR CALL OUTPUT;DX指向PR換行;DX指向I
10、NPUT1,提示輸入第一個數(shù);把輸入的數(shù)存放在 BX中;SI 指向 RESULT;把第一個十六制數(shù)存入 RESULT勺第一個位置;DX指向PR,換行LEA DX,INPUT2CALL OUTPUTCALL INPUTENDMDATA SEGMENTBUF DB ,0DH,0AH;DX指向INPUT2,提示輸入第一個數(shù);把輸入的數(shù)存放在 BX中;宏結束; 數(shù)據(jù)段DB *WELCOME TO CALCULATOR SYSTEM *,0DH,0AHDB *-1:ADD-2:SUB-3:MUL-4:DIV-0:QUIT*,0DH,0AHDB * 2011*6*2-*,0DH,0AHDB 0DH,0AH
11、,Please input the choose number:,$INPUT1 DB Please input the first number xiao yu 4 wei:,$INPUT2 DB Please input the second number xiao yu 4 wei:,$RESULT DW ,;存放鍵盤輸入的兩個十六制數(shù)WRO DB You input the number is wrong,please input again:,0DH,0AH,$;PR DB 0DH,0AH,$ ;將光標移到下一行起始位置PR1 DB A + B=$PR2 DB A - B=$PR3
12、DB A * B=$PR4 DB A / B=$PR5 DB $PR6 DB Are you sure exit(Y/N)$DATA ENDS;數(shù)據(jù)段落定義結束CODE SEGMENTMAIN PROC FAR ;主函數(shù)MOV AX,DATAMOV DS,AXLEA DX,BUF;DX指向BUF換行CALL OUTPUT;調用顯示字符串函數(shù)換行SUB AX,AX;AX 清零CALL CHOOSE;調用選擇函數(shù)JMP START;跳轉到STARTRETMAIN ENDPINPUT PROC NEAR;定義INPUT函數(shù),就是將從鍵盤輸入的數(shù)按原十六進制數(shù)存放在MOV BX,0 NEWCHAR:
13、MOV AH,1;BX清零INT 21H; 接受鍵盤輸入一個字符CMP AL,0DH;輸入的字符與回車比較ASSUME CS:CODE ,DS:DATASTART:BX中JE EXIT CMP AL,A JAE H0CMP AL,0JAE H1H0:SUB AL,37HJMP ADDTOH1:SUB AL,30H JMP ADDTOADDTO:;是回車就結束;與A比較;大于等于就跳轉到H0;與 0 比較;大于等于就跳轉到H1; 由于41-A=37, 完成把字母字符轉換成對應的十六進制數(shù); 跳轉到ADDTO;把 0 到 9 的字符轉換成對應的十六進制數(shù); 跳轉到ADDTOMOV CL,4SHL
14、BX,CLMOV AH,0ADD BX,AXJMP NEWCHAREXIT: RETINPUT ENDPOUTPUT PROC NEAR MOV AH,09H INT 21H;相當于讓BX乘以16; 將 BX 邏輯左移; 將 AX 清零;AX+BX 送至ij BX;跳轉到NEWCHAR把第二個輸入的字符存放到BX的第二位; 顯示字符串函數(shù)RETOUTPUT ENDPCHOOSE PROC NEAR ;選擇函數(shù)MOV AH,1;從鍵盤接受一個數(shù)INT 21HCMP AL,1;與 1 比較JE YES1;等于1就跳轉到YES1進行加法CMP AL,2;與 1 比較JE YES2;等于2就跳轉到YE
15、S2進行減法CMP AL,3;與 1 比較JE YES3;等于3就跳轉到YES2進行乘法CMP AL,4;與 1 比較JE YES4;等于4就跳轉到YES2進行除法CMP AL,0;與 0 比較JE EXIT1;等于4就跳轉到EXIT1結束程序CALL WRONG;如果不是0 到 4 之間的數(shù)就提示出錯EXIT1: LEA DX,PR;DX指向PR換行CALL OUTPUTLEA DX,PR6;DX指向PR6,確認是否退出CALL OUTPUTMOV AH,1;從鍵盤接受一個數(shù)INT 21HCMP AL,Y;與 丫比較JE EXIT0;不是丫就看是否為yCMP AL,y;與 y 比較JNE S
16、TART;不是y 就跳轉到STARTEXIT0:MOV AH,4CHINT 21HYES1:CALL JIAJMP START YES2:CALL JIAN JMP START YES3:CALL CHENG JMP START;結束本程序;調用JIA函數(shù);調用完之后跳轉到START;調用JIAN函數(shù); 調用完之后跳轉到START;調用CHENG函數(shù);調用完之后跳轉到STARTYES4:CALL CHU;調用CHU 函數(shù)RETCHOOSE ENDP; 選擇函數(shù)結束WRONG PROC NEAR;報錯函數(shù)LEA DX,PR;DX指向PR換行LEA DX,WRO;DX指向WRO,提不輸入有錯,請重
17、新輸入JMP START;跳轉到STARTRETWRONG ENDP;報錯函數(shù)結束JIA PROC NEAR; 加法函數(shù)IN16;調用宏,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由SI 指向,第二個數(shù)存放在BX 中ADD BX,SI; 把第一個數(shù)加第二個數(shù)存放到BX 中LEA DX,PR;DX指向PR,換行CALL OUTPUTLEA DX,PR1;DX 指向 PR1,顯示A + B=CALL OUTPUTCALL OUTBX;調用顯示BX寄存器的內容函數(shù)RETJIA ENDP; 加法結束JIAN PROC NEAR;減法函數(shù)IN16;調用宏,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由SI 指向,
18、第二個數(shù)存放在BX 中SUB BX,SI;第二個數(shù)減第一個數(shù),結果存放到BX中NEG BX;對結果取反后才是A-B 的值 , 才是第一個數(shù)減去第二個數(shù)LEA DX,PR;DX指向PR換行CALL OUTPUTLEA DX,PR2;DX 指向 PR2,顯示A - B=CALL OUTPUTCALL OUTBX;調用顯示BX寄存器的內容RETJIAN ENDP; 加法函數(shù)結束CHENG PROC NEAR; 乘法函數(shù)IN16;調用宏,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由SI 指向,第二個數(shù)存放在BX 中MOV DX,0;把DX清零MOV AX,BX;把第二個數(shù)賦給AXMUL WORD PTRS
19、I;AX乘SI并把結果存放到 DX,AX中,是字的操作MOV BX,AX;將 AX 賦給BXPUSH BX;將BX壓棧,顯不卜面 DX的內容時要將 DX的值賦給 BXPUSH DX;將DX壓棧,因為下面要換行輸出,會改變DX的值LEA DX,PR;DX指向PR,換行輸出CALL OUTPUTLEA DX,PR3;DX 指向 PR3,顯示A * B=CALL OUTPUTPOP DX;將DX出棧,要將做乘法后 DX的內容顯示出來MOV BX,DX;把DX給BXCALL OUTBX;顯示DX的內容POP BX; 將 BX 出棧CALL OUTBX;顯示AX 的內容RETCHENG ENDP; 乘法函數(shù)結束CHU PROC NEAR;除法函數(shù)IN16;調用宏,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)SI 指向,第二個數(shù)存放在BX中MOV AX,SIMOV DX,0DIV BXPUSH DXPUSH AXLEA DX,PRCALL OUTPUTLEA DX,PR4 CAL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公路文明施工合同協(xié)議書
- 2025年高線密度玻璃纖維直接無捻粗紗合作協(xié)議書
- 整改提高階段動員大會上的講話
- 美國低碳融資戰(zhàn)略演進的驅動因素解析
- 2025年木板材加工項目合作計劃書
- 2025年驅油用表面活性劑(磺酸鹽類)合作協(xié)議書
- 2025年家私皮具護理品項目合作計劃書
- 紫巔風的護理
- 兒童骨折護理
- 安全轉運病人的流程
- 違約就業(yè)協(xié)議書
- 《人工智能通識導論(慕課版)》全套教學課件
- 烘培創(chuàng)業(yè)合伙協(xié)議書
- 北京2025年國家大劇院招聘24名專業(yè)技術人員筆試歷年參考題庫附帶答案詳解
- 2024建安杯信息通信建設行業(yè)安全競賽題庫及答案【三份】
- 2025年信息系統(tǒng)管理知識考試試題及答案
- 中介股東合同范例
- 馬法理學試題及答案
- 2025年全國保密教育線上培訓考試試題庫附完整答案(奪冠系列)含答案詳解
- 合伙人協(xié)議書模板
- 2025年下半年揚州現(xiàn)代農業(yè)生態(tài)環(huán)境投資發(fā)展集團公開招聘易考易錯模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論