




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、匯編語言課程設計報告( 2011 - 2012 年度第 2 學期)實現(xiàn)加減乘除四則運算的計算器專業(yè)計算機科學與技術(shù)學生姓名班級學號指導教師 完成日期目 錄目 錄21 概 述11.1 設計目的11.2 設計內(nèi)容12 系統(tǒng)需求分析12.1 系統(tǒng)目標12.2 主體功能12.3 開發(fā)環(huán)境13 系統(tǒng)概要設計23.1 系統(tǒng)的功能模塊劃分23.2 系統(tǒng)流程圖34系統(tǒng)詳細設計35 測試45.1 測試方案45.2 測試結(jié)果46 小結(jié)5參考文獻6附 錄7附錄 源程序清單7實現(xiàn)加減乘除四則運算的計算器1 概 述 1.1 設計目的本課程設計是在學完教學大綱規(guī)定的全部內(nèi)容、完成所有實踐環(huán)節(jié)的基礎上,旨在深化學生學習的匯
2、編語言課程基本知識,進一步掌握匯編語言程序設計方法,提高分析問題、解決問題的綜合應用能力。1.2 設計內(nèi)容能實現(xiàn)加、減、乘、除的計算;該程序接受的是16進制數(shù);執(zhí)行時,需要在文件名后直接跟上計算表達式,如在命令提示符下執(zhí)行結(jié)果如下:c:tasmjs 3+25 2 系統(tǒng)需求分析2.1 系統(tǒng)目標本次匯編語言課程設計的最終目的是要實現(xiàn)一個簡單加減乘除四則運算的計算器,要求編寫一個程序,每運行一次可執(zhí)行程序,可以實現(xiàn)數(shù)的加減乘除四則運算。比如,十進制數(shù)的加減乘除四則運算。我們曾經(jīng)學習過兩個具體數(shù)字進行加減法運算,但是對于簡單計算器用匯編語言實現(xiàn)難點在于這兩個要做運算的數(shù)是未知的,是由自己調(diào)用中斷輸入到
3、屏幕上并要用程序存儲起來的數(shù),然后才能對這兩個數(shù)進行運算,而且做的是加法運算、減法運算乘法運算還是除法運算也未可知,為此我們還要判斷用戶所輸入的運算是四則運算中的哪一個運算。此外,運算過程中的進位或是借位,選擇用什么樣的方式進行輸出,如何實現(xiàn)清屏等也是要解決的問題。2.2 主體功能系統(tǒng)分析主要包括設計的功能分析和系統(tǒng)的流程,功能分析放在首位,每一個軟件都要能滿足一定的功能才有使用價值。根據(jù)功能需求來創(chuàng)建應用程序。本設計的功能如下: 1、輸入2個數(shù),先判斷是加減運算還是乘除運算,再進行計算 2、判斷符號是否為運算符 3、回車為換行符 4、用十進制或十六進制輸出運算結(jié)果2.3 開發(fā)環(huán)境tasm5.
4、0集成環(huán)境3 系統(tǒng)概要設計3.1 系統(tǒng)的功能模塊劃分本題目實現(xiàn)的模塊圖如圖3-1所示四則運算計算器程序設計界面設置選擇算法設置十進制轉(zhuǎn)換設置圖3-1 概要模塊(1) 界面設置 主要實現(xiàn)確定界面樣式的功能,以菜單形式顯示。(2) 選擇算法設置 用于選擇加、減、乘、除法來進行運算。(3) 十進制轉(zhuǎn)換設置 應用十進制的轉(zhuǎn)換算法來處理加、減、乘、除法四則運算。3.2 系統(tǒng)流程圖輸入選擇鍵xx=1?x=2?x=3?x=4?十六進制加法十六進制減法十六進制乘法十六進制除法提示出錯!x=0??是是是否是否否否否x=y/y ??否是是開 始結(jié) 束圖3.2.1四則運算計算器執(zhí)行過程流程圖4系統(tǒng)詳細設計4.1 界
5、面設置 通過定義數(shù)據(jù)段,利用09h顯示出功能列表。通過定義數(shù)據(jù)段,以字符串的形式輸入每個提示信息,利用09h鍵盤輸入并回顯命令顯示每一個功能提示,是計算器的功能列表有序清晰的顯示在屏幕上。4.2 選擇算法設置首先選擇要進行的四則運算,若選擇1,則進行加法;若選擇2,則進行減法;若選擇3,則進行乘法;若選擇4,則進行除法。加法:先輸入第一個小于4位十六進制數(shù)存入si中,在輸入第二個小于4位十六進制數(shù)存入bx中,然后顯示bx 和si中的內(nèi)容相加存在bx中。減法:先輸入第一個小于4位十六進制數(shù)存入si中,在輸入第二個小于4位十六進制數(shù)存入bx中,然后顯示bx 和si中的內(nèi)容相減存在bx中,然后用ne
6、g來求反,即為第一個數(shù)減去第二個數(shù)的差,顯示bx的內(nèi)容即為差。乘法:先輸入第一個小于4位十六進制數(shù)存入si中,在輸入第二個小于4位十六進制數(shù)存入bx中,把bx的值給ax,然后讓ax乘以si,然后再分別將dx,ax中的內(nèi)容賦給bx,接著依次顯示dx,ax的內(nèi)容,即為積。除法:先輸入第一個小于4位十六進制數(shù)存入si中,在輸入第二個小于4位十六進制數(shù)存入bx中,將si賦給ax作被除數(shù),讓bx作除數(shù),得到的商存放在ax中,余數(shù)放在dx中,然后依次賦給bx,將其依次顯示即為商。4.3 十進制轉(zhuǎn)換設置 要完成十進制轉(zhuǎn)換成十六,一般采用除十六取余法來完成,其大致過程如下:將待轉(zhuǎn)換的數(shù)除以16得到第一個商和余
7、數(shù),此第一個余數(shù)就是所求的十六進制數(shù)的各位,再用第一個商除以16,得到第二個商和余數(shù),此第二個余數(shù)就是所求十六進制數(shù)的十位,重復這一過程直至商為0,此時的余數(shù)就是所求十六進制數(shù)的最高位。在內(nèi)存中分配一緩沖區(qū),用來存放以上分離出來的使十進制數(shù)的每一位,然后再逐個轉(zhuǎn)換成ascii碼,轉(zhuǎn)換成ascii碼的過程很簡單,就是給每個十六進制位加上30h即可,最后送顯示器輸出。5 測試5.1 測試方案對程序源代碼進行功能調(diào)試和功能驗證。程序代碼運行成功后,分別檢驗測試其加、減、乘、除功能,并對結(jié)果進行分析。當用戶選擇0時,輸入y或n決定是否退出程序。5.2 測試結(jié)果輸入數(shù)字進行加減乘除運算,計算結(jié)果如下圖所
8、示:圖5.2.1 計算結(jié)果測試結(jié)束后,退出程序,如下圖所示:圖5.2.2 退出程序6 小結(jié)程序的主要功能是實現(xiàn)四則運算,整個程序中主要分為,輸入算式,加法,減法,乘法,除法和以十進制顯示結(jié)果這幾個部分。本程序基本實現(xiàn)了四則運算的功能,但還沒能實現(xiàn)帶有括號的四則運算,還有在除法運算中不能運算較大的數(shù),會產(chǎn)生溢出現(xiàn)象。一開始的時候自己編出來的程序有很多問題,尤其是在循環(huán)程序上,因此查閱了不少資料,也請教了好幾個同學幫著修改,調(diào)試了好久才能正常運行。由于能力有限,程序還是有不完美的地方。這次的綜合實驗讓我對匯編有了更深刻的認識,對各種指令有了進一步的理解。參考文獻1劉其明.匯編語言程序設計教程. 徐
9、州:中國礦業(yè)大學出版社, 2010.11附 錄附錄 源程序清單in16 macro ;完成從鍵盤接受二個數(shù)并轉(zhuǎn)換為十六制數(shù),第一個數(shù)由si指向,第二個數(shù)存放在bx中 lea dx,pr ;dx指向pr換行call output ;lea dx,input1 ;dx指向input1,提示輸入第一個數(shù)call output call input ;把輸入的數(shù)存放在bx中l(wèi)ea si,result ;si指向resultmov si,bx ;把第一個十六制數(shù)存入result的第一個位置lea dx,pr ;dx指向pr,換行call output lea dx,input2 ;dx指向input2,
10、提示輸入第一個數(shù)call output call input ;把輸入的數(shù)存放在bx中endm ;宏結(jié)束data segment ;數(shù)據(jù)段buf db ,0dh,0ahdb *- welcome to calculator system -*,0dh,0ahdb *-1:add-2:sub-3:mul-4:div-0:quit-*,0dh,0ahdb *- 2011*6*21-*,0dh,0ahdb 0dh,0ah,please input the choose number:,$ input1 db please input the first number xiao yu 4 wei:,$
11、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 db a * b=$pr4 db a / b=$pr5 db .$pr6 db are you sure exit?(y/n)$ data ends ;數(shù)據(jù)段落定義結(jié)束co
12、de segmentmain proc far ;主函數(shù)assume cs:code ,ds:datastart:mov ax,datamov ds,axlea dx,buf ;dx指向buf換行call output ;調(diào)用顯示字符串函數(shù)換行sub ax,ax ;ax清零call choose ;調(diào)用選擇函數(shù)jmp start ;跳轉(zhuǎn)到startret main endpinput proc near ;定義input函數(shù),就是將從鍵盤輸入的數(shù)按原十六進制數(shù)存放在bx中mov bx,0 ;bx清零newchar:mov ah,1 int 21h ;接受鍵盤輸入一個字符cmp al,0dh ;
13、輸入的字符與回車比較je exit ;是回車就結(jié)束 cmp al,a ;與a比較jae h0 ;大于等于就跳轉(zhuǎn)到h0 cmp al,0 ;與0比較jae h1 ;大于等于就跳轉(zhuǎn)到h1 h0:sub al,37h ;由于41-a=37,完成把字母字符轉(zhuǎn)換成對應的十六進制數(shù)jmp addto ;跳轉(zhuǎn)到addtoh1:sub al,30h ;把0到9的字符轉(zhuǎn)換成對應的十六進制數(shù)jmp addto ;跳轉(zhuǎn)到addto addto: mov cl,4 ;相當于讓bx乘以16shl bx,cl ;將bx邏輯左移mov ah,0 ;將ax清零add bx,ax ;ax+bx送到bxjmp newchar ;
14、跳轉(zhuǎn)到newchar,把第二個輸入的字符存放到bx的第二位exit: retinput endpoutput proc near ;顯示字符串函數(shù)mov ah,09hint 21hretoutput endpchoose proc near ;選擇函數(shù)mov ah,1 ;從鍵盤接受一個數(shù)int 21hcmp al,1 ;與1比較je yes1 ;等于1就跳轉(zhuǎn)到y(tǒng)es1,進行加法cmp al,2 ;與1比較je yes2 ;等于2就跳轉(zhuǎn)到y(tǒng)es2,進行減法cmp al,3 ;與1比較 je yes3 ;等于3就跳轉(zhuǎn)到y(tǒng)es2,進行乘法cmp al,4 ;與1比較je yes4 ;等于4就跳轉(zhuǎn)到y(tǒng)
15、es2,進行除法cmp al,0 ;與0比較je exit1 ;等于4就跳轉(zhuǎn)到exit1,結(jié)束程序call wrong ;如果不是0到4之間的數(shù)就提示出錯exit1: lea dx,pr ;dx指向pr換行call output lea dx,pr6 ;dx指向pr6,確認是否退出call output mov ah,1 ;從鍵盤接受一個數(shù)int 21hcmp al,y ;與y比較je exit0 ;不是y就看是否為ycmp al,y ;與y比較jne start ;不是y就跳轉(zhuǎn)到startexit0:mov ah,4ch ;結(jié)束本程序int 21hyes1:call jia ;調(diào)用jia函數(shù)
16、jmp start ;調(diào)用完之后跳轉(zhuǎn)到startyes2:call jian ;調(diào)用jian函數(shù)jmp start ;調(diào)用完之后跳轉(zhuǎn)到startyes3:call cheng ;調(diào)用cheng函數(shù)jmp start ;調(diào)用完之后跳轉(zhuǎn)到startyes4:call chu ;調(diào)用chu函數(shù)ret choose endp ;選擇函數(shù)結(jié)束wrong proc near ;報錯函數(shù)lea dx,pr ;dx指向pr換行l(wèi)ea dx,wro ;dx指向wro,提示輸入有錯,請重新輸入jmp start ;跳轉(zhuǎn)到startret wrong endp ;報錯函數(shù)結(jié)束jia proc near ;加法函數(shù)i
17、n16 ;調(diào)用宏,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由si指向,第二個數(shù)存放在bx中 add bx,si ;把第一個數(shù)加第二個數(shù)存放到bx中l(wèi)ea dx,pr ;dx指向pr,換行call output lea dx,pr1 ;dx指向pr1,顯示a + b=call output call outbx ;調(diào)用顯示bx寄存器的內(nèi)容函數(shù)retjia endp ;加法結(jié)束jian proc near ;減法函數(shù)in16 ;調(diào)用宏,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由si指向,第二個數(shù)存放在bx中 sub bx,si ;第二個數(shù)減第一個數(shù),結(jié)果存放到bx中neg bx ;對結(jié)果取反后才是a-
18、b的值,才是第一個數(shù)減去第二個數(shù)lea dx,pr ;dx指向pr,換行call output lea dx,pr2 ;dx指向pr2,顯示a - b=call output call outbx ;調(diào)用顯示bx寄存器的內(nèi)容retjian endp ;加法函數(shù)結(jié)束cheng proc near ;乘法函數(shù)in16 ;調(diào)用宏,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由si指向,第二個數(shù)存放在bx中 mov dx,0 ;把dx清零mov ax,bx ;把第二個數(shù)賦給ax mul word ptrsi ;ax乘si并把結(jié)果存放到dx,ax中,是字的操作mov bx,ax ;將ax賦給bxpush bx
19、 ;將bx壓棧,顯示下面dx的內(nèi)容時要將dx的值賦給bxpush dx ;將dx壓棧,因為下面要換行輸出,會改變dx的值lea dx,pr ;dx指向pr,換行輸出call output lea dx,pr3 ;dx指向pr3,顯示a * b=call output pop dx ;將dx出棧,要將做乘法后dx的內(nèi)容顯示出來mov bx,dx ;把dx給bxcall outbx ;顯示dx的內(nèi)容pop bx ;將bx出棧call outbx ;顯示ax的內(nèi)容retcheng endp ;乘法函數(shù)結(jié)束chu proc near ;除法函數(shù)in16 ;調(diào)用宏,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)si指向,第二個數(shù)存放在bx中mov ax,si ;將第一個數(shù)賦給axmov dx,0 ;將dx清零div bx ;ax除bx,結(jié)果存放到dx,ax,dx存放余數(shù),ax存放商push dx ;壓棧
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年美術(shù)活動春雨標準教案反思
- 提升教學質(zhì)量的年度目標計劃
- 《貴州眾一金彩黔礦業(yè)有限公司織金縣官寨鄉(xiāng)明源煤礦(變更)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》評審意見
- 渠道管理-渠道中的行為
- 2025年駐馬店貨運資格證考題
- 2025年黃石貨運從業(yè)資格證考試模擬考試題庫
- 2025年阿克蘇b2貨運上崗證模擬考試
- 2025年盤錦貨運資格證模擬考試卷
- 2025年安徽貨運從業(yè)考試試題及答案大全
- 美食產(chǎn)品知識培訓課件
- 2025年黃河水利職業(yè)技術(shù)學院單招職業(yè)技能測試題庫新版
- 2025年健康咨詢管理服務合同范文
- 歷史-貴州省貴陽市2025年高三年級適應性考試(一)(貴陽一模)試題和答案
- 2025中國國際工程咨詢限公司總部社會招聘20人易考易錯模擬試題(共500題)試卷后附參考答案
- 江西省高職單招《職測》備考試題集及答案(含歷年真題)
- 河北省醫(yī)學院校高職單招職業(yè)技能測試必會題集及答案(含真題)
- 大學生維護國家安全
- 旅游規(guī)劃與開發(fā) 課件 第四章 旅游地形象策劃與功能分區(qū)
- 2025年北京社會管理職業(yè)學院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 2024年江蘇食品藥品職業(yè)技術(shù)學院高職單招語文歷年參考題庫含答案解析
- 政治學原理(第三版)課件匯 景躍進 第1-8章 政治的性質(zhì)與核心問題 -意識形態(tài):性質(zhì)與功能
評論
0/150
提交評論