表達式求值程序設(shè)計說明書_第1頁
表達式求值程序設(shè)計說明書_第2頁
表達式求值程序設(shè)計說明書_第3頁
表達式求值程序設(shè)計說明書_第4頁
表達式求值程序設(shè)計說明書_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、匯編語言實訓(xùn) 課程設(shè)計任務(wù)書題 目: 表達式求值程序 班 級: 計算機科學(xué)與技術(shù)一班 學(xué)生姓名: 趙旭堯 學(xué) 號: 14730141 題目類型: 軟件工程(R) 指導(dǎo)教師: 劉樹群 一 題目簡介該設(shè)計要求學(xué)生使用匯編語言,設(shè)計并開發(fā)出針對四則運算表達式進行求值的命令行或窗口程序。通過該題目的設(shè)計過程,可以培養(yǎng)學(xué)生結(jié)構(gòu)化程序設(shè)計的思想,加深對匯編語言基本語言要素和流程結(jié)構(gòu)的理解,針對匯編語言中的重點和難點內(nèi)容進行訓(xùn)練,獨立完成有一定工作量的程序設(shè)計任務(wù),同時強調(diào)好的程序設(shè)計風格。得到軟件工程的綜合訓(xùn)練,提高解決實際問題的能力。二 設(shè)計任務(wù)1、查閱文獻資料,一般在5篇以上;2、通過鍵盤輸入表達式,

2、進行針對整數(shù)的 “加減乘除”四則運算表達式進行求值,有良好的界面;3、完成軟件結(jié)構(gòu)設(shè)計和算法設(shè)計;4、完成系統(tǒng)的軟件開發(fā)和測試工作;5、撰寫設(shè)計說明書;6、做好答辯工作。三 主要內(nèi)容、功能及技術(shù)指標1、實現(xiàn)功能及指標:使用Win32的窗口程序模式,實現(xiàn)表達式求值程序及測試界面程序的設(shè)計與開發(fā);支持整數(shù)的四則運算、位運算和小括號等;使用文本框?qū)Ρ磉_式進行交互式編輯和輸出。2、問題分析及解決方案框架確定:充分地分析和理解問題本身,弄清要求做什么。在確定解決方案框架過程中,綜合考慮系統(tǒng)功能,考慮怎樣使系統(tǒng)結(jié)構(gòu)清晰、合理、簡單和易于調(diào)試。最后確定每個過程和函數(shù)的簡單功能,以及過程(或函數(shù))之間的調(diào)用關(guān)

3、系,并畫出函數(shù)之間的調(diào)用關(guān)系圖。3、詳細設(shè)計和編碼:定義相應(yīng)的存儲結(jié)構(gòu),確定各個函數(shù)的算法,并畫出流程圖,在此基礎(chǔ)上進行代碼設(shè)計,每個明確的功能模塊程序一般不超過200行,否則要進一步劃分。4、完成課程設(shè)計報告 需求和規(guī)格說明:設(shè)計題目和問題描述:題目要解決的問題是什么; 設(shè)計思路:主要算法思想,程序功能圖,函數(shù)之間的調(diào)用關(guān)系圖; 設(shè)計表示:每個函數(shù)或過程的功能,列出每個過程或函數(shù)所調(diào)用的過程或函數(shù),并畫出各函數(shù)的流程圖; 詳細設(shè)計:主要算法的偽代碼; 調(diào)試報告:調(diào)試過程中遇到的主要問題,是如何解決的;對設(shè)計和編碼的回顧討論和分析;改進設(shè)想;經(jīng)驗和體會等; 程序?qū)崿F(xiàn)注釋; 附錄:源程序清單和結(jié)

