



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精品匯編語言課 程 設(shè) 計報 告專業(yè)計算機科學(xué)與技術(shù)學(xué)生姓名張竹青班級Z計算機 151學(xué)號1560704132任課老師王志宏完成日期2017 年12 月29日welcome精品目錄1 概述11.1 設(shè)計目的11.2 設(shè)計內(nèi)容12 系統(tǒng)需求分析12.1 系統(tǒng)目標12.2 主體功能22.3 開發(fā)環(huán)境23 系統(tǒng)概要設(shè)計23.1 系統(tǒng)的功能模塊劃分23.2 系統(tǒng)流程圖44 系統(tǒng)詳細設(shè)計54.1 界面設(shè)置54.2 選擇算法設(shè)置54.3 十進制轉(zhuǎn)換設(shè)置55 測試65.1 測試方案65.2 測試結(jié)果66 小結(jié)7參考文獻9welcome精品實現(xiàn)加減乘除四則運算的計算器1 概述1.1 設(shè)計目的使用匯編語言,通過
2、實現(xiàn)簡單計算器的一般功能,如加、減、乘、除的計算來了解并掌握 DOS 系統(tǒng)功能的調(diào)試方法,學(xué)會畫出編程的具體流程圖,同時在程序設(shè)計過程中熟悉各種指令的應(yīng)用和意義,以及如何進行上機編輯、匯編、連接和調(diào)試。本課程設(shè)計也是對課堂上所學(xué)的基本理論知識和程序設(shè)計方法的鞏固和深化,提高我們的編程思想、分析問題和解決問題的綜合應(yīng)用能力,能夠編寫較復(fù)雜的應(yīng)用程序,最終達到熟練地掌握結(jié)構(gòu)化程序設(shè)計技術(shù)和編寫匯編源程序的基本方法的目的。1.2 設(shè)計內(nèi)容設(shè)計一個能實現(xiàn)加、減、乘、除計算的程序,要求該程序接受從鍵盤輸入的十六進制數(shù),當(dāng)程序執(zhí)行時需在文件名后直接跟上計算表達式,每當(dāng)讀到一個有效的表達式時對表達式進行相應(yīng)
3、的運算后,輸出用十進制數(shù)或十六進制數(shù)表示的運算結(jié)果,如在命令提示符下執(zhí)行結(jié)果如下:c:tasm>js 3+252 系統(tǒng)需求分析2.1 系統(tǒng)目標本次匯編語言課程設(shè)計的最終目的是要實現(xiàn)一個簡單的加減乘除四則運算的計算器,要求編寫一個程序,每運行一次可執(zhí)行程序,可以實現(xiàn)數(shù)的加減乘除四則運算。具體功能如下:( 1)調(diào)用中斷把要做運算的兩個數(shù)輸入到屏幕上并用程序?qū)⑺麄兇鎯ζ饋恚?2)判斷用戶所輸入的運算是四則運算中的哪一種運算( 3)判斷運算過程中是進位還是借位( 4)選擇用何種輸出方式welcome精品( 5)實現(xiàn)清屏2.2 主體功能要求該程序接受的是十六進制數(shù),執(zhí)行相應(yīng)的計算后,計算結(jié)果以十六
4、進制數(shù)或十進制數(shù)輸出。本設(shè)計的使用說明如下:( 1)按照提示選擇數(shù)字 1,2,3,4( 2)1:ADD 加法( 3)2:SUB 減法( 4)3:MUL 乘法( 5)4:DIV 除法( 6)輸入一個小于四位的數(shù)字,回車( 7)再輸入一個小于四位的數(shù)字,回車( 8)顯示結(jié)果( 9)退出按 0,選擇 Y 或 N2.3 開發(fā)環(huán)境TASM5.0 集成環(huán)境3 系統(tǒng)概要設(shè)計3.1 系統(tǒng)的功能模塊劃分本設(shè)計實現(xiàn)的模塊圖如圖3-1 所示圖 3-1概要模塊welcome精品(1) 界面設(shè)置主要實現(xiàn)確定界面樣式的功能,以菜單形式顯示。(2) 選擇算法設(shè)置用于選擇加、減、乘、除法來進行運算。(3) 十進制轉(zhuǎn)換設(shè)置應(yīng)用
5、十進制的轉(zhuǎn)換算法來處理加、減、乘、除法四則運算。welcome精品3.2 系統(tǒng)流程圖開始輸入選擇鍵XX=1?否X=2?否是十六進制加法是十六進制減法是否X=3?否X=4?否X=0?結(jié)束十六進制乘法是十六進制除法是Exit?Y退出程序N圖 3-2 四則運算計算器執(zhí)行過程流程圖welcome精品4 系統(tǒng)詳細設(shè)計4.1 界面設(shè)置通過定義數(shù)據(jù)段,利用 09H 顯示出功能列表。通過定義數(shù)據(jù)段,以字符串的形式輸入每個提示信息,利用 09H 鍵盤輸入并回顯命令顯示每一個功能提示,是計算器的功能列表有序清晰的顯示在屏幕上。4.2 選擇算法設(shè)置首先選擇要進行的四則運算,若選擇1,則進行加法;若選擇2,則進行減法
6、;若選擇 3,則進行乘法;若選擇 4,則進行除法。加法:先輸入第一個小于4 位十六進制數(shù)存入 SI 中,在輸入第二個小于 4 位十六進制數(shù)存入 BX 中,然后顯示 BX 和SI 中的內(nèi)容相加存在 BX 中。減法:先輸入第一個小于 4 位十六進制數(shù)存入 SI 中,在輸入第二個小于 4 位十六進制數(shù)存入 BX 中,然后顯示 BX 和SI 中的內(nèi)容相減存在 BX 中,然后用 NEG 來求反,即為第一個數(shù)減去第二個數(shù)的差,顯示BX 的內(nèi)容即為差。乘法:先輸入第一個小于4 位十六進制數(shù)存入SI 中,在輸入第二個小于 4 位十六進制數(shù)存入 BX 中,把 BX 的值給 AX ,然后讓 AX 乘以 SI ,然
7、后再分別將 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)換設(shè)置要完成十進制轉(zhuǎn)換成十六,一般采用除十六取余法來完成,其大致過程如下:將待轉(zhuǎn)換的數(shù)除以 16 得到第一個商和余數(shù),此第一個余數(shù)就是所求的十六進制數(shù)的各位,再用第一個商除以 16 ,得到第二個商和余數(shù),此第二個余數(shù)就是所求十六進制數(shù)的十位,重復(fù)這一過
8、程直至商為 0,此時的余數(shù)就是所求十六進制數(shù)的最高位。在內(nèi)存中分配一緩沖區(qū),用來存放以上分離出來的使十進制數(shù)的每一位,然后再逐個轉(zhuǎn)換成 ASCII 碼,轉(zhuǎn)換成 ASCII 碼的過程很簡單,就是給每個十六進制位加上 30H 即可,最后送顯示器輸出。welcome精品5 測試5.1 測試方案對程序源代碼進行功能調(diào)試和功能驗證。程序代碼運行成功后,分別檢驗測試其加、減、乘、除功能,并對結(jié)果進行分析。當(dāng)用戶選擇 0 時,輸入 Y 或 N 決定是否退出程序。5.2 測試結(jié)果正確輸出:加、減、乘、除的運算結(jié)果分別如圖 5-1 、圖 5-2 、圖 5-3 、圖 5-4 所示welcome精品圖 5-1加法的
9、運算的結(jié)果截圖圖 5-2減法的運算的結(jié)果截圖圖 5-3乘法的運算的結(jié)果截圖圖 5-4除法的運算的結(jié)果截圖測試結(jié)束后,退出程序,如圖5-5 所示:圖 5-5退出程序6 小結(jié)本次課程設(shè)計是運用匯編語言設(shè)計一個計算器,其主要功能是實現(xiàn)加減乘除四則基本運算,整個程序中主要分為:輸入表達式,加法,減法,乘法,除法和以十六進制輸出結(jié)果這幾個部分。本程序基本實現(xiàn)了四則運算的功能,但是只能單獨進welcome精品行某一種運算,沒有實現(xiàn)混合運算的效果,由于程序會產(chǎn)生溢出現(xiàn)象,所以在除法運算中不能運算較大的數(shù)。在編寫過程中用到了很多基礎(chǔ)知識,但是在程序運行時總會出現(xiàn)一些問題,由于匯編基礎(chǔ)比較薄弱,所以有時會打錯了
10、程序代碼,誤解了知識點,不了解程序結(jié)構(gòu)等,但是通過查閱資料,請教老師并和同學(xué)討論,最終解決了所有問題,也成功的運行出了結(jié)果。通過本次課程設(shè)計,不僅加深了我對匯編程序設(shè)計的認識,也提高了改寫程序代碼和動手操作的能力,還有編程的基本習(xí)慣和開發(fā)系統(tǒng)時應(yīng)注意的流程,同時也對各種指令有了進一步的理解。并且我發(fā)現(xiàn)一個好的匯編程序不僅要正確可行,還要有健壯性,當(dāng)用戶輸入非法的數(shù)據(jù),使運行環(huán)境改變時,程序能恰當(dāng)?shù)刈鞒龇磻?yīng)或進行處理,不會產(chǎn)生莫名奇怪的輸出結(jié)果。因為完成設(shè)計的時間較短,并且對匯編語言知識比較生疏,設(shè)計之中難免有一些錯誤和不妥之處,同時也需要改進,所以真誠的希望尊敬的老師批評指正。welcome精
11、品參考文獻1 曹加恒 .新一代匯編語言課程設(shè)計 M. 北京:高等教育出版社, 20132 楊路明 .匯編語言程序設(shè)計 M. 長沙:中南大學(xué)出版社, 20153 王爽 .匯編語言 M. 北京:清華大學(xué)出版社, 2016welcome精品附錄附錄 源程序清單IN16 MACRO;完成從鍵盤接受二個數(shù)并轉(zhuǎn)換為十六制數(shù),第一個數(shù)由SI 指向,第二個數(shù)存放在 BX 中LEA DX,PR;DX 指向 PR 換行CALL OUTPUT;LEA DX,INPUT1;DX 指向 INPUT1 ,提示輸入第一個數(shù)CALL OUTPUTCALL INPUT;把輸入的數(shù)存放在 BX 中LEA SI,RESULT;SI
12、 指向 RESULTMOV SI,BX;把第一個十六制數(shù)存入RESULT 的第一個位置LEA DX,PR;DX 指向 PR,換行CALL OUTPUTLEA DX,INPUT2;DX 指向 INPUT2 ,提示輸入第一個數(shù)CALL OUTPUTCALL 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-*',0
13、DH,0AHDB '*-2011*6*21-*',0DH,0AHDB 0DH,0AH,'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
14、input the number is wrong,please input again:',0DH,0AH,'$'PRDB 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)$'welcome精品DATA ENDS;數(shù)據(jù)段落定義結(jié)束CODE SEGMEN
15、TMAIN 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)到 STARTRETMAIN ENDPINPUT PROC NEAR;定義 INPUT函數(shù),就是將從鍵盤輸入的數(shù)按原十六進制數(shù)存放在BX 中MOV BX,0;BX 清零NEWCHAR:MOV AH,1INT 21H;接受鍵盤輸入一個字符CMP AL,0DH;輸入的字符與回車比較JE
16、EXIT;是回車就結(jié)束CMP AL,'A'與A比較JAE H0;大于等于就跳轉(zhuǎn)到H0CMP AL,'0'與0比較JAE H1;大于等于就跳轉(zhuǎn)到H1H0:SUB AL,37H;由于 41-A=37,完成把字母字符轉(zhuǎn)換成對應(yīng)的十六進制數(shù)JMP ADDTO;跳轉(zhuǎn)到 ADDTOH1:SUB AL,30H;把 0 到 9 的字符轉(zhuǎn)換成對應(yīng)的十六進制數(shù)JMP ADDTO;跳轉(zhuǎn)到 ADDTOADDTO:MOV CL,4;相當(dāng)于讓 BX 乘以 16SHL BX,CL;將 BX 邏輯左移MOV AH,0;將 AX 清零welcome精品ADD BX,AX;AX+BX送到 BXJM
17、P NEWCHAR;跳轉(zhuǎn)到 NEWCHAR, 把第二個輸入的字符存放到BX 的第二位EXIT: RETINPUTENDPOUTPUT PROC NEAR;顯示字符串函數(shù)MOV AH,09HINT 21HRETOUTPUT ENDPCHOOSE PROC NEAR;選擇函數(shù)MOV AH,1;從鍵盤接受一個數(shù)INT 21HCMP AL,'1'與 1 比較JEYES1;等于 1 就跳轉(zhuǎn)到Y(jié)ES1,進行加法CMP AL,'2'與 1 比較JEYES2;等于 2 就跳轉(zhuǎn)到Y(jié)ES2,進行減法CMP AL,'3'與 1 比較JE YES3;等于 3 就跳轉(zhuǎn)到Y(jié)
18、ES2,進行乘法CMP AL,'4'與 1 比較JE YES4;等于 4 就跳轉(zhuǎn)到Y(jié)ES2,進行除法CMP AL,'0'與 0 比較JE EXIT1;等于 4 就跳轉(zhuǎn)到EXIT1, 結(jié)束程序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'與 Y 比較JE EXIT0;不是 Y 就看是否為yCMP AL,'
19、y'與 y 比較JNE START;不是 y 就跳轉(zhuǎn)到 STARTEXIT0:MOV AH,4CH;結(jié)束本程序welcome精品INT 21HYES1:CALL JIA;調(diào)用 JIA 函數(shù)JMP START;調(diào)用完之后跳轉(zhuǎn)到STARTYES2:CALL JIAN;調(diào)用 JIAN 函數(shù)JMPSTART;調(diào)用完之后跳轉(zhuǎn)到STARTYES3:CALL CHENG;調(diào)用 CHENG 函數(shù)JMP START;調(diào)用完之后跳轉(zhuǎn)到STARTYES4:CALL CHU;調(diào)用 CHU 函數(shù)RETCHOOSE ENDP;選擇函數(shù)結(jié)束WRONG PROC NEAR;報錯函數(shù)LEA DX,PR;DX 指向 PR
20、 換行LEA DX,WRO;DX 指向 WRO ,提示輸入有錯,請重新輸入JMP START;跳轉(zhuǎn)到 STARTRETWRONG ENDP;報錯函數(shù)結(jié)束JIA PROC NEAR;加法函數(shù)IN16;調(diào)用宏 ,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由SI 指向,第二個數(shù)存放在 BX 中ADDBX,SI;把第一個數(shù)加第二個數(shù)存放到BX 中LEADX,PR;DX 指向 PR,換行CALL OUTPUTLEADX,PR1;DX 指向 PR1 ,顯示 A + B=CALL OUTPUTCALL OUTBX;調(diào)用顯示 BX 寄存器的內(nèi)容函數(shù)RETJIA ENDP;加法結(jié)束JIAN PROC NEAR;減法
21、函數(shù)IN16;調(diào)用宏 ,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由SI 指向,第二個數(shù)存放在 BX 中SUB BX,SI;第二個數(shù)減第一個數(shù),結(jié)果存放到 BX 中NEG BX;對結(jié)果取反后才是A-B 的值 ,才是第一個數(shù)減去第二個數(shù)LEA DX,PR;DX 指向 PR,換行CALL OUTPUTwelcome精品LEA DX,PR2;DX 指向 PR2 ,顯示 A - B= CALL OUTPUTCALL OUTBX;調(diào)用顯示 BX 寄存器的內(nèi)容RETJIAN ENDP;加法函數(shù)結(jié)束CHENG PROC NEAR;乘法函數(shù)IN16;調(diào)用宏 ,接受鍵盤輸入的兩個十六進制數(shù),第一個數(shù)由SI 指向,第
22、二個數(shù)存放在 BX 中MOV DX,0;把 DX 清零MOV AX,BX;把第二個數(shù)賦給 AXMUL WORD PTRSI;AX 乘SI 并把結(jié)果存放到 DX,AX 中 ,是字的操作MOV BX,AX;將 AX 賦給 BXPUSH BX;將 BX 壓棧,顯示下面 DX 的內(nèi)容時要將DX 的值賦給 BXPUSH DX;將 DX 壓棧,因為下面要換行輸出,會改變DX 的值LEA DX,PR;DX 指向 PR,換行輸出CALL OUTPUTLEA DX,PR3;DX 指向 PR3 ,顯示 A * B= CALL OUTPUTPOP 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ù)賦給 A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025企業(yè)合作合同之我見范文
- 2025留學(xué)美國簽訂租房合同注意事項
- 誠信經(jīng)營文明經(jīng)商承諾書
- 個人挖機出售合同樣本
- 招商意向協(xié)議書范文
- 二零二五版公章授權(quán)委托書
- 商鋪買賣協(xié)議書范例二零二五年
- 公路路基工程施工合同范例
- 怎么都快樂教學(xué)設(shè)計第一課時
- 二零二五版股權(quán)轉(zhuǎn)讓擔(dān)保合同范例
- 氣壓傳動課件 項目八任務(wù)一 公共汽車門氣壓傳動系統(tǒng)
- DB42-T 2275-2024 消防給水設(shè)施物聯(lián)網(wǎng)系統(tǒng)技術(shù)標準
- 七律長征讀書分享 課件
- 2024年新物業(yè)管理技能及理論知識考試題與答案
- 《工程經(jīng)濟學(xué)》題集
- 《直播運營實務(wù)》 課件 5.3直播間場景搭建
- 2024汽車行業(yè)社媒營銷趨勢【微播易CAA中國廣告協(xié)會】-2024-數(shù)字化
- NB/T 11440-2023生產(chǎn)煤礦儲量估算規(guī)范
- 華為產(chǎn)品戰(zhàn)略規(guī)劃全景訓(xùn)戰(zhàn)兩份資料
- 二手車交易定金合同范本5篇
- 2024年福建省中考化學(xué)試卷附答案
評論
0/150
提交評論