![表達(dá)式求值程序設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/0a445cdc-5686-4faa-8a37-862381c01355/0a445cdc-5686-4faa-8a37-862381c013551.gif)
![表達(dá)式求值程序設(shè)計(jì)說(shuō)明書(shū)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/0a445cdc-5686-4faa-8a37-862381c01355/0a445cdc-5686-4faa-8a37-862381c013552.gif)
![表達(dá)式求值程序設(shè)計(jì)說(shuō)明書(shū)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/0a445cdc-5686-4faa-8a37-862381c01355/0a445cdc-5686-4faa-8a37-862381c013553.gif)
![表達(dá)式求值程序設(shè)計(jì)說(shuō)明書(shū)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/0a445cdc-5686-4faa-8a37-862381c01355/0a445cdc-5686-4faa-8a37-862381c013554.gif)
![表達(dá)式求值程序設(shè)計(jì)說(shuō)明書(shū)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/10/0a445cdc-5686-4faa-8a37-862381c01355/0a445cdc-5686-4faa-8a37-862381c013555.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、匯編語(yǔ)言實(shí)訓(xùn) 課程設(shè)計(jì)任務(wù)書(shū)題 目: 表達(dá)式求值程序 班 級(jí): 計(jì)算機(jī)科學(xué)與技術(shù)一班 學(xué)生姓名: 趙旭堯 學(xué) 號(hào): 14730141 題目類型: 軟件工程(R) 指導(dǎo)教師: 劉樹(shù)群 一 題目簡(jiǎn)介該設(shè)計(jì)要求學(xué)生使用匯編語(yǔ)言,設(shè)計(jì)并開(kāi)發(fā)出針對(duì)四則運(yùn)算表達(dá)式進(jìn)行求值的命令行或窗口程序。通過(guò)該題目的設(shè)計(jì)過(guò)程,可以培養(yǎng)學(xué)生結(jié)構(gòu)化程序設(shè)計(jì)的思想,加深對(duì)匯編語(yǔ)言基本語(yǔ)言要素和流程結(jié)構(gòu)的理解,針對(duì)匯編語(yǔ)言中的重點(diǎn)和難點(diǎn)內(nèi)容進(jìn)行訓(xùn)練,獨(dú)立完成有一定工作量的程序設(shè)計(jì)任務(wù),同時(shí)強(qiáng)調(diào)好的程序設(shè)計(jì)風(fēng)格。得到軟件工程的綜合訓(xùn)練,提高解決實(shí)際問(wèn)題的能力。二 設(shè)計(jì)任務(wù)1、查閱文獻(xiàn)資料,一般在5篇以上;2、通過(guò)鍵盤輸入表達(dá)式,
2、進(jìn)行針對(duì)整數(shù)的 “加減乘除”四則運(yùn)算表達(dá)式進(jìn)行求值,有良好的界面;3、完成軟件結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì);4、完成系統(tǒng)的軟件開(kāi)發(fā)和測(cè)試工作;5、撰寫(xiě)設(shè)計(jì)說(shuō)明書(shū);6、做好答辯工作。三 主要內(nèi)容、功能及技術(shù)指標(biāo)1、實(shí)現(xiàn)功能及指標(biāo):使用Win32的窗口程序模式,實(shí)現(xiàn)表達(dá)式求值程序及測(cè)試界面程序的設(shè)計(jì)與開(kāi)發(fā);支持整數(shù)的四則運(yùn)算、位運(yùn)算和小括號(hào)等;使用文本框?qū)Ρ磉_(dá)式進(jìn)行交互式編輯和輸出。2、問(wèn)題分析及解決方案框架確定:充分地分析和理解問(wèn)題本身,弄清要求做什么。在確定解決方案框架過(guò)程中,綜合考慮系統(tǒng)功能,考慮怎樣使系統(tǒng)結(jié)構(gòu)清晰、合理、簡(jiǎn)單和易于調(diào)試。最后確定每個(gè)過(guò)程和函數(shù)的簡(jiǎn)單功能,以及過(guò)程(或函數(shù))之間的調(diào)用關(guān)
3、系,并畫(huà)出函數(shù)之間的調(diào)用關(guān)系圖。3、詳細(xì)設(shè)計(jì)和編碼:定義相應(yīng)的存儲(chǔ)結(jié)構(gòu),確定各個(gè)函數(shù)的算法,并畫(huà)出流程圖,在此基礎(chǔ)上進(jìn)行代碼設(shè)計(jì),每個(gè)明確的功能模塊程序一般不超過(guò)200行,否則要進(jìn)一步劃分。4、完成課程設(shè)計(jì)報(bào)告 需求和規(guī)格說(shuō)明:設(shè)計(jì)題目和問(wèn)題描述:題目要解決的問(wèn)題是什么; 設(shè)計(jì)思路:主要算法思想,程序功能圖,函數(shù)之間的調(diào)用關(guān)系圖; 設(shè)計(jì)表示:每個(gè)函數(shù)或過(guò)程的功能,列出每個(gè)過(guò)程或函數(shù)所調(diào)用的過(guò)程或函數(shù),并畫(huà)出各函數(shù)的流程圖; 詳細(xì)設(shè)計(jì):主要算法的偽代碼; 調(diào)試報(bào)告:調(diào)試過(guò)程中遇到的主要問(wèn)題,是如何解決的;對(duì)設(shè)計(jì)和編碼的回顧討論和分析;改進(jìn)設(shè)想;經(jīng)驗(yàn)和體會(huì)等; 程序?qū)崿F(xiàn)注釋; 附錄:源程序清單和結(jié)
4、果。如果題目規(guī)定了測(cè)試數(shù)據(jù),則結(jié)果要求包含這些測(cè)試數(shù)據(jù)和運(yùn)行輸出,當(dāng)然還可以含其他測(cè)試數(shù)據(jù)和運(yùn)行輸出。四 提交的成果1. 設(shè)計(jì)說(shuō)明書(shū)一份,內(nèi)容包括:1) 中文摘要100字;關(guān)鍵詞3-5個(gè);2) 前言;3) 系統(tǒng)分析(包含需要的系統(tǒng)流程圖);4) 系統(tǒng)總體設(shè)計(jì)(包含總體軟件結(jié)構(gòu)圖、總體數(shù)據(jù)結(jié)構(gòu));5) 詳細(xì)設(shè)計(jì);6) 系統(tǒng)測(cè)試(包含測(cè)試方案、測(cè)試用例、測(cè)試結(jié)果及軟件可靠性分析);7) 軟件使用說(shuō)明書(shū)(核心界面說(shuō)明);8) 設(shè)計(jì)總結(jié)、參考文獻(xiàn)、致謝等。2. 刻制光盤一張。五 主要參考文獻(xiàn)1 王爽.匯編語(yǔ)言(第二版).清華大學(xué)出版社, 2008。2 沈美明,溫冬嬋.IBM-PC匯編語(yǔ)言程序設(shè)計(jì)(第二
5、版).清華大學(xué)出版社, 2001。3 美Kip R.Irvine著,溫玉潔,等譯.Intel匯編語(yǔ)言程序設(shè)計(jì)(第五版).電子工業(yè)出版社, 2007。4 錢曉捷.匯編語(yǔ)言程序設(shè)計(jì)(第二版). 電子工業(yè)出版社, 2003。5 羅云彬.Windows環(huán)境下32位匯編語(yǔ)言程序設(shè)計(jì)(第二版).電子工業(yè)出版社, 2006。6 Windows API函數(shù)參考手冊(cè).人民郵電出版社, 2002。六 各階段時(shí)間安排(共1周):日期內(nèi)容地點(diǎn)星期一教師講解設(shè)計(jì)要求,準(zhǔn)備參考資料機(jī)房星期二分析系統(tǒng),方案設(shè)計(jì)機(jī)房星期三方案設(shè)計(jì),編程機(jī)房星期四編程機(jī)房星期五編程,答辯機(jī)房摘要隨著時(shí)代的進(jìn)步,人們不再使用古代的計(jì)算器。取而代
6、之的是現(xiàn)今利用計(jì)算機(jī)編程技術(shù)的產(chǎn)品計(jì)算器,這節(jié)省了人們大量的計(jì)算時(shí)間。通過(guò)電流在晶體管等上面的存儲(chǔ)信息,將人們想要計(jì)算的數(shù)字,通過(guò)重復(fù)的加減乘除運(yùn)算從而計(jì)算實(shí)現(xiàn)出來(lái)。本程序是利用匯編語(yǔ)言的編譯環(huán)境masmplus來(lái)實(shí)現(xiàn)的。程序通過(guò)將讀入的中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式,然后讀取后綴表達(dá)式,輸出結(jié)果。關(guān)鍵字:匯編語(yǔ)言;Masmplus;中綴表達(dá)式;后綴表達(dá)式目錄1 概述11.1課程了解11.2 課程設(shè)計(jì)目的11.3 課程設(shè)計(jì)內(nèi)容11.4系統(tǒng)功能模塊的劃分12 系統(tǒng)需求分析22.1 系統(tǒng)目標(biāo)22.2 主體功能22.3 開(kāi)發(fā)環(huán)境22.4系統(tǒng)功能模塊的分析23系統(tǒng)分析33.1系統(tǒng)總體分析33.2優(yōu)先級(jí)的判
7、斷43.3表達(dá)式的四則運(yùn)算44系統(tǒng)詳細(xì)設(shè)計(jì)54.1在匯編環(huán)境下輸入并保存操作數(shù)54.2保存運(yùn)算符和比較運(yùn)算符的優(yōu)先級(jí)54.3表達(dá)式的四則運(yùn)算84.4算法的清零和回車換行84.5輸出計(jì)算結(jié)果104.6括號(hào)和負(fù)號(hào)的細(xì)節(jié)問(wèn)題125系統(tǒng)測(cè)試145.1加法運(yùn)算145.2減法運(yùn)算145.3乘法運(yùn)算145.4除法運(yùn)算155.5混合運(yùn)算156軟件使用說(shuō)明16設(shè)計(jì)總結(jié)17參考文獻(xiàn)18致謝19附錄201 概述 1.1課程了解表達(dá)式計(jì)算是實(shí)現(xiàn)程序設(shè)計(jì)語(yǔ)言的基本問(wèn)題之一。設(shè)計(jì)一個(gè)程序,演示通過(guò)將數(shù)學(xué)表達(dá)式字符串轉(zhuǎn)化為后綴表達(dá)式,并通過(guò)后綴表達(dá)式結(jié)合棧的應(yīng)用實(shí)現(xiàn)對(duì)算術(shù)表達(dá)式進(jìn)行四則混合運(yùn)算。在計(jì)算機(jī)中,算術(shù)表達(dá)式由常量
8、、變量、運(yùn)算符和括號(hào)組成。由于不同的運(yùn)算符具有不同的優(yōu)先級(jí),又要考慮括號(hào),因此,算術(shù)表達(dá)式的求值不可能嚴(yán)格地從左到右進(jìn)行。在讀入表達(dá)式的字符序列的同時(shí)完成運(yùn)算符和運(yùn)算數(shù)的識(shí)別處理,然后進(jìn)行運(yùn)算數(shù)的數(shù)值轉(zhuǎn)換在進(jìn)行四則運(yùn)算。在運(yùn)算之后輸出正確運(yùn)算結(jié)果。1.2 課程設(shè)計(jì)目的 1要求學(xué)生達(dá)到熟練掌握匯編語(yǔ)言的基本知識(shí)和技能。 2了解并掌握匯編語(yǔ)言的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力。 3提高程序設(shè)計(jì)和調(diào)試能力。學(xué)生通過(guò)上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計(jì)的算法的正確性。學(xué)會(huì)有效利用基本調(diào)試方法,迅速找出程序代碼中的錯(cuò)誤并且修改。 4培養(yǎng)算法分析能力。分析所設(shè)計(jì)算法的時(shí)間復(fù)雜度和空間復(fù)雜度,進(jìn)一步提高程序設(shè)計(jì)水平
9、。5初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能。 1.3 課程設(shè)計(jì)內(nèi)容 程序功能:對(duì)實(shí)數(shù)內(nèi)的加減乘除乘方運(yùn)算能正確的運(yùn)算出結(jié)果,并能正確對(duì)錯(cuò)誤輸入和無(wú)定義的運(yùn)算報(bào)錯(cuò),能連續(xù)測(cè)試多組數(shù)據(jù)。設(shè)計(jì)一個(gè)表達(dá)式求值的程序。該程序必須可以接受包含(,),+,-,*,/,%,和(求冪運(yùn)算符,ab=ab)的中綴表達(dá)式,并求出結(jié)果。如果表達(dá)式正確,則輸出表達(dá)式的結(jié)果;如果表達(dá)式非法,則輸出錯(cuò)誤信息。算法運(yùn)行:將輸入的中綴表達(dá)式改為后綴表達(dá)式,并進(jìn)行運(yùn)算。 算法輸出:輸出后綴表達(dá)式和表達(dá)式運(yùn)算結(jié)果。1.4系統(tǒng)功能模塊的劃分“表達(dá)式求值”包括四個(gè)模塊:保存輸入的操作數(shù)和運(yùn)算符
10、;比較各個(gè)元素的優(yōu)先級(jí)高低;對(duì)算術(shù)表達(dá)式進(jìn)行四則運(yùn)算;輸出所得的結(jié)果。2 系統(tǒng)需求分析 2.1 系統(tǒng)目標(biāo) 設(shè)計(jì)一個(gè)程序,演示用算符優(yōu)先法對(duì)算術(shù)表達(dá)式求值的過(guò)程。利用算符優(yōu)先關(guān)系,實(shí)現(xiàn)對(duì)算術(shù)四則混合運(yùn)算表達(dá)式的求值。其中涉及到對(duì)輸入數(shù)據(jù)和運(yùn)算符號(hào)的保存,比較各個(gè)元素之間優(yōu)先級(jí)高低,算法完成清零和按回車換行按等號(hào)出結(jié)果等問(wèn)題。2.2 主體功能 能夠處理以字符序列的形式輸入的不含變量的實(shí)數(shù)表達(dá)式,正確處理負(fù)數(shù)與小數(shù),判斷表達(dá)式是否語(yǔ)法正確(包含分母不能為零的情況),正確實(shí)現(xiàn)對(duì)算術(shù)四則混合運(yùn)算表達(dá)式的求值,能夠?qū)⒂?jì)算中遇到的問(wèn)題和結(jié)果以文件的形式予以存儲(chǔ)。 2.3 開(kāi)發(fā)環(huán)境 Masmplus2.4系統(tǒng)
11、功能模塊的分析保存輸入的操作數(shù)和運(yùn)算符:只要功能就是把輸入的操作數(shù)字和運(yùn)算符號(hào)保存在程序中,再經(jīng)過(guò)子程序的調(diào)用,從而來(lái)完成算法的計(jì)算;比較各個(gè)元素的優(yōu)先級(jí)高低:在輸入操作數(shù)和運(yùn)算符號(hào)以后,應(yīng)該先比較元素運(yùn)算符號(hào)的優(yōu)先級(jí)高低從而來(lái)決定算法的先后;對(duì)算術(shù)表達(dá)式進(jìn)行四則運(yùn)算:這是計(jì)算模塊的功能,對(duì)已經(jīng)保存好的操作數(shù)和運(yùn)算符號(hào)根據(jù)優(yōu)先級(jí)的高低來(lái)進(jìn)行運(yùn)算;輸出結(jié)果:將最后運(yùn)算所得的結(jié)果輸出。3系統(tǒng)分析開(kāi)始3.1系統(tǒng)總體分析 保存操作數(shù)和運(yùn)算符優(yōu)先級(jí)算法保存輸入的運(yùn)算符保存輸入的數(shù)據(jù)計(jì)算表達(dá)式是否合法輸出表達(dá)是值輸出錯(cuò)誤提示結(jié)束圖3.1系統(tǒng)總體分析流程圖圖3.1講述在算法的開(kāi)始,先保存輸入到程序的操作數(shù)和
12、運(yùn)算符并且比較各個(gè)運(yùn)算符之間的優(yōu)先級(jí)先后,然后才能進(jìn)行計(jì)算。最后,若是輸入的表達(dá)式錯(cuò)誤則會(huì)輸出錯(cuò)誤指令,若是正確將會(huì)輸出此表達(dá)式的計(jì)算結(jié)果。返回“<”判斷優(yōu)先級(jí)3.2優(yōu)先級(jí)的判斷取得元素優(yōu)先級(jí)低取得元素優(yōu)先級(jí)高返回“>”圖3.2判斷優(yōu)先級(jí)模塊流程圖圖3.2是子程序判斷元素優(yōu)先級(jí)的流程圖。若是取得的元素優(yōu)先級(jí)低則返回“<”,若是取得的優(yōu)先級(jí)高,則輸出“>”。3.3表達(dá)式的四則運(yùn)算輸出結(jié)果為x+y輸出結(jié)果x*y 符號(hào)為*符號(hào)為+四則運(yùn)算(x,y)輸出結(jié)果為x/y 符號(hào)為/符號(hào)為-輸出結(jié)果為x-y 圖3.3 四則運(yùn)算模塊流程圖圖3.3是子程序運(yùn)算模板流程圖。先輸入操作數(shù)和運(yùn)算
13、符,最后得到結(jié)果。4系統(tǒng)詳細(xì)設(shè)計(jì) 我們?cè)诰帉?xiě)整體程序代碼的時(shí)候應(yīng)該先行編寫(xiě)各個(gè)子程序模塊,在確定輸入操作數(shù)和運(yùn)算符的存儲(chǔ)和確定優(yōu)先級(jí)的高低才能進(jìn)行一個(gè)算法表達(dá)式的運(yùn)算。4.1在匯編環(huán)境下輸入并保存操作數(shù)DSEG SEGMENTSTR1 DB 0AH,0DH, 'please input the expression:("N"jump out)$'SIGN1 DW 0SIGN2 DW 0SIGN3 DW 0NUMB DW 20H DUP(0)在匯編語(yǔ)言的程序編碼壞境下判斷數(shù)字是否輸入完畢,判斷括號(hào)是否是配對(duì)的并且保存已經(jīng)輸入的數(shù)值。4.2保存運(yùn)算符和比較運(yùn)算符
14、的優(yōu)先級(jí)NUMB DW 20H DUP(0) MARK DB 'A' DB 10H DUP(0) ;ERROR DB 'YOUR INPUT ARE WRONG$'DSEG ENDSDISP MACRO MLEA DX,MMOV AH,9INT 21HENDMCHOICE MACRO ASC1,HAO1,HH CMP AL,ASC1 ;JNE OTHER&HAO1 ;MOV CH,HH ;JMP OTHER7 ;ENDMCSEG SEGMENTSTART:ASSUME CS:CSEG,DS:DSEGCALL CLEARMOV AX,DSEG ;MOV D
15、S,AX ;LEA DI,NUMB ;LEA SI,MARK ;DISP STR1CALL CRdisp errorMOV AX,0MOV DX,0MOV BX,0MOV CX,0STA1 : CALL CRINPUT:MOV AH,01 ;INT 21H ;CMP AL,'N'JE J_SHUCMP AL,'=' JE PD CMP AL,28H ;JB INPUT ;CMP AL,39H ;JA INPUT ;CMP AL,2FH JBE JUD INC WORD PTR SIGN1 SUB AL,30H MOV AH,0 ;XCHG AX,DI ;MOV
16、BX,10 ;MUL BX ;XCHG AX,DI ;ADD DI,AX ;JMP INPUT ;PD:CMP WORD PTR SIGN2,0 JE JUD ;JMP BC ;JUD:CMP WORD PTR SIGN1,0 JNE FUH ;CMP AL,'-'JNE FUH1MOV DX,0MOV DI,DXFUH:ADD DI,2 ;MOV WORD PTR SIGN1,0;FUH1:CALL ADVANCECMP CH,5 JNE PY INC WORD PTR SIGN2MOV WORD PTR SIGN3,1;PY:CMP CH,1 JNE AGAIN ;DEC
17、WORD PTR SIGN2在保存輸入的數(shù)值以后,繼續(xù)保存輸入的運(yùn)算符并且給運(yùn)算符賦權(quán)值,進(jìn)而判斷各個(gè)運(yùn)算符的優(yōu)先級(jí)。將asc碼轉(zhuǎn)換成16進(jìn)制數(shù)并判斷數(shù)值指針。4.3表達(dá)式的四則運(yùn)算JNE NEXT1SUB DI,2 XCHG BX,DISUB DI,2XCHG AX,DIIMUL BXMOV DI,AXADD DI,2JMP FINISHNEXT1:CMP CL,2FH在判斷好優(yōu)先級(jí)以后,在子程序中判斷是什么運(yùn)算符便進(jìn)行相應(yīng)的計(jì)算,以此來(lái)完成對(duì)一個(gè)表達(dá)式進(jìn)行重復(fù)的加減乘除運(yùn)算。4.4算法的清零和回車換行JNE FINISHSUB DI,2XCHG BX,DISUB DI,2SUB DI,BX
18、ADD DI,2FINISH:POP AXRETMATCH ENDPADVANCE PROCCHOICE 28H,1,5 ;(OTHER1: CHOICE 29H,2,1 ;)OTHER2: CHOICE 2AH,3,4 ;*OTHER3: CHOICE 2FH,4,4 ;/OTHER4: CHOICE 2BH,5,3 ;+OTHER5: CHOICE 2DH,6,3 ;-OTHER6: CHOICE 3DH,7,0 ;=OTHER7: RETADVANCE ENDP在程序下運(yùn)算產(chǎn)生結(jié)果之后,要進(jìn)行另外一個(gè)運(yùn)算,需要輸入全新的操作數(shù)和運(yùn)算符,這樣就會(huì)再次對(duì)優(yōu)先級(jí)高低進(jìn)行判斷。這個(gè)時(shí)候我們需要進(jìn)
19、行清零操作。clear proc nearpush axpush bxpush cxpush dxmov ah,06hmov al,01hmov ch,0mov cl,0mov bh,0fHmov dh,18Hmov dl,4FHint 10hmov bh,0mov dx,0MOV AH,02HMOV DL,0INT 10Hpop dxpop cxpop bxpop axretclear endp在此程序中設(shè)定的等號(hào)是得出運(yùn)算結(jié)果。而回車不是得到結(jié)果,回車的功能是換行。4.5輸出計(jì)算結(jié)果CR PROCPUSH AXPUSH DXMOV ah,2MOV dl,0dhINT 21Hmov ah,2
20、MOV dl,0ahINT 21HPOP DXPOP AXRETCR ENDPOVER:SUB DI,2CMP WORD PTRDI,0JGE W1NEG WORD PTRDI MOV DL,'-'MOV AH,2INT 21HW1:MOV BX,10000MOV CX,5MOV SI,0W2:MOV AX,DIMOV DX,0DIV BXMOV DI,DXCMP AL,0JNE W3CMP SI,0JNE W3CMP CX,1JE W3JMP W4W3:MOV DL,ALADD DL,30HMOV AH,2INT 21HMOV SI,1W4:MOV AX,BXMOV DX,0
21、MOV BX,10DIV BXMOV BX,AXLOOP W2CALL CRJ_SHU1:MOV WORD PTRDI+2,0CALL CRLEA DI,NUMB ;LEA SI,MARKJMP STA1J_SHU:MOV AH,4CHINT 21HCSEG ENDSEND START這段程序來(lái)說(shuō)明當(dāng)操作數(shù)和運(yùn)算符在優(yōu)先級(jí)高低確定的情況下計(jì)算出結(jié)果之后,輸出。4.6括號(hào)和負(fù)號(hào)的細(xì)節(jié)問(wèn)題CMP CH,5 JNE PY INC WORD PTR SIGN2 MOV WORD PTR SIGN3,1PY:CMP CH,1 JNE AGAIN DEC WORD PTR SIGN2 在輸入運(yùn)算符-括號(hào)的
22、時(shí)候,我們應(yīng)該現(xiàn)行判斷是左括號(hào)還是右括號(hào),如果判斷得是左括號(hào)則是括號(hào)標(biāo)志位1。若是右括號(hào)則括號(hào)標(biāo)志位減1。5系統(tǒng)測(cè)試5.1加法運(yùn)算 圖5.1 加法運(yùn)算5.2減法運(yùn)算 圖5.2減法運(yùn)算5.3乘法運(yùn)算 圖5.3 乘法運(yùn)算5.4除法運(yùn)算 圖5.4除法運(yùn)算5.5混合運(yùn)算圖5.5混合運(yùn)算6軟件使用說(shuō)明運(yùn)行程序,彈出運(yùn)行結(jié)果。輸入一個(gè)算術(shù)表達(dá)式,由常量、變量、運(yùn)算符和括號(hào)組成(以字符串形式輸入)。規(guī)定操作數(shù)可以為正整數(shù)也可以為負(fù)整數(shù),操作符為“+、-、*、/”,按等號(hào)結(jié)束并輸出結(jié)果。程序運(yùn)行輸出輸出后綴表達(dá)式和表達(dá)式運(yùn)算結(jié)果。設(shè)計(jì)總結(jié)匯編語(yǔ)言是一項(xiàng)實(shí)用性很強(qiáng)的技術(shù),只有進(jìn)行實(shí)際操作,將理論應(yīng)用于實(shí)際中,才
23、能確實(shí)掌握書(shū)中的知識(shí)點(diǎn)。通過(guò)做這次課程設(shè)計(jì),我受益匪淺,讓我對(duì)匯編的知識(shí)有了更深的了解。在這幾天的時(shí)間里,我遇到了很多的問(wèn)題,可以說(shuō)是一個(gè)接一個(gè)的來(lái),這個(gè)解決了,可是又來(lái)了一個(gè)。有時(shí)候我覺(jué)得自己是沒(méi)法再寫(xiě)下去了,但是,有時(shí)候我就是不會(huì)放棄的,有了不明白的地方,就和同學(xué)討論,這讓我更深切的體會(huì)到人與人之間的那種相互協(xié)調(diào)合作的機(jī)制。本次的匯編語(yǔ)言課程設(shè)計(jì)是通過(guò)大量的查閱資料和搜索信息資料來(lái)完成的,在設(shè)計(jì)的過(guò)程使我掌握了許多的電腦基本技能及理解查閱資料的基本方法,同時(shí)經(jīng)過(guò)我的不斷查閱,理解資料,加深了對(duì)匯編語(yǔ)言的理解與認(rèn)識(shí)。在設(shè)計(jì)的整個(gè)過(guò)程中,我體會(huì)到了設(shè)計(jì)的快樂(lè),和小小的成就感。我的課設(shè)利用了很多
24、win32和DOS的調(diào)用,有01H號(hào)的單字符輸入,09H號(hào)的多字符輸出,4CH的過(guò)程終止等,還有其他安逸些相關(guān)指令,在平時(shí)的學(xué)習(xí)中葉學(xué)到過(guò),但是經(jīng)過(guò)此次課設(shè),我對(duì)匯編語(yǔ)言的了解會(huì)更加深刻。當(dāng)然,在短時(shí)間里不可能掌握匯編語(yǔ)言的全部,還需要在以后的學(xué)習(xí)中不斷地實(shí)踐和積累。參考文獻(xiàn)1 王爽.匯編語(yǔ)言(第二版).清華大學(xué)出版社, 2008。2 沈美明,溫冬嬋.IBM-PC匯編語(yǔ)言程序設(shè)計(jì)(第二版).清華大學(xué)出版社, 2001。3 美Kip R.Irvine著,溫玉潔,等譯.Intel匯編語(yǔ)言程序設(shè)計(jì)(第五版).電子工業(yè)出版社, 2007。4 錢曉捷.匯編語(yǔ)言程序設(shè)計(jì)(第二版). 電子工業(yè)出版社, 20
25、03。5 羅云彬.Windows環(huán)境下32位匯編語(yǔ)言程序設(shè)計(jì)(第二版).電子工業(yè)出版社, 2006。6 Windows API函數(shù)參考手冊(cè).人民郵電出版社, 2002。致謝首先,我們要感謝學(xué)校給我們提供了此次課程設(shè)計(jì)的機(jī)會(huì),能讓同學(xué)們?cè)谝黄饘W(xué)習(xí)與研究,讓我們有機(jī)會(huì)對(duì)所學(xué)的理論知識(shí)進(jìn)行實(shí)踐。這次機(jī)會(huì)讓我們熟練的掌握了課堂上所學(xué)的理論知識(shí),并且深度理解了某些代碼所代表的意思。加強(qiáng)了我們的動(dòng)手能力和理解能力。其次,我們還要特別感謝我們的匯編語(yǔ)言老師以及課程設(shè)計(jì)輔導(dǎo)老師劉樹(shù)群,在他的精心輔導(dǎo)和幫助下,我們的設(shè)計(jì)才能得以順利完成。對(duì)他為我們的設(shè)計(jì)所提出的寶貴意見(jiàn)表示衷心的感謝!再者,我還要感謝我的同學(xué)在
26、設(shè)計(jì)完成后對(duì)程序的測(cè)試,沒(méi)有他們,也許就難以發(fā)現(xiàn)一些潛在的細(xì)節(jié)錯(cuò)誤。最后,由衷希望學(xué)校多多開(kāi)展此次類型的課程設(shè)計(jì)。附錄DSEG SEGMENT STR1 DB 0AH,0DH, 'please input the expression:("N"jump out)$' SIGN1 DW 0 ;判斷數(shù)字是否輸入完畢 SIGN2 DW 0 ;判斷括號(hào)是否配對(duì) SIGN3 DW 0 ; NUMB DW 20H DUP(0) ;保存輸入的數(shù)值 MARK DB 'A' ;保存輸入的運(yùn)算符 DB 10H DUP(0) ; ERROR DB 'YOU
27、R INPUT ARE WRONG$'DSEG ENDS DISP MACRO M LEA DX,M MOV AH,9 INT 21HENDMCHOICE MACRO ASC1,HAO1,HH ;宏定義,給運(yùn)算符賦權(quán)值 CMP AL,ASC1 ; JNE OTHER&HAO1 ; MOV CH,HH ; JMP OTHER7 ;ENDMCSEG SEGMENTSTART: ASSUME CS:CSEG,DS:DSEG CALL CLEAR MOV AX,DSEG ; MOV DS,AX ; LEA DI,NUMB ; LEA SI,MARK ; DISP STR1 CALL C
28、R disp error MOV AX,0 MOV DX,0 MOV BX,0 MOV CX,0STA1 : CALL CR INPUT: MOV AH,01 ; INT 21H ; CMP AL,'N' JE J_SHU CMP AL,'=' ; JE PD ;是等號(hào),進(jìn)一步判斷輸入括號(hào)是否配對(duì) CMP AL,28H ; JB INPUT ; CMP AL,39H ; JA INPUT ; CMP AL,2FH ;判斷是數(shù)字還是符號(hào) JBE JUD ;是符號(hào)轉(zhuǎn)入響應(yīng)操作 INC WORD PTR SIGN1 ;將數(shù)字標(biāo)志位加一 SUB AL,30H ;將asc
29、碼轉(zhuǎn)16進(jìn)制 MOV AH,0 ; XCHG AX,DI ; MOV BX,10 ; MUL BX ; XCHG AX,DI ; ADD DI,AX ; JMP INPUT ;PD: CMP WORD PTR SIGN2,0 ;判斷配對(duì)標(biāo)志位 JE JUD ; JMP BC ;JUD: CMP WORD PTR SIGN1,0 ;判斷數(shù)值指針是否已經(jīng)下移一位 JNE FUH ; CMP AL,'-' JNE FUH1 MOV DX,0 MOV DI,DXFUH: ADD DI,2 ; MOV WORD PTR SIGN1,0;FUH1: CALL ADVANCE ;判定優(yōu)先級(jí),
30、 CMP CH,5 ;判斷輸入的是否是左括號(hào) JNE PY ;不是則判斷輸入的是否是右括號(hào) INC WORD PTR SIGN2 ;是左括號(hào),括號(hào)標(biāo)志位1 MOV WORD PTR SIGN3,1;PY: CMP CH,1 ;判斷輸入的是否是右括號(hào) JNE AGAIN ; DEC WORD PTR SIGN2 ;是右括號(hào),括號(hào)標(biāo)志位減1AGAIN: CMP BYTE PTRSI,'A'判斷運(yùn)算符存儲(chǔ)區(qū)是否為空 JE SAVE ; CMP CH,SI ; JA SAVE ; CMP BYTE PTRSI-1,'(' JNE YIDO SUB SI,2 JMP IN
31、PUTYIDO: DEC SI ; MOV CL,SI ; CALL MATCH ;判斷是什么運(yùn)算符并進(jìn)行相應(yīng)的計(jì)算 DEC SI ; JMP AGAIN ;Z_Z: JMP INPUT J_SHU0: JMP J_SHU ;SAVE: CMP CH,0 ; JE OVER ; CMP CH,1 ; JE Z_Z ;“)”不保存,輸入下一個(gè)數(shù) INC SI ; MOV SI,AL ; INC SI ; CMP CH,5 ; JNE GO_ON ; MOV CH,2 ;改變(的權(quán)值GO_ON: MOV SI,CH ; JMP INPUT ;BC: LEA DX,ERROR ; MOV AH,9
32、; INT 21H ; JMP J_SHU ;OVER1: JMP OVER ; MATCH PROC ;子程序,進(jìn)行相應(yīng)的運(yùn)算 PUSH AX ; XOR AX,AX XOR BX,BX CMP CL,2AH ;乘法運(yùn)算 JNE NEXT1 SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI IMUL BX MOV DI,AX ADD DI,2 JMP FINISHNEXT1: CMP CL,2FH ;除法運(yùn)算 JNE NEXT2 SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DICWD IDIV BX MOV DI,AX ADD DI,2 JMP FINISHNEXT2: CMP CL,2BH ;加法運(yùn)算 JNE NEXT3 SUB DI,2 XCHG BX,DI SUB DI,2 ADD DI,BX ADD DI,2 JMP FINISHNEXT3: CMP CL,2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度防火門研發(fā)生產(chǎn)項(xiàng)目合同范本
- 2025年度防盜門企業(yè)社會(huì)責(zé)任與可持續(xù)發(fā)展合作協(xié)議
- 2025年度車輛改裝設(shè)計(jì)與定制合同
- 2025高空作業(yè)車租賃及高空作業(yè)人員資質(zhì)認(rèn)證合同
- 2025年度汽車租賃合同掛靠車輛租賃價(jià)格調(diào)整協(xié)議4篇
- 2025年度一次性網(wǎng)絡(luò)安全服務(wù)合同1(數(shù)據(jù)安全防護(hù))
- 2025年獨(dú)立運(yùn)行風(fēng)力發(fā)電機(jī)組控制器及逆變器項(xiàng)目發(fā)展計(jì)劃
- 優(yōu)化前臺(tái)服務(wù)流程的工作計(jì)劃
- 開(kāi)展公益活動(dòng)的經(jīng)驗(yàn)與總結(jié)計(jì)劃
- 保安工作計(jì)劃收藏業(yè)古董收藏部門
- 小紅書(shū)文旅營(yíng)銷CityWalk城市漫游(通案)
- 寒假生活回顧分享小學(xué)主題班會(huì) 課件
- 湖南省長(zhǎng)沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- 2024-2025學(xué)年上外版高二上學(xué)期期中英語(yǔ)試卷與參考答案
- 《學(xué)習(xí)地圖》課件
- 抓住人工智能科學(xué)機(jī)遇 A new golden age of discovery Seizing the AI for Science opportunity 2024
- 松材線蟲(chóng)調(diào)查培訓(xùn)
- 方志敏《可愛(ài)的中國(guó)》全文閱讀
- 2024年廣西區(qū)公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 《地區(qū)智能電網(wǎng)調(diào)度技術(shù)支持系統(tǒng)應(yīng)用功能規(guī)范》
- 框架借款協(xié)議書(shū)(2篇)
評(píng)論
0/150
提交評(píng)論