匯編語言課程設計四則運算器_第1頁
匯編語言課程設計四則運算器_第2頁
匯編語言課程設計四則運算器_第3頁
匯編語言課程設計四則運算器_第4頁
匯編語言課程設計四則運算器_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、信息科學與工程學院匯編語言課程設計題目:四則運算器姓名:學號:班級:課程:匯編語言任課教師:2011年6月20日課程設計任務書及成績評定題目設計一個四則運算器課程設計的任務及要求1、設計任務:設計一個能實現(xiàn)加減乘除取余計算的程序2、設計要求:要求該程序接受從鍵盤輸入的十六進制數(shù),執(zhí)行相應的進算后,計算結果以十六進制數(shù)輸出。課程設計所需的軟件、硬件等計算機、masm5課程設計進度計劃2011年5月5月中旬,進行可行性研究,完成選題.2011年5月中旬5月底,根據(jù)選題查閱資料、進行概要設計,確定設計方案.詳細設計,實施設計方案,調(diào)試作品.2011年6月初,完成課程設計(任務書)的撰寫。任課教師評語

2、成績:教師簽名:日職選題背景及意義運用匯編語言,實現(xiàn)簡單計算器的一般功能。通過該程序設計,讓咱們熟悉并掌握DOS系統(tǒng)功能挪用方式及BIOS系統(tǒng)功能挪用方式,同時在程序設計進程中熟悉并掌握各類指令的應用,明白編程的具體流程,和掌握DEBUG的一系列的功能指令命令,及用它進行調(diào)試,運行功能。主要設計內(nèi)容及預期目標設計一個能實現(xiàn)加減乘除取余計算的程序。將鍵盤輸入的表達式預放入一緩存區(qū)中,然后從該緩沖區(qū)的第一個字符開始讀取判斷,當讀到一個有效的表達式時對表達式進行相應的運算后,輸出用十六進制數(shù)表示的運算結果。目標:要求該程序同意從鍵盤輸入的十六進制數(shù),執(zhí)行相應的進算后,計算結果以十六進制數(shù)輸出。概要設

3、計本題目實現(xiàn)的模塊圖加圖3-1所示四則返身計算器種序設計扎而設團達杼日注自置(1)界面設置主要實現(xiàn)肯定界面樣式的功能,以菜單形式顯示。(2)選擇算法設置用于選擇加減乘除進行運算。(3)十進制轉換設置應用十進制的轉換算法來處置加減乘除四則運算。詳細設計一、頁面設置通過概念數(shù)據(jù)段,利用09H顯示出功能列表。通過概念數(shù)據(jù)段,以字符串的形式輸入每一個提示信息,利用09h鍵盤輸入并回顯命令顯示每一個功能提示,是計算器的功能列表有序清楚的顯示在屏幕±o二、選擇算法設置第一選擇要進行的四則運算,若選擇1,則進行加法;若選擇2,則進行減法;若選擇3則進行乘法;若選擇4則進行除法。加法:先輸入第一個小

4、于4位十六進制數(shù)存入SI中,在輸入第二個小于4位十六進制數(shù)存入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,然后再別離將DX,AX中的內(nèi)容賦給BX,接著依次顯示DX,AX的內(nèi)容,即為積。除法:先輸入第一個小于4位十六進制數(shù)存入SI中在輸入第二個小于4位十六進制數(shù)存入BX中SI賦給

5、AX作被除數(shù),讓BX作除數(shù),取得的商存在AX中,余數(shù)放在DX中,然后依次賦給BX,將依次顯示即為商。3、十進制轉換設置要完成十進制轉換成十六,一般采用除十六取余法來完成,其大致進程如下:將待裝換的數(shù)除以16取得第一個商和余數(shù),此第一個余數(shù)就是所求的十六進制數(shù)的列位,再用第一個商除以16,取得第二個商和余數(shù),此第二個余數(shù)就是所求十六進制數(shù)的十位,重復這一進程直至商為0,現(xiàn)在的余數(shù)就是所求十六進制數(shù)的最高位。在內(nèi)存中分派一緩沖區(qū),用來寄存以上分離出來的十六進制數(shù)的每一名,然后再逐個轉換成ASCII碼的進程很簡單,就是給每一個十六進制位加上30H即可,最后送顯示器輸出。WELCOMETOCrtLCU

