




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
./課程設(shè)計說明書題目:表達(dá)式計算器學(xué)號:41212241班級:計算機創(chuàng)新實驗班:廖福軒目錄TOC\o"1-2"\h\z\u一.設(shè)計容2二.設(shè)計方案21.主程序模塊.22.賦權(quán)值模塊.23.加減乘除運算子程序模塊.24.調(diào)用賦權(quán)宏子程序模塊.25.回車換行宏模塊.26.9號功能顯示字符串宏模塊.2三.設(shè)計框圖3四.程序代碼4五.運行結(jié)果9六.設(shè)計總結(jié)9計算器匯編語言程序設(shè)計一.設(shè)計容從鍵盤輸入一個十進制兩位數(shù)的四則運算表達(dá)式,如23*56-〔8*19/6+67-8=,編程計算表達(dá)式的值,輸出十進制結(jié)果〔有可能是三位或四位十進制,+-*/位置任意。并要求程序能反復(fù)執(zhí)行直道對"還要繼續(xù)嗎?〔y/n"之類的提示回答"n"或"N"為止。四則運算主要包括以下幾個模塊:主程序模塊.賦權(quán)宏模塊.加減乘除運算子程序模塊.調(diào)用賦權(quán)宏子程序模塊.回車換行宏模塊.9號功能顯示字符串宏模塊.二.設(shè)計方案1.主程序模塊.主程序初始化數(shù)據(jù)段,調(diào)用顯示宏show顯示界面,輸入字符或數(shù)字并判斷,調(diào)用子程序dyfq調(diào)用賦權(quán)宏fq為符號賦權(quán),從而判斷優(yōu)先級,調(diào)用加減乘除運算子程序ys對判斷出的相應(yīng)運算符進行運算,輸出運算結(jié)果,判斷是否繼續(xù),繼續(xù)則返回輸入,不繼續(xù)則退出程序.2.賦權(quán)宏模塊.通過定義宏fq,定義了變元a,b進行參數(shù)傳遞,并使用替換運算符&使變元a與標(biāo)號s對應(yīng).接著給對應(yīng)的符號賦予權(quán)值,將其權(quán)值存入ch中.3.加減乘除運算子程序模塊.運算模塊實現(xiàn)了將ax入棧保存,然后將ax,bx賦值為0,判斷cl中的符號是否為乘號*,若為乘號*則將number中的數(shù)字與其下一位的數(shù)字相乘,并把結(jié)果存入該位置,類似的若不為乘號*則接著判斷是否為除號/,若為除號/則進行除法運算,然后判斷是否為加法,為加法則進行加法運算,接著判斷是否為減法,為減法則進行減法運算并將結(jié)果存入當(dāng)前的計算的第二個數(shù)的位置.4.調(diào)用賦權(quán)宏子程序模塊.該模塊實現(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輸出,從而實現(xiàn)回車換行功能.6.9號功能顯示字符串宏模塊.通過定義宏show,用9號顯示功能,通過變元str將字符串顯示出來。三.設(shè)計框圖開始開始加載數(shù)據(jù)段附加段顯示界面input輸入數(shù)字或字符輸入的是=,數(shù)字,符號?SIGN1=0?保存數(shù)字顯示錯誤=數(shù)字符號SIGN2=0?ny下移2位將SIGN1賦0設(shè)優(yōu)先級,并判斷是何符號ny根據(jù)符號決定運算,將值存入numbOutput通過2號功能顯示結(jié)果是否繼續(xù)?結(jié)束ynDi+2取number,operator的偏移地址四.程序代碼DATASSEGMENTSTR1DB0AH,0DH,'*******************************************$'STR2DB13,10,'*12345*$'STR3DB13,10,'*67890*$'STR4DB13,10,'*+-*/=*$'STR5DB0AH,0DH,'*******************************************$'STR6DB13,10,'PLEASEINPUTAFORMULA:$'STR7DB'CONTINUE<Y/N>?$' SIGN1DW0;值為0代表輸入的不是數(shù)字,為1代表輸入的是數(shù)字 SIGN2DW0;值為0代表輸入的符號是匹配的,為1輸入的符號不匹配 NUMBERDW20DUP<0>;保存輸入的數(shù)值 OPERATORDB'$';判斷輸入的運算符是否為空DB10DUP<0>;保存該運算符對應(yīng)的權(quán)值 ERRORDB'WRONG!$'DATASENDSSHOWMACROSTR;宏定義,顯示字符串 LEADX,STR MOVAH,9 INT21HENDMFQMACROASCII,A,B;宏定義,給運算符賦權(quán)值CMPAL,ASCII JNES&A MOVCH,B JMPS7 ENDMHCHHMACRO;宏定義,回車換行 MOVAH,2 MOVDL,0DH INT21H MOVAH,2 MOVDL,0AH INT21H ENDMCODESSEGMENTMAINPROCFARASSUMECS:CODES,DS:DATASSTART: MOVAX,DATAS MOVDS,AX LEADI,NUMBER LEASI,OPERATOR SHOWSTR1 SHOWSTR2 SHOWSTR3 SHOWSTR4 SHOWSTR5SHOWSTR6 MOVAX,0 MOVBX,0 MOVCX,0 MOVDX,0START1:HCHHINPUT:MOVAH,1 INT21H CMPAL,'=' JELET0 CMPAL,28H;第二種情況,第一次輸入的與28H也就是‘<’比較 JBINPUT;小于28H=<則重新輸入 CMPAL,39H JAINPUT;大于39H=9則重新輸入 CMPAL,2FH;判斷是數(shù)字還是符號 JBELET1;是符號轉(zhuǎn)入響應(yīng)操作 INCWORDPTRSIGN1;是數(shù)字的話將數(shù)字標(biāo)志位加1 SUBAL,30H MOVAH,0 XCHGAX,[DI] MULBX MOVBX,10 XCHGAX,[DI] ADD[DI],AX JMPINPUTCALLFUNRETMAINENDPFUNPROCNEAR;***********************************************************LET0: CMPWORDPTRSIGN2,0;判斷配對標(biāo)志位 JELET1;經(jīng)過左括號和右括號抵消為0則跳轉(zhuǎn) JMPLET8;否則跳轉(zhuǎn)到BC顯示輸入錯誤LET1: CMPWORDPTRSIGN1,0 JELET2 ADDDI,2; MOVWORDPTRSIGN1,0;將數(shù)字標(biāo)志位復(fù)0LET2: CALLDYFQ;設(shè)定優(yōu)先級 CMPCH,5;判斷輸入的符號是否是左括號 JNELET3;不是則判斷輸入的是否是右括號 INCWORDPTRSIGN2;是左括號,括號標(biāo)志位加1LET3: CMPCH,1;判斷輸入的是否是右括號 JNELET4 DECWORDPTRSIGN2;是右括號,括號標(biāo)志位減1LET4: CMPBYTEPTR[SI],'$';判斷運算符存儲區(qū)是否為空 JELET6 CMPCH,[SI];[SI]的容為前一個符號或其權(quán)值 JALET6 CMPBYTEPTR[SI],'<' JNELET5 DECSI JMPINPUTLET5: DECSI MOVCL,[SI] CALLYS;判斷是什么運算符并進行相應(yīng)的計算 JMPLET4LET6: CMPCH,0;判斷是否是等號 JEOUTPUT CMPCH,1 JEINPUT;">"不保存,輸入下一個數(shù) INCSI MOV[SI],AL;保存符號 INCSI CMPCH,5;判斷是否是左括號 JNELET7 MOVCH,2;改變<的權(quán)值LET7: MOV[SI],CH;緊跟著保存符號的權(quán)值 JMPINPUTLET8: LEADX,ERROR MOVAH,9 INT21H JMPEXITRETFUNENDP;**********************************************************************DYFQPROC;子程序DYFQ調(diào)用宏FQ,判斷優(yōu)先級FQ28H,1,5;調(diào)用宏FQ為<賦權(quán)值S1:FQ29H,2,1;調(diào)用宏FQ為>賦權(quán)值S2:FQ2AH,3,4;調(diào)用宏FQ為*賦權(quán)值S3:FQ2FH,4,4;調(diào)用宏FQ為/賦權(quán)值S4:FQ2BH,5,3;調(diào)用宏FQ為+賦權(quán)值S5:FQ2DH,6,3;調(diào)用宏FQ為-賦權(quán)值S6:FQ3DH,7,0;調(diào)用宏FQ為=賦權(quán)值S7:RETDYFQENDP;*********************************************OUTPUT:;輸出運算結(jié)果 SUBDI,2 CMPWORDPTR[DI],0 JGEK1 NEGWORDPTR[DI];求負(fù)數(shù)的絕對值 MOVDL,'-' MOVAH,2 INT21HK1: MOVBX,10000 MOVCX,5 MOVSI,0K2: MOVAX,[DI] CWD DIVBX MOV[DI],DX CMPAL,0 JNEK3 CMPSI,0 JNEK3 CMPCX,1 JEK3 JMPK4K3: MOVDL,AL ADDDL,30H MOVAH,2 INT21H MOVSI,1K4: MOVAX,BX;實現(xiàn)將10000變?yōu)?000,100,10 MOVDX,0 MOVBX,10 DIVBX MOVBX,AX LOOPK2 HCHH SHOWSTR7 MOVAH,1 INT21H CMPAL,'n';判斷是否繼續(xù)輸入,輸入n則結(jié)束操作 JEEXIT CMPAL,'N' JEEXIT MOVWORDPTR[DI+2],0 LEADI,NUMBER LEASI,OPERATOR JMPSTART1EXIT: MOVAH,4CH INT21HYSPROCNEAR;子程序,進行相應(yīng)的運算 PUSHAX MOVAX,0 MOVBX,0 CMPCL,2AH;乘法運算 JNECHU SUBDI,2 XCHGBX,[DI] SUBDI,2 XCHGAX,[DI] IMULBX MOV[DI],AX ADDDI,2 JMPFINISHCHU: CMPCL,2FH;除法運算 JNEJIA SUBDI,2 XCHGBX,[DI] SUBDI,2 XCHGAX,[DI] CWD IDIVBX MOV[DI],AX ADDDI,2 JMPFINISHJIA: CMPCL,2BH;加法運算 JNEJIAN SUBDI,2 XCHGBX,[DI] SUBDI,2 ADD[DI],BX ADDDI,2 JMPFINISHJIAN: CMPCL,2DH;減法運算 JNEFINISH SUBDI,2 XCHGBX,[DI] SUBDI,2 SUB[DI],BX ADDDI,2FINISH: POPAX RETYSENDP;******************************************************
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時保安合同范本
- 人才引進聘用合同范本
- 2025年西藏貨運從業(yè)資格證考試模擬考試題目答案
- 專業(yè)購銷合同范本
- 個人雇傭老師合同范本
- 加工木料供貨合同范本
- 辦公區(qū)花卉租賃合同范本
- 冰淇淋原材料采購合同范本
- 儀器外借合同范本
- 公交駕校培訓(xùn)合同范本
- 骶髂關(guān)節(jié)損傷郭倩課件
- 內(nèi)科學(xué)疾病概要-支氣管擴張課件
- 2025陜西渭南光明電力集團限公司招聘39人易考易錯模擬試題(共500題)試卷后附參考答案
- 教學(xué)課件-電力系統(tǒng)的MATLAB-SIMULINK仿真與應(yīng)用(王晶)
- GB/T 26189.2-2024工作場所照明第2部分:室外作業(yè)場所的安全保障照明要求
- 新教科版一年級科學(xué)下冊第一單元《身邊的物體》全部課件(共7課時)
- 2024年南京旅游職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 《電商直播》 課件 項目一 走入電商直播
- 《中國宮腔鏡診斷與手術(shù)臨床實踐指南(2023版)》解讀課件
- 中藥學(xué)電子版教材
- GB/T 9535-1998地面用晶體硅光伏組件設(shè)計鑒定和定型
評論
0/150
提交評論