4、果。如果題目規(guī)定了測試數(shù)據(jù),則結(jié)果要求包含這些測試數(shù)據(jù)和運行輸出,當然還可以含其他測試數(shù)據(jù)和運行輸出。四 提交的成果1. 設(shè)計說明書一份,內(nèi)容包括:1) 中文摘要100字;關(guān)鍵詞3-5個;2) 前言;3) 系統(tǒng)分析(包含需要的系統(tǒng)流程圖);4) 系統(tǒng)總體設(shè)計(包含總體軟件結(jié)構(gòu)圖、總體數(shù)據(jù)結(jié)構(gòu));5) 詳細設(shè)計;6) 系統(tǒng)測試(包含測試方案、測試用例、測試結(jié)果及軟件可靠性分析);7) 軟件使用說明書(核心界面說明);8) 設(shè)計總結(jié)、參考文獻、致謝等。2. 刻制光盤一張。五 主要參考文獻1 王爽.匯編語言(第二版).清華大學(xué)出版社, 2008。2 沈美明,溫冬嬋.IBM-PC匯編語言程序設(shè)計(第二

5、版).清華大學(xué)出版社, 2001。3 美Kip R.Irvine著,溫玉潔,等譯.Intel匯編語言程序設(shè)計(第五版).電子工業(yè)出版社, 2007。4 錢曉捷.匯編語言程序設(shè)計(第二版). 電子工業(yè)出版社, 2003。5 羅云彬.Windows環(huán)境下32位匯編語言程序設(shè)計(第二版).電子工業(yè)出版社, 2006。6 Windows API函數(shù)參考手冊.人民郵電出版社, 2002。六 各階段時間安排(共1周):日期內(nèi)容地點星期一教師講解設(shè)計要求,準備參考資料機房星期二分析系統(tǒng),方案設(shè)計機房星期三方案設(shè)計,編程機房星期四編程機房星期五編程,答辯機房摘要隨著時代的進步,人們不再使用古代的計算器。取而代

6、之的是現(xiàn)今利用計算機編程技術(shù)的產(chǎn)品計算器,這節(jié)省了人們大量的計算時間。通過電流在晶體管等上面的存儲信息,將人們想要計算的數(shù)字,通過重復(fù)的加減乘除運算從而計算實現(xiàn)出來。本程序是利用匯編語言的編譯環(huán)境masmplus來實現(xiàn)的。程序通過將讀入的中綴表達式轉(zhuǎn)換為后綴表達式,然后讀取后綴表達式,輸出結(jié)果。關(guān)鍵字:匯編語言;Masmplus;中綴表達式;后綴表達式目錄1 概述11.1課程了解11.2 課程設(shè)計目的11.3 課程設(shè)計內(nèi)容11.4系統(tǒng)功能模塊的劃分12 系統(tǒng)需求分析22.1 系統(tǒng)目標22.2 主體功能22.3 開發(fā)環(huán)境22.4系統(tǒng)功能模塊的分析23系統(tǒng)分析33.1系統(tǒng)總體分析33.2優(yōu)先級的判

7、斷43.3表達式的四則運算44系統(tǒng)詳細設(shè)計54.1在匯編環(huán)境下輸入并保存操作數(shù)54.2保存運算符和比較運算符的優(yōu)先級54.3表達式的四則運算84.4算法的清零和回車換行84.5輸出計算結(jié)果104.6括號和負號的細節(jié)問題125系統(tǒng)測試145.1加法運算145.2減法運算145.3乘法運算145.4除法運算155.5混合運算156軟件使用說明16設(shè)計總結(jié)17參考文獻18致謝19附錄201 概述 1.1課程了解表達式計算是實現(xiàn)程序設(shè)計語言的基本問題之一。設(shè)計一個程序,演示通過將數(shù)學(xué)表達式字符串轉(zhuǎn)化為后綴表達式,并通過后綴表達式結(jié)合棧的應(yīng)用實現(xiàn)對算術(shù)表達式進行四則混合運算。在計算機中,算術(shù)表達式由常量

8、、變量、運算符和括號組成。由于不同的運算符具有不同的優(yōu)先級,又要考慮括號,因此,算術(shù)表達式的求值不可能嚴格地從左到右進行。在讀入表達式的字符序列的同時完成運算符和運算數(shù)的識別處理,然后進行運算數(shù)的數(shù)值轉(zhuǎn)換在進行四則運算。在運算之后輸出正確運算結(jié)果。1.2 課程設(shè)計目的 1要求學(xué)生達到熟練掌握匯編語言的基本知識和技能。 2了解并掌握匯編語言的設(shè)計方法,具備初步的獨立分析和設(shè)計能力。 3提高程序設(shè)計和調(diào)試能力。學(xué)生通過上機實習(xí),驗證自己設(shè)計的算法的正確性。學(xué)會有效利用基本調(diào)試方法,迅速找出程序代碼中的錯誤并且修改。 4培養(yǎng)算法分析能力。分析所設(shè)計算法的時間復(fù)雜度和空間復(fù)雜度,進一步提高程序設(shè)計水平