6、LATOKSVSTEH2sSUB-3sHUL-4:»IU-0:QU1T-MftDEBYZHOUZHlHfiO2009*26K-KinputthePl*ai-einputthepltc、仁iikjMitt.hrHaB-H246HWELCOMEchoosenumbers1fibfitnuab電Nxiaoyu4wei:123sncondnumlirrxinoyii4wri:123TOCALCULATORSVSTEN-«-nADD-2鴻UB-3二MUL-4二DIU-TRUITHADEBYZHOUZHIHfiO-2009*6*26inputtheLPl*a5.cinputthePle

7、aseinputtheb-B-HHichnoseniittihr?N:2firstnumberxiaoiyu4wci:333secondnumberxiaoym4wei:222WELCOHJt10CfiLCULATOMSVSIEH-1-ftDH2SUB3MUL4:JIU-BtQUIT-MADEBVZHOUZHIHfiO-206«26Pleaseinputthechoosenumhep-圖I1加法、減法的運晶的截圖x1:ABD-I:MHI.4:DIUH:QllITTH-MADI-:IIVZIIOI1Z3IHIAO-”2二印/*26川.choose nunhers3first nunlw

8、? r xIaq 5m 4 we i : secund nuni>er xi-cto yu 4 wel s20I。CALCULfilOR SVSTHIi*PleaseinputtheFledseinputtheFleciseinputtheA*B-00施0400*WELCOMET:AftD-2:SUB3:MUL-4:DIU-0:削1T%即DEBYZHWZHIHfiO*2B99*&*26Pieaseinputthechoevenwiibr:4Pleaseinj>uttheflF£tftimbei*xiao典4mgi:100Fleaseinputthesecondnu

9、nbeirxiaow4wei;5A/B=09330991* WELCOMETOCfiLCULftTORSVSTEK* -1:ftDD-2;SUB-3:MULT:DIU-fl:QUIT* HfiDEBYZHWZHIHflO* 2B09«6*26*Pleaseinputtheelwosenunibcr:Bfireyousurecxit?(V/H>¥圖12除法、乘法的運算及亞出程序的沿圖利用說明(1) 依照提示選擇數(shù)字123,4。(2) 1:力跖去ADDO(3) 2:減法SUB。(4) 3:乘法MUL。(5) 4:除法DIVO(6)輸入一個小于四位的任意進制的數(shù),回車。(7

10、)再輸入一個小于四位的任意進制的數(shù),回車。IN16MACROLEA DX,PRCALL OUTPUT LEA DXJNPUTlCALL OUTPUT LEA SI,RESULT MOV SI,BXLEA DX,PRLEA DX,PRCALL OUTPUTLEA DXJNPUT2CALL OUTPUTCALL INPUTENDMDATA SEGMENT(8)顯示結果。(9)退出按Q,選擇Y或N。程序清單;完成從鍵盤同意兩個數(shù)并轉換為十六進制數(shù),第一個數(shù)由SI指向,第二個數(shù)寄存在BX中;DX指向PR換行;DX指向INPUT1,提示輸入第一數(shù)才巴輸入的數(shù)寄存在BX中;SI指向RESULT才巴第一個十

11、六進制數(shù)存入RESULT的第一個位置方巴第一個十六進制數(shù)存入RESULT的第一個位置;DX指向PR,換行;DX指向INPUT2,提示輸入第一個數(shù);把輸入的數(shù)寄存在BX中;宏結束;數(shù)據(jù)段BUFDB',,ODH,OAHDB'*WELCOMETOCALCULATORSYSTEM*',0DH,0AHDB9*l:ADD-2:SUB-3:UL-4:IY-0:QUIT*,,0DH,0AHDB'*MADEBYZHOUZHIHAO*)0DH,0AHDB'*2009*6*26*0DH,0AHDBODHQAH,'Pleaseinputthechoosenumber:&

12、#39;,、'INPUT1DB'Pleaseinputthefirstnumberxiaoyu4wei:',$INPUT2DB'Pleaseinputthesecondnumberxiaoyu4wei:',$RESULTDW?,?;寄存鍵盤輸入的兩個十六制數(shù)WRODB'Youinputthenumberiswrong,pleaseinputagain:0DH,0AH;$,PRDB0DH,0AH,$;將光標移到下一行起始位置PR1DB,A+B=$'PR2DB'A-B=$'PR3DB'A*B=$'PR4DBJA

13、/B=$,PR5DB'$,PR6DB'Areyousureexit?(Y/N)$,DATAENDS;數(shù)據(jù)段概念結束CODESEGMENTMAINPROCFAR;主函數(shù)MOV AX,DATAMOV DS,AXLEA DX,BUFCALL OUTPUTSUB AX,AXCALL CHOOSEJMP STARTRETMAIN ENDPASSUMECSCODE,DS:DATASTART:;DX指向BUF換行;挪用顯示字符串函數(shù)換行;AX清零;挪用選擇函數(shù)海族專至IJSTARTINPUTPROCNEAR;概念INPUT函數(shù),就是將從鍵盤輸入的數(shù)按原十六進制數(shù)寄存在BX中MOVBX,0;B

14、X清零NEWCHAR:MOVAH,1INT21H;同意鍵盤輸入一個字符CMP AL,0DH;輸入的字符與回車比較JEEXIT;是回車就結束CMPAL/A,;與人比較JAEH0;大于等于就跳轉到H0CMPAL,O;與0比較JAEH1;大于等于就跳轉到H1H0:SUBAL.37H;由于41-A=37z完成把字母字符轉換成對應的十六進制數(shù)JMP ADDTO湖族專至IIADDTOH1:SUB AL,30H;把0到9的字符轉換成對應的十六進制數(shù)JMP ADDTOADDTO :MOV CL,4 SHL BX,CLMOV AHQ ADD BX,AXJMP NEWCHAR;跳轉到NEWCHAR,把第二個輸入的

15、字閨族專至IADDTO;相當于讓BX乘以16;將BX邏輯左移;各AX;青零;AX+BX送至UBX符寄存到BX的第二位EXIT:RETINPUTENDPOUTPUTPROCNEAR;顯示字符串函數(shù)MOVAH,9HINT21HRETOUTPUTENDPCHOOSEPROCNEAR;選擇函數(shù)MOV AH,1INT21HCMP AL, 1JE YES1CMP AL,2JE YES2CMP AL,3JE YES3CMP AL,4JE YES4CMP AL,OJE EXIT1CALL WRONGEXIT1 : LEA DX,PRCALL OUTPUTLEA DX,PR6CALL OUTPUTMOV AH,

16、1INT21HCMP AL,¥JE EXITOCMP AL,y;從鍵盤同意一個數(shù)與1比較;等于1就韻族專到YES1,進行加法與2比較等于2就目煉專到YES2,進行減法;與3比較;等于3就目煉專到YES3,進行乘法與4比較;等于4就韻族專到YES4,進行除法;與0比較;等于0就跳轉到EXIT1,結束程序;若是不是0到4之間的數(shù)就提示犯錯;DX指向PR換行;DX指向PR6,確認是不是退出;從鍵盤同意一個數(shù);與Y比較;不是Y就看是不是為y與y比較JNESTART;不是y就跳轉到STARTEXITO:MOVAH,4cH;結束本程序INT21HYESLCALL JIA;挪用JIA函數(shù)JMP S

17、TART挪用完以后跳轉到STARTYES2 : CALL JIAN挪用JIAN函數(shù)JMP START;挪用完以后足先轉至IJ STARTYES3 : CALL CHENG;胡B用CHENG函數(shù)JMP START;挪用完以后跳轉到STARTYES4 : CALL CHU;挪用CHU函數(shù)RETCHOOSE ENDP;選擇函數(shù)結束WRONG PROC NEAR才反錯函數(shù)LEA DX,PR;DX指向PR換行LEA DX,WRO;DX指向WRO提示輸入有錯誤,請從頭輸JMP START海族專至!J SYARTRETWRONG ENDP;報錯函數(shù)結束JIA PROC NEA;加法函數(shù)IN16;挪用宏,同意

18、鍵盤輸入的兩個十六進制數(shù),第一個由SI指向,第二個數(shù)寄存到BX中ADD BX,SILEA DX,PRCALL OUTPUTLEA DX,PR1CALL OUTPUTCALL OUTBXRETJIA ENDPJIAN PROC NEARIN16SUB BX,SINEG BX數(shù)減去第二個數(shù)LEA DX,PRCALL OUTPUTLEA DX,PR2CALL OUTPUTCALL OUTBXRETJIAN ENDP;把第一個數(shù)加第二個數(shù)寄存在BX中;DX指向PR,換行;DX指向PR1,顯示A+B二,;挪用顯示BX寄放器的內(nèi)容函數(shù);加法結束;減法函數(shù);挪用宏,同意鍵盤輸入的兩個十六進制數(shù),第一個由SI

19、指向,第二個數(shù)寄存到BX中;把第二個數(shù)減第一個數(shù)寄存在BX中;對結果取反后才是A-B的值,才是第一個;DX指向pr,換行;dx指向pr2,顯示ZA-B=Z;挪用顯示BX寄放器的內(nèi)容;減法函數(shù)結束CHENG PROC NEAR;乘法函數(shù)IN16;挪用宏,同意鍵盤輸入的兩個十六進制數(shù),第一個由SI指向,第二個數(shù)寄存到BX中MOV DX,0MOV AX,BX;把DX清零;把第二個數(shù)賦給axMUL WORD PTRSI ; ax乘si并把結果寄存在dx , ax中,是字的操作MOV BX,AXPUSH BX的值賦給bxPUSH DXdx的值LEA DX,PRCALL OUTPUTLEA DX,PR3C

20、ALL OUTPUTPOP DXMOV BX, DXCALL OUTBXPOP BXCALL OUTBX;把ax賦給bx;將bx壓棧,顯示下面dx的內(nèi)容是要將dx;將dx壓棧,因為下面換行輸出,會改變;dx指向pr,換行輸出;dx 指向 pr3,顯示A*B=';將dx出棧,將要做乘法后dx的內(nèi)容顯 示出來;把BX給DX;顯示DX的內(nèi)容把BX出棧;顯示AX的內(nèi)容RETCHENG ENDPCHU PROC NEARIN16MOV AX,SIMOV DX,0DIV BXPUSH DXPUSH AXLEA DX,PRCALL OUTPUTLEA DX,PR4CALL OUTPUTPOP AXMOV BX,AXCALL OUTBXLEA DX,PR5CALL OUTPUTPOP DXMOV BX,DX;乘法函數(shù)結束;除法函數(shù);挪用宏,同意鍵盤輸入的兩個十六進制數(shù),第一個數(shù)SI指向,第二個數(shù)寄存在BX中;將第一個數(shù)賦給AX將DX清零;AX除BX,Z吉果寄存至UDX,AX,DX寄存余數(shù),AX寄存商;壓棧DX;壓棧AX;DX指向PR,換行;DX指向PR4,顯示A/B=';出棧AX;將AX賦給BX,將商給BX;顯示AX寄放器的內(nèi)容,顯示余數(shù);DX指向PR5,顯示省略號;出棧DX;將DX賦給BX,即將余數(shù)賦給BXCALLOUTBXRETCH

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論