




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上課程設(shè)計(jì)說明書題目: 表達(dá)式計(jì)算器 學(xué)號:班級: 計(jì)算機(jī)創(chuàng)新實(shí)驗(yàn)班姓名:廖福軒 目錄計(jì)算器匯編語言程序設(shè)計(jì)一設(shè)計(jì)內(nèi)容從鍵盤輸入一個十進(jìn)制兩位數(shù)的四則運(yùn)算表達(dá)式,如23*56(8*19)/6678,編程計(jì)算表達(dá)式的值,輸出十進(jìn)制結(jié)果(有可能是三位或四位十進(jìn)制),*/位置任意。并要求程序能反復(fù)執(zhí)行直道對“還要繼續(xù)嗎?(y/n)”之類的提示回答“n”或“N”為止。四則運(yùn)算主要包括以下幾個模塊:(1) 主程序模塊.(2) 賦權(quán)宏模塊.(3) 加減乘除運(yùn)算子程序模塊.(4) 調(diào)用賦權(quán)宏子程序模塊.(5) 回車換行宏模塊.(6) 9號功能顯示字符串宏模塊.二設(shè)計(jì)方案1.主程序模塊
2、.主程序初始化數(shù)據(jù)段,調(diào)用顯示宏show顯示界面,輸入字符或數(shù)字并判斷,調(diào)用子程序dyfq調(diào)用賦權(quán)宏fq為符號賦權(quán),從而判斷優(yōu)先級,調(diào)用加減乘除運(yùn)算子程序ys對判斷出的相應(yīng)運(yùn)算符進(jìn)行運(yùn)算,輸出運(yùn)算結(jié)果,判斷是否繼續(xù),繼續(xù)則返回輸入,不繼續(xù)則退出程序.2.賦權(quán)宏模塊.通過定義宏fq,定義了變元a,b進(jìn)行參數(shù)傳遞,并使用替換運(yùn)算符&使變元a與標(biāo)號s對應(yīng).接著給對應(yīng)的符號賦予權(quán)值,將其權(quán)值存入ch中.3.加減乘除運(yùn)算子程序模塊.運(yùn)算模塊實(shí)現(xiàn)了將ax入棧保存,然后將ax,bx賦值為0,判斷cl中的符號是否為乘號*,若為乘號*則將number中的數(shù)字與其下一位的數(shù)字相乘,并把結(jié)果存入該位置,類似
3、的若不為乘號*則接著判斷是否為除號/,若為除號/則進(jìn)行除法運(yùn)算,然后判斷是否為加法,為加法則進(jìn)行加法運(yùn)算,接著判斷是否為減法,為減法則進(jìn)行減法運(yùn)算并將結(jié)果存入當(dāng)前的計(jì)算的第二個數(shù)的位置.4.調(diào)用賦權(quán)宏子程序模塊.該模塊實(shí)現(xiàn)了調(diào)用賦權(quán)宏fq為(,),*,/,+,-,=等符號分別賦權(quán)值為5,1,4,4,3,3,0.從而可以通過設(shè)定的權(quán)值來判斷優(yōu)先級.5.回車換行宏模塊.通過2號功能的輸出功能,將0dh賦予dl輸出,再調(diào)用2號功能,將0ah賦予dl輸出,從而實(shí)現(xiàn)回車換行功能.6.9號功能顯示字符串宏模塊.通過定義宏show,用9號顯示功能,通過變元str將字符串顯示出來。三設(shè)計(jì)框圖開始加載數(shù)據(jù)段附加
4、段顯示界面input輸入數(shù)字或字符輸入的是=,數(shù)字,符號?SIGN1=0?保存數(shù)字顯示錯誤=數(shù)字符號SIGN2=0?ny下移2位將SIGN1賦0設(shè)優(yōu)先級,并判斷是何符號ny根據(jù)符號決定運(yùn)算,將值存入numbOutput通過2號功能顯示結(jié)果是否繼續(xù)?結(jié)束ynDi+2取number,operator的偏移地址四程序代碼DATAS SEGMENT STR1 DB 0AH,0DH,'*$' STR2 DB 13,10, '* 1 2 3 4 5 *$' STR3 DB 13,10, '* 6 7 8 9 0 *$' STR4 DB 13,10, '
5、;* + - * / = *$' STR5 DB 0AH,0DH,'*$' STR6 DB 13,10, 'PLEASE INPUT A FORMULA: $' STR7 DB 'CONTINUE(Y/N)?$' SIGN1 DW 0 ;值為0代表輸入的不是數(shù)字,為1代表輸入的是數(shù)字 SIGN2 DW 0 ;值為0代表輸入的符號是匹配的,為1輸入的符號不匹配 NUMBER DW 20 DUP(0) ;保存輸入的數(shù)值 OPERATOR DB '$' ;判斷輸入的運(yùn)算符是否為空 DB 10 DUP(0) ;保存該運(yùn)算符對應(yīng)的權(quán)
6、值 ERROR DB 'WRONG!$' DATAS ENDSSHOW MACRO STR ;宏定義,顯示字符串 LEA DX,STR MOV AH,9 INT 21H ENDMFQ MACRO ASCII,A,B ;宏定義,給運(yùn)算符賦權(quán)值 CMP AL,ASCII JNE S&A MOV CH,B JMP S7 ENDMHCHH MACRO ;宏定義,回車換行 MOV AH,2 MOV DL,0DH INT 21H MOV AH,2 MOV DL,0AH INT 21H ENDM CODES SEGMENT MAIN PROC FAR ASSUME CS:CODES,
7、DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA DI,NUMBER LEA SI,OPERATOR SHOW STR1 SHOW STR2 SHOW STR3 SHOW STR4 SHOW STR5 SHOW STR6 MOV AX,0 MOV BX,0 MOV CX,0 MOV DX,0 START1: HCHHINPUT: MOV AH,1 INT 21H CMP AL,'=' JE LET0 CMP AL,28H ;第二種情況,第一次輸入的與28H也就是(比較 JB INPUT ;小于28H=(則重新輸入 CMP AL,39H JA I
8、NPUT ;大于39H=9則重新輸入 CMP AL,2FH ;判斷是數(shù)字還是符號 JBE LET1 ;是符號轉(zhuǎn)入響應(yīng)操作 INC WORD PTR SIGN1 ;是數(shù)字的話將數(shù)字標(biāo)志位加1 SUB AL,30H MOV AH,0 XCHG AX,DI MUL BX MOV BX,10 XCHG AX,DI ADD DI,AX JMP INPUT CALL FUNRETMAIN ENDP FUN PROC NEAR;*LET0: CMP WORD PTR SIGN2,0;判斷配對標(biāo)志位 JE LET1 ;經(jīng)過左括號和右括號抵消為0則跳轉(zhuǎn) JMP LET8 ;否則跳轉(zhuǎn)到BC顯示輸入錯誤LET1:C
9、MP WORD PTR SIGN1,0 JE LET2 ADD DI,2 ; MOV WORD PTR SIGN1,0 ;將數(shù)字標(biāo)志位復(fù)0LET2:CALL DYFQ ;設(shè)定優(yōu)先級 CMP CH,5 ;判斷輸入的符號是否是左括號 JNE LET3 ;不是則判斷輸入的是否是右括號 INC WORD PTR SIGN2 ;是左括號,括號標(biāo)志位加1LET3: CMP CH,1 ;判斷輸入的是否是右括號 JNE LET4 DEC WORD PTR SIGN2 ;是右括號,括號標(biāo)志位減1 LET4: CMP BYTE PTRSI,'$' ;判斷運(yùn)算符存儲區(qū)是否為空 JE LET6 CMP
10、 CH,SI ;SI的內(nèi)容為前一個符號或其權(quán)值 JA LET6 CMP BYTE PTRSI,'(' JNE LET5 DEC SI JMP INPUTLET5: DEC SI MOV CL,SI CALL YS ;判斷是什么運(yùn)算符并進(jìn)行相應(yīng)的計(jì)算 JMP LET4 LET6: CMP CH,0 ;判斷是否是等號 JE OUTPUT CMP CH,1 JE INPUT ;“)”不保存,輸入下一個數(shù) INC SI MOV SI,AL ;保存符號 INC SI CMP CH,5 ;判斷是否是左括號 JNE LET7 MOV CH,2 ;改變(的權(quán)值LET7: MOV SI,CH ;
11、緊跟著保存符號的權(quán)值 JMP INPUT LET8: LEA DX,ERROR MOV AH,9 INT 21H JMP EXIT RETFUN ENDP;*DYFQ PROC ;子程序DYFQ調(diào)用宏FQ,判斷優(yōu)先級 FQ 28H,1,5 ;調(diào)用宏FQ為(賦權(quán)值S1:FQ 29H,2,1 ;調(diào)用宏FQ為)賦權(quán)值S2:FQ 2AH,3,4 ;調(diào)用宏FQ為*賦權(quán)值S3:FQ 2FH,4,4 ;調(diào)用宏FQ為/賦權(quán)值S4:FQ 2BH,5,3 ;調(diào)用宏FQ為+賦權(quán)值S5:FQ 2DH,6,3 ;調(diào)用宏FQ為-賦權(quán)值S6:FQ 3DH,7,0 ;調(diào)用宏FQ為=賦權(quán)值S7:RETDYFQ ENDP;* O
12、UTPUT: ;輸出運(yùn)算結(jié)果 SUB DI,2 CMP WORD PTRDI,0 JGE K1 NEG WORD PTRDI ;求負(fù)數(shù)的絕對值 MOV DL,'-' MOV AH,2 INT 21HK1: MOV BX,10000 MOV CX,5 MOV SI,0K2: MOV AX,DI CWD DIV BX MOV DI,DX CMP AL,0 JNE K3 CMP SI,0 JNE K3 CMP CX,1 JE K3 JMP K4K3: MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV SI,1K4: MOV AX,BX ;實(shí)現(xiàn)將100
13、00變?yōu)?000,100,10 MOV DX,0 MOV BX,10 DIV BX MOV BX,AX LOOP K2 HCHH SHOW STR7 MOV AH,1 INT 21H CMP AL,'n' ;判斷是否繼續(xù)輸入,輸入n則結(jié)束操作 JE EXIT CMP AL,'N' JE EXIT MOV WORD PTRDI+2,0 LEA DI,NUMBER LEA SI,OPERATOR JMP START1EXIT: MOV AH,4CH INT 21HYS PROC NEAR ;子程序,進(jìn)行相應(yīng)的運(yùn)算 PUSH AX MOV AX,0 MOV BX,0
14、CMP CL,2AH ;乘法運(yùn)算 JNE CHU SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI IMUL BX MOV DI,AX ADD DI,2 JMP FINISHCHU: CMP CL,2FH ;除法運(yùn)算 JNE JIA SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI CWD IDIV BX MOV DI,AX ADD DI,2 JMP FINISHJIA: CMP CL,2BH ;加法運(yùn)算 JNE JIAN SUB DI,2 XCHG BX,DI SUB DI,2 ADD DI,BX ADD DI,2 JMP FINI
15、SHJIAN: CMP CL,2DH ;減法運(yùn)算 JNE FINISH SUB DI,2 XCHG BX,DI SUB DI,2 SUB DI,BX ADD DI,2FINISH: POP AX RETYS ENDP;*CODES ENDS END START五運(yùn)行結(jié)果六設(shè)計(jì)總結(jié) 本次設(shè)計(jì)讓我學(xué)到了很多關(guān)于匯編的知識,首先,本次設(shè)計(jì)是以四則運(yùn)算為主題,通過在課堂上學(xué)習(xí)的基本知識和基本方法以及平時積累的知識和方法來實(shí)現(xiàn)對帶符號數(shù)的加減乘除運(yùn)算,在設(shè)計(jì)過程中,對我已有的知識進(jìn)行了鞏固,對我之前不太了解的知識有了一定的了解,通過親身去編寫程序,使得自己的實(shí)際動手能力得以增強(qiáng)。其次,通過本次設(shè)計(jì),使我對模塊化,結(jié)構(gòu)化的程序設(shè)計(jì)方法掌握的更加透徹,再者,就是對于宏的定義,調(diào)用以及子程序的定義,調(diào)用的方法掌握的更加熟練。本次設(shè)計(jì)是要實(shí)現(xiàn)對有符號數(shù)的加減乘除等四則運(yùn)算,程序開始先定義了顯示界面的諸多字符串,經(jīng)過顯示界面,接下來,定義了判斷數(shù)字和判斷運(yùn)算符的存儲區(qū),通過這兩個存儲區(qū)來判斷當(dāng)前位置輸入的是數(shù)字還是運(yùn)算符,然后,定義了保存數(shù)字和保存運(yùn)算符的存儲區(qū),提示錯誤的字符串,顯示宏,賦權(quán)宏,回車換行宏等,通過主程序?qū)Ω鱾€宏及子程序的調(diào)用,判斷出輸入的是數(shù)字還是運(yùn)算符,若是運(yùn)算符又是運(yùn)算符中的哪類運(yùn)算符,然后,進(jìn)行加
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年二代微通道板項(xiàng)目合作計(jì)劃書
- 代理授權(quán)委托申報3篇
- 實(shí)驗(yàn)室責(zé)任書簽署人單位法人代表3篇
- 劃款委托書格式生成器3篇
- 工業(yè)產(chǎn)品交易券3篇
- 代付授權(quán)委托3篇
- 九年級下班主任工作總結(jié)(6篇)
- 復(fù)函建議檢察院3篇
- 導(dǎo)視牌安裝與基礎(chǔ)施工綜合協(xié)議3篇
- 律師教你寫委托書3篇
- MOOC 國情分析與商業(yè)設(shè)計(jì)-暨南大學(xué) 中國大學(xué)慕課答案
- MOOC 大學(xué)體育-華中科技大學(xué) 中國大學(xué)慕課答案
- 《光伏發(fā)電工程工程量清單計(jì)價規(guī)范》
- 國家衛(wèi)生部《綜合醫(yī)院分級管理標(biāo)準(zhǔn)》
- DB64++1996-2024+燃煤電廠大氣污染物排放標(biāo)準(zhǔn)
- 初中八年級數(shù)學(xué)課件-最短路徑-將軍飲馬問題
- 信息論與編碼期末考試題(全套)
- 醫(yī)院醫(yī)學(xué)倫理審查委員會章程
- 房地產(chǎn)銷售價格優(yōu)惠申請表-
- 綠化自動滴灌系統(tǒng)施工方案
- 處理突發(fā)事件流程圖
評論
0/150
提交評論