9、。5初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等基本方法和技能。 1.3 課程設(shè)計內(nèi)容 程序功能:對實數(shù)內(nèi)的加減乘除乘方運算能正確的運算出結(jié)果,并能正確對錯誤輸入和無定義的運算報錯,能連續(xù)測試多組數(shù)據(jù)。設(shè)計一個表達式求值的程序。該程序必須可以接受包含(,),+,-,*,/,%,和(求冪運算符,ab=ab)的中綴表達式,并求出結(jié)果。如果表達式正確,則輸出表達式的結(jié)果;如果表達式非法,則輸出錯誤信息。算法運行:將輸入的中綴表達式改為后綴表達式,并進行運算。 算法輸出:輸出后綴表達式和表達式運算結(jié)果。1.4系統(tǒng)功能模塊的劃分“表達式求值”包括四個模塊:保存輸入的操作數(shù)和運算符

10、;比較各個元素的優(yōu)先級高低;對算術(shù)表達式進行四則運算;輸出所得的結(jié)果。2 系統(tǒng)需求分析 2.1 系統(tǒng)目標 設(shè)計一個程序,演示用算符優(yōu)先法對算術(shù)表達式求值的過程。利用算符優(yōu)先關(guān)系,實現(xiàn)對算術(shù)四則混合運算表達式的求值。其中涉及到對輸入數(shù)據(jù)和運算符號的保存,比較各個元素之間優(yōu)先級高低,算法完成清零和按回車換行按等號出結(jié)果等問題。2.2 主體功能 能夠處理以字符序列的形式輸入的不含變量的實數(shù)表達式,正確處理負數(shù)與小數(shù),判斷表達式是否語法正確(包含分母不能為零的情況),正確實現(xiàn)對算術(shù)四則混合運算表達式的求值,能夠?qū)⒂嬎阒杏龅降膯栴}和結(jié)果以文件的形式予以存儲。 2.3 開發(fā)環(huán)境 Masmplus2.4系統(tǒng)

11、功能模塊的分析保存輸入的操作數(shù)和運算符:只要功能就是把輸入的操作數(shù)字和運算符號保存在程序中,再經(jīng)過子程序的調(diào)用,從而來完成算法的計算;比較各個元素的優(yōu)先級高低:在輸入操作數(shù)和運算符號以后,應(yīng)該先比較元素運算符號的優(yōu)先級高低從而來決定算法的先后;對算術(shù)表達式進行四則運算:這是計算模塊的功能,對已經(jīng)保存好的操作數(shù)和運算符號根據(jù)優(yōu)先級的高低來進行運算;輸出結(jié)果:將最后運算所得的結(jié)果輸出。3系統(tǒng)分析開始3.1系統(tǒng)總體分析 保存操作數(shù)和運算符優(yōu)先級算法保存輸入的運算符保存輸入的數(shù)據(jù)計算表達式是否合法輸出表達是值輸出錯誤提示結(jié)束圖3.1系統(tǒng)總體分析流程圖圖3.1講述在算法的開始,先保存輸入到程序的操作數(shù)和

12、運算符并且比較各個運算符之間的優(yōu)先級先后,然后才能進行計算。最后,若是輸入的表達式錯誤則會輸出錯誤指令,若是正確將會輸出此表達式的計算結(jié)果。返回“<”判斷優(yōu)先級3.2優(yōu)先級的判斷取得元素優(yōu)先級低取得元素優(yōu)先級高返回“>”圖3.2判斷優(yōu)先級模塊流程圖圖3.2是子程序判斷元素優(yōu)先級的流程圖。若是取得的元素優(yōu)先級低則返回“<”,若是取得的優(yōu)先級高,則輸出“>”。3.3表達式的四則運算輸出結(jié)果為x+y輸出結(jié)果x*y 符號為*符號為+四則運算(x,y)輸出結(jié)果為x/y 符號為/符號為-輸出結(jié)果為x-y 圖3.3 四則運算模塊流程圖圖3.3是子程序運算模板流程圖。先輸入操作數(shù)和運算

13、符,最后得到結(jié)果。4系統(tǒng)詳細設(shè)計 我們在編寫整體程序代碼的時候應(yīng)該先行編寫各個子程序模塊,在確定輸入操作數(shù)和運算符的存儲和確定優(yōu)先級的高低才能進行一個算法表達式的運算。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)在匯編語言的程序編碼壞境下判斷數(shù)字是否輸入完畢,判斷括號是否是配對的并且保存已經(jīng)輸入的數(shù)值。4.2保存運算符和比較運算符

14、的優(yōu)先級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ù)保存輸入的運算符并且給運算符賦權(quán)值,進而判斷各個運算符的優(yōu)先級。將asc碼轉(zhuǎn)換成16進制數(shù)并判斷數(shù)值指針。4.3表達式的四則運算JNE NEXT1SUB DI,2 XCHG BX,DISUB DI,2XCHG AX,DIIMUL BXMOV DI,AXADD DI,2JMP FINISHNEXT1:CMP CL,2FH在判斷好優(yōu)先級以后,在子程序中判斷是什么運算符便進行相應(yīng)的計算,以此來完成對一個表達式進行重復(fù)的加減乘除運算。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在程序下運算產(chǎn)生結(jié)果之后,要進行另外一個運算,需要輸入全新的操作數(shù)和運算符,這樣就會再次對優(yōu)先級高低進行判斷。這個時候我們需要進

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è)定的等號是得出運算結(jié)果。而回車不是得到結(jié)果,回車的功能是換行。4.5輸出計算結(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這段程序來說明當操作數(shù)和運算符在優(yōu)先級高低確定的情況下計算出結(jié)果之后,輸出。4.6括號和負號的細節(jié)問題CMP CH,5 JNE PY INC WORD PTR SIGN2 MOV WORD PTR SIGN3,1PY:CMP CH,1 JNE AGAIN DEC WORD PTR SIGN2 在輸入運算符-括號的

22、時候,我們應(yīng)該現(xiàn)行判斷是左括號還是右括號,如果判斷得是左括號則是括號標志位1。若是右括號則括號標志位減1。5系統(tǒng)測試5.1加法運算 圖5.1 加法運算5.2減法運算 圖5.2減法運算5.3乘法運算 圖5.3 乘法運算5.4除法運算 圖5.4除法運算5.5混合運算圖5.5混合運算6軟件使用說明運行程序,彈出運行結(jié)果。輸入一個算術(shù)表達式,由常量、變量、運算符和括號組成(以字符串形式輸入)。規(guī)定操作數(shù)可以為正整數(shù)也可以為負整數(shù),操作符為“+、-、*、/”,按等號結(jié)束并輸出結(jié)果。程序運行輸出輸出后綴表達式和表達式運算結(jié)果。設(shè)計總結(jié)匯編語言是一項實用性很強的技術(shù),只有進行實際操作,將理論應(yīng)用于實際中,才

23、能確實掌握書中的知識點。通過做這次課程設(shè)計,我受益匪淺,讓我對匯編的知識有了更深的了解。在這幾天的時間里,我遇到了很多的問題,可以說是一個接一個的來,這個解決了,可是又來了一個。有時候我覺得自己是沒法再寫下去了,但是,有時候我就是不會放棄的,有了不明白的地方,就和同學(xué)討論,這讓我更深切的體會到人與人之間的那種相互協(xié)調(diào)合作的機制。本次的匯編語言課程設(shè)計是通過大量的查閱資料和搜索信息資料來完成的,在設(shè)計的過程使我掌握了許多的電腦基本技能及理解查閱資料的基本方法,同時經(jīng)過我的不斷查閱,理解資料,加深了對匯編語言的理解與認識。在設(shè)計的整個過程中,我體會到了設(shè)計的快樂,和小小的成就感。我的課設(shè)利用了很多

24、win32和DOS的調(diào)用,有01H號的單字符輸入,09H號的多字符輸出,4CH的過程終止等,還有其他安逸些相關(guān)指令,在平時的學(xué)習(xí)中葉學(xué)到過,但是經(jīng)過此次課設(shè),我對匯編語言的了解會更加深刻。當然,在短時間里不可能掌握匯編語言的全部,還需要在以后的學(xué)習(xí)中不斷地實踐和積累。參考文獻1 王爽.匯編語言(第二版).清華大學(xué)出版社, 2008。2 沈美明,溫冬嬋.IBM-PC匯編語言程序設(shè)計(第二版).清華大學(xué)出版社, 2001。3 美Kip R.Irvine著,溫玉潔,等譯.Intel匯編語言程序設(shè)計(第五版).電子工業(yè)出版社, 2007。4 錢曉捷.匯編語言程序設(shè)計(第二版). 電子工業(yè)出版社, 20

25、03。5 羅云彬.Windows環(huán)境下32位匯編語言程序設(shè)計(第二版).電子工業(yè)出版社, 2006。6 Windows API函數(shù)參考手冊.人民郵電出版社, 2002。致謝首先,我們要感謝學(xué)校給我們提供了此次課程設(shè)計的機會,能讓同學(xué)們在一起學(xué)習(xí)與研究,讓我們有機會對所學(xué)的理論知識進行實踐。這次機會讓我們熟練的掌握了課堂上所學(xué)的理論知識,并且深度理解了某些代碼所代表的意思。加強了我們的動手能力和理解能力。其次,我們還要特別感謝我們的匯編語言老師以及課程設(shè)計輔導(dǎo)老師劉樹群,在他的精心輔導(dǎo)和幫助下,我們的設(shè)計才能得以順利完成。對他為我們的設(shè)計所提出的寶貴意見表示衷心的感謝!再者,我還要感謝我的同學(xué)在

26、設(shè)計完成后對程序的測試,沒有他們,也許就難以發(fā)現(xiàn)一些潛在的細節(jié)錯誤。最后,由衷希望學(xué)校多多開展此次類型的課程設(shè)計。附錄DSEG SEGMENT STR1 DB 0AH,0DH, 'please input the expression:("N"jump out)$' SIGN1 DW 0 ;判斷數(shù)字是否輸入完畢 SIGN2 DW 0 ;判斷括號是否配對 SIGN3 DW 0 ; NUMB DW 20H DUP(0) ;保存輸入的數(shù)值 MARK DB 'A' ;保存輸入的運算符 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 ;宏定義,給運算符賦權(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 ;是等號,進一步判斷輸入括號是否配對 CMP AL,28H ; JB INPUT ; CMP AL,39H ; JA INPUT ; CMP AL,2FH ;判斷是數(shù)字還是符號 JBE JUD ;是符號轉(zhuǎn)入響應(yīng)操作 INC WORD PTR SIGN1 ;將數(shù)字標志位加一 SUB AL,30H ;將asc

29、碼轉(zhuǎn)16進制 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 ;判斷配對標志位 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)先級,

30、 CMP CH,5 ;判斷輸入的是否是左括號 JNE PY ;不是則判斷輸入的是否是右括號 INC WORD PTR SIGN2 ;是左括號,括號標志位1 MOV WORD PTR SIGN3,1;PY: CMP CH,1 ;判斷輸入的是否是右括號 JNE AGAIN ; DEC WORD PTR SIGN2 ;是右括號,括號標志位減1AGAIN: CMP BYTE PTRSI,'A'判斷運算符存儲區(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īng)的計算 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 ;“)”不保存,輸入下一個數(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 ;子程序,進行相應(yīng)的運算 PUSH AX ; XOR AX,AX XOR BX,BX CMP CL,2AH ;乘法運算 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 ;除法運算 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 ;加法運算 JNE NEXT3 SUB DI,2 XCHG BX,DI SUB DI,2 ADD DI,BX ADD DI,2 JMP FINISHNEXT3: CMP CL,2

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論