微型計算機原理及應(yīng)用課程設(shè)計簡易計算器的設(shè)計_第1頁
微型計算機原理及應(yīng)用課程設(shè)計簡易計算器的設(shè)計_第2頁
微型計算機原理及應(yīng)用課程設(shè)計簡易計算器的設(shè)計_第3頁
微型計算機原理及應(yīng)用課程設(shè)計簡易計算器的設(shè)計_第4頁
微型計算機原理及應(yīng)用課程設(shè)計簡易計算器的設(shè)計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微型計算機原理及應(yīng)用課程設(shè)計簡易計算器的設(shè)計姓名陳*院系信息學(xué)院自動化系班級*學(xué)號200911*時間2011年 12月 29日目 錄摘要IINTRODUCTION1課程設(shè)計目的與任務(wù)11.1設(shè)計目的11.2設(shè)計任務(wù)12基本要求13簡易計算器的設(shè)計03.1程序設(shè)計流程圖03.2程序基本算法13.3程序源代碼13.4程序調(diào)試84課程設(shè)計總結(jié)與心得11參考文獻12摘要本次課程設(shè)計是通過使用emu8086匯編語言編程軟件實現(xiàn)較復(fù)雜程序的設(shè)計。該課程設(shè)計的內(nèi)容為采用匯編語言設(shè)計一個簡易計算器,界面顯示要求用鍵盤分別輸入兩個隨機數(shù),完成加法,減法,乘法和除法的運算,然后將運算結(jié)果顯示出來。該設(shè)計只能運行簡

2、單正整數(shù)間的單步加減乘除運算,不能識別小數(shù)。除法中的結(jié)果可以精確到3位小數(shù),減法可以顯示負數(shù)的結(jié)果。采用DOS調(diào)用(INT 21H)來完成輸入和輸出,輸出字符串操作。通過這次設(shè)計實踐能夠進一步加深對專業(yè)知識和理論知識學(xué)習的認識和理解,使自己的設(shè)計水平和對所學(xué)的知識的應(yīng)用能力以及分析問題解決問題的能力得到全面提高。關(guān)鍵詞:微機原理;計算器;匯編INTRODUCTIONThis course is designed to through the use of emu8086 assembly language programming software to realize complex prog

3、ram design. The content of the course design for the assembly language design a simple calculator, interface display with the keyboard input requirements are two random number, complete the addition, subtraction, multiplication, and division of the operation, and then will operation result shows it.

4、 This design can only easy operation between the positive integer single step add, subtract, multiply and divide operation, can't identify decimal. The result in the division accurate to 3 decimal places, subtraction can display the negative results. Using DOS call (INT 21 H) to complete the inp

5、ut and output, the output string operation. This design practice can further deepen the theoretical knowledge of professional knowledge and learning the understanding and the understanding, make oneself of the design level of knowledge and the application ability and the ability to analyse and solve

6、 questions fully improve.KEYWORDS: Microcomputer principle;calculator;Assembly language簡易計算器的設(shè)計自動*,200911*,陳*1 課程設(shè)計目的與任務(wù)1.1 設(shè)計目的為了使學(xué)生加深對所學(xué)的微機原理知識的理解,培養(yǎng)學(xué)生的專業(yè)素質(zhì),提高其利用微機原理知識處理問題的能力,為今后專業(yè)課程的學(xué)習、畢業(yè)設(shè)計和工作打下良好的基礎(chǔ)。使學(xué)生能比較扎實地掌握微機原理的基礎(chǔ)知識和基本理論,掌握控制系統(tǒng)及有關(guān)設(shè)備的分析、開發(fā)等基本技能,受到必要工程訓(xùn)練、初步的科學(xué)研究方法訓(xùn)練和實踐鍛練,增強分析問題和解決問題的能力,了解微機原理

7、和接口技術(shù)的新發(fā)展。1.2 設(shè)計任務(wù)本次課程設(shè)計有四個任務(wù)可供選擇,這里選擇設(shè)計一個簡易計算器,要求能正確完成加、減、乘、除四則運算。2 基本要求本次課程設(shè)計,1人1題,可以相互討論,但設(shè)計報告由學(xué)生獨立完成,不得互相抄襲。教師的主導(dǎo)作用主要在于指明設(shè)計思路,啟發(fā)學(xué)生獨立設(shè)計的思路,解答疑難問題和按設(shè)計進度進行階段審查。學(xué)生必須發(fā)揮自身學(xué)習的主動性和能動性,主動思考問題、分析問題和解決問題,而不應(yīng)處處被動地依賴指導(dǎo)老師。同學(xué)應(yīng)積極主動的提出問題、解決問題、討論問題,互相幫助和啟發(fā)。學(xué)生在設(shè)計中可以引用所需的參考資料,避免重復(fù)工作,加快設(shè)計進程,但必須和題目的要求相符合,保證設(shè)計的正確。指導(dǎo)教師

8、要引導(dǎo)學(xué)生學(xué)會掌握和使用各種已有的技術(shù)資料,不能盲目地、機械地抄襲資料,必須具體分析,使設(shè)計質(zhì)量和設(shè)計能力都獲得提高。學(xué)生要在老師的指導(dǎo)下制定好自己各環(huán)節(jié)的詳細設(shè)計進程計劃,按給定的時間計劃保質(zhì)保量的完成個階段的設(shè)計任務(wù)。設(shè)計中可邊設(shè)計,邊修改,軟件設(shè)計與硬件設(shè)計可交替進行,問題答疑與調(diào)試和方案修改相結(jié)合,提高設(shè)計的效率,保證按時完成設(shè)計工作并交出合格的設(shè)計報告。3 簡易計算器的設(shè)計設(shè)計一個簡易計算器過程包括:確定功能,畫流程圖,確定算法,編寫程序,程序調(diào)試。設(shè)計工具:個人電腦,emu8086。設(shè)計語言:8086匯編語言3.1 程序設(shè)計流程圖1/2?輸入單字符開始2:第一次輸入字符串09/E?

9、09轉(zhuǎn)換與暫存第二次輸入字符串09/E?09轉(zhuǎn)換與暫存輸入運算符+-*/E?相應(yīng)運算轉(zhuǎn)換與輸出1:輸入字符串a(chǎn)z?az轉(zhuǎn)換與輸出E退出都不是都不是都不是都不是NNN圖1流程圖介紹:進入DOS界面,首先顯示出計算器功能介紹和個人信息,然后界面輸出操提示要求用戶輸入1或者2選擇功能,1表示字母轉(zhuǎn)換功能,2表示計算功能。字母轉(zhuǎn)換功能,只能從小寫向大寫轉(zhuǎn)換,當用戶輸入字母時,先判斷是否為小寫字母,不是則重新進入功能選擇界面,是就開始轉(zhuǎn)換并且顯示在界面大寫。計算功能,提示輸入第一個數(shù),先判斷是否符合要求的數(shù),符合的話再把輸入的數(shù)據(jù)先從十六進制的ASCII碼轉(zhuǎn)換成相應(yīng)的十進制,再轉(zhuǎn)換成有實際意義的十六進制

10、進制,將該十六進制數(shù)存入一個緩沖器單元,對于不符合要求的數(shù)就返回重新輸入第一個數(shù)據(jù)。輸入完第一個數(shù)后,界面再要求操用戶輸進第二個數(shù),同樣的方法判斷再進行轉(zhuǎn)換數(shù)制,在存到緩沖期的下一個單元。這里轉(zhuǎn)換的方法是采用“乘10加次位”的方法。接下來界面再提示用戶輸入“+,-,*,/”其中一個運算符,然后程序進行比較輸入的運算符,然后跳到相應(yīng)的代碼段執(zhí)行相應(yīng)的運算,如果輸入的字符不是運算符就重新輸入運算符。其中,減法運算中,首先比較被減數(shù)與減數(shù)的大小,如果減數(shù)大于被減數(shù)則結(jié)果會是負數(shù),所以,首先顯示出“-”號,再將被減數(shù)與減數(shù)換位,進行減法運算。當完成運算后,因為結(jié)果是十六進制的,所以要進行轉(zhuǎn)換數(shù)制,采用

11、“除10取余倒排列”的方法,最后,就將結(jié)果逐位輸出顯示。3.2 程序基本算法本次計算器計算功能的設(shè)計,關(guān)鍵在于數(shù)制的轉(zhuǎn)換。用戶輸入的是字符串,而在以每個字符的十六進制的ASCII碼存放,為了把字符串轉(zhuǎn)換成有實際數(shù)學(xué)意思的十六進制數(shù),就要首先把ASCII碼先轉(zhuǎn)換成十進制,再把十進制數(shù)轉(zhuǎn)成可以運算的十六進制。例如輸入112,系統(tǒng)存放的是31H、31H、32H,通過減去30H,即可轉(zhuǎn)成1、1、2存放,再把三個數(shù)1、1、2“乘以10加次位”的方法:(1*10+1)*10+2=112 ,把112也就是70H這個結(jié)果放到寄存器里,即可轉(zhuǎn)換成功。只有這樣的數(shù)才可以利用匯編指令進行正確運算。運算完之后采用“除

12、10取余倒排序”的方法,把結(jié)果逐位轉(zhuǎn)換,再加上30H,即可顯示。字母轉(zhuǎn)換部分,實現(xiàn)小寫向大寫轉(zhuǎn)換,只要把相應(yīng)的ASCII碼進行運算就可以,利用這個方法可以實現(xiàn)大小寫互換,這里只是簡單嘗試寫出小寫向大寫轉(zhuǎn)換。例如,a轉(zhuǎn)換成A,a的ASCII碼是41H,而A的是61H,要實現(xiàn)a向A轉(zhuǎn)換,61H減去20H 就可以了。要實現(xiàn)A向a轉(zhuǎn)換,對應(yīng)ASCII碼加上20H即可。3.3 程序源代碼;-; *數(shù)據(jù)段*;-DATA SEGMENT ;-計算器功能信息字符串定義- STR1 DB 0AH,0DH,'*$'STR2 DB 0AH,0DH,' A Simple Calculator

13、$'STR3 DB 0AH,0DH,' function :$' STR4 DB 0AH,0DH,' 1.Letter Conversion$'STR5 DB 0AH,0DH,' 2.Four Operations$'STR6 DB 0AH,0DH,'$' STR7 DB 0AH,0DH,0AH,0DH,' Design by Cheukkin Chan$'STR8 DB 0AH,0DH,'*$' ;-提示字符串變量定義- STR13 DB 0DH,0AH,'Please choos

14、e the function:$' ARRAY6 DW 2 DUP(0) ;保留2個字空間作暫存數(shù)據(jù)計算RESULT1 DB 30 DUP(0),'$' ;保留30個字節(jié)存結(jié)果數(shù)RESULT2 DB 30 DUP(0)'$'-字母轉(zhuǎn)換部分- STR9 DB 0DH,0AH,0DH,0AH,'Letters Conversion $' STR10 DB 0DH,0AH,'Please input the codes:$'STR11 DB 0DH,0AH,'After conversion: $'-四則運算部分

15、- BUFF DB 28 ;允許輸入的最多字符數(shù) DB 0 ;實際輸入的字符數(shù)DB 28 DUP(0) ;保存實際輸入的字符ARRAY1 DB 0DH,0AH,0DH,0AH,'Please enter a number: $'輸入第一個數(shù)字符串說明ARRAY2 DB 0DH,0AH,'Please enter another number: $'輸入第二個數(shù)字符串說明ARRAY3 DB 0DH,0AH,'The result is : $'輸出結(jié)果字符串說明 ARRAY4 DB 0DH,0AH,'The number is wrong,

16、please input again : $'輸入錯誤提示字符串說明STRING DB 0DH,0AH,'Please enter the operation(+,-,*,/) : $' ;運算字符串說明 ARRAY DW 2 DUP(0) ;保留2個字空間作暫存數(shù)據(jù)計算RESULT DB 6 DUP(0),'$' ;保留6個字節(jié)存結(jié)果數(shù)CRLF DB 0DH,0AH,'$' ;顯示結(jié)果時回車,轉(zhuǎn)行說明YUSHU DW 4 DUP(0) DATA ENDS ;-; *代碼段* ;-CODE SEGMENT ASSUME CS:CODE,D

17、S:DATA ;段寄存器說明偽指令START:MOV AX, DATA MOV DS,AX ;往DS段寄存器送數(shù)據(jù)段基址;-輸出計算器的功能相關(guān)信息(調(diào)用9號功能輸出字符串)- MOV DX,OFFSET STR1 MOV AH,9 INT 21H MOV DX,OFFSET STR2 MOV AH,9 INT 21H MOV DX,OFFSET STR3 MOV AH,9 INT 21H MOV DX,OFFSET STR4 MOV AH,9 INT 21H MOV DX,OFFSET STR5 MOV AH,9 INT 21H MOV DX,OFFSET STR6 MOV AH,9 INT

18、 21H MOV DX,OFFSET STR7 MOV AH,9 INT 21H MOV DX,OFFSET STR8 MOV AH,9 INT 21H ;- MOV DX,OFFSET CRLF MOV AH,9 INT 21H ;輸出回車換行 ;-;*功能選擇*;-STAC: MOV DX,OFFSET STR13 ;取STR13偏移地址送進DX MOV AH,9 INT 21H MOV AH,01H INT 21H ;鍵盤輸入單字符 CMP AL,'E' ;比較輸入運算符是否為'E' JZ LAST ;輸入運算符為'E',則跳到LAST處,

19、若不是則繼續(xù)往下執(zhí)行 CMP AL,31H JZ LC ;如果輸入為1,就跳到LC CMP AL,32H JZ INPUT1 ;如果輸入為3,就跳到INPUT1 MOV DX,OFFSET CRLF ;1、2都不是,則回車換行 MOV AH,9 INT 21H JMP STAC ;跳回STAC,重新選擇功能;-;*字母轉(zhuǎn)換* ;-LC: MOV DX,OFFSET STR9 MOV AH,9 INT 21H MOV DX,OFFSET STR10 MOV AH,9 INT 21H MOV DX,OFFSET BUFF ;把緩沖區(qū)BUFF的偏移地址送到DX MOV AH,0AH INT 21H

20、MOV BX,OFFSET BUFF PUSH BX XOR CX,CX MOV CL,BX+1 A1: MOV AL,BX+2 CMP AL,61H ;比較輸入 JB LC ;小于61H跳轉(zhuǎn) CMP AL,7AH JA LC ;大于7AH跳轉(zhuǎn) INC BX LOOP A1 POP BX CALL LCC JMP STAC;-;*四則運算* ;-;*輸入第一個數(shù)*;-;-調(diào)用09號輸出字符串功能,輸出DX內(nèi)容即ARRAY1內(nèi)容 -INPUT1: MOV DX,OFFSET ARRAY1 ;取ARRAY1偏移地址送進DX MOV AH,9 INT 21H ;-調(diào)用0A號輸入字符串功能,輸入內(nèi)容暫

21、存在BUFF緩沖區(qū)- AGAIN1:MOV DX,OFFSET BUFF ;把緩沖區(qū)BUFF的偏移地址送到DX MOV AH,0AH INT 21H ;-判斷輸入的是否符合要求- PUSH AX PUSH BX PUSH CX XOR CX,CX MOV BX,OFFSET BUFF MOV CL,BX+1 ;把輸入的字符數(shù)給CX AA: MOV AL,BX+2 CMP AL,'E' ;比較輸入運算符是否為'E' JZ LAST ;輸入運算符為'E',則跳到LAST處,若不是則繼續(xù)往下執(zhí)行 CMP AL,30H JB Error1 ; AX低于3

22、0H就跳到Error1 CMP AL,39H JA Error1 ;AX高于39H就跳到Error1 INC BXLOOP AA POP CX POP BX POP AX JMP CC1 ;-提示輸入錯誤,重新輸入- Error1: MOV DX,OFFSET ARRAY4 MOV AH,9 INT 21H JMP AGAIN1;- CC1: CALL ASC_HEX ;調(diào)用ASC_HEX子程序 MOV ARRAY,AX ;將第一個數(shù)存到暫存區(qū)ARRAY ;-;*輸入第二個數(shù)*;- MOV DX,OFFSET ARRAY2 MOV AH,9 INT 21H AGAIN2:MOV DX,OFFS

23、ET BUFF MOV AH,0AH INT 21H ;-判斷輸入的是否符合要求- PUSH AX PUSH BX PUSH CX XOR CX,CX MOV BX,OFFSET BUFF MOV CL,BX+1 ;把輸入的字符數(shù)給CX BB: MOV AL,BX+2 CMP AL,'E' ;比較輸入運算符是否為'E' JZ LAST ;輸入運算符為'E',則跳到LAST處,若不是則繼續(xù)往下執(zhí)行 CMP AL,30H JB Error2 ; AX低于30H就跳到Error2 CMP AL,39H JA Error2 ;AX高于39H就跳到Erro

24、r2 INC BXLOOP BB POP CX POP BX POP AX JMP CC2 ;-提示輸入錯誤,重新輸入-Error2: MOV DX,OFFSET ARRAY4 MOV AH,9 INT 21H JMP AGAIN2 ;- CC2: CALL ASC_HEX MOV ARRAY+2,AX ;- ;*輸入運算符*;-INPUT3:MOV AH,09H MOV DX,OFFSET STRING INT 21H ;調(diào)用01號輸入單字符功能,記運算符 MOV AH,01 ;鍵盤輸入單字符(運算符+-*/) INT 21H ;-比較輸入的運算符- CMP AL,'+' ;

25、比較輸入運算符是否為'+' JZ ADD1 ;輸入運算符為'+',則跳到ADD1 處,若不是則繼續(xù)往下執(zhí)行 CMP AL,'-' ;比較輸入運算符是否為'-' JZ SUB2 ;輸入運算符為'-',則跳到SUB2處,若不是則繼續(xù)往下執(zhí)行 CMP AL,'*' ;比較輸入運算符是否為'*' JZ MUL3 ;輸入運算符為'*',則跳到MUL3處,若不是則繼續(xù)往下執(zhí)行 CMP AL,'/' ;比較輸入運算符是否為'/' JZ DIV4 ;輸

26、入運算符為'/',則跳到DIV4處,若不是則繼續(xù)往下執(zhí)行 CMP AL,'E' ;比較輸入運算符是否為'E' JZ LAST ;輸入運算符為'E',則跳到LAST處,若不是則繼續(xù)往下執(zhí)行 JMP INPUT3 ;如果輸入運算不是以上,則從新返回到INPUT3處;-;* 加法運算*;- ADD1: ;-回車,換行顯示- PUSH AX MOV DX,OFFSET ARRAY3 ;取ARRAY3偏移地址送進DX MOV AH,9 INT 21H POP AX MOV AX,ARRAY MOV BX,ARRAY+2 ADD AX,BX

27、CALL HEX_ASC ;調(diào)用HEX_ASC子程序 MOV DX,OFFSET CRLF MOV AH,9 INT 21H ;輸出回車換行 JMP STAC ;-;* 減法運算*;- SUB2: ;-回車,換行顯示- PUSH AX MOV DX,OFFSET ARRAY3 ;取ARRAY3偏移地址送進DX MOV AH,9 INT 21H POP AX MOV AX,ARRAY MOV BX,ARRAY+2 CMP AX,BX JB KK ;比較AX與BX的大小,如果 AX 低于 BX,則跳到 KK SUB AX,BX ;如果AX大于或者等于,則 AX 減 BX CALL HEX_ASC

28、MOV DX,OFFSET CRLF MOV AH,9 INT 21H ;輸出回車換行 JMP STAC ;-負數(shù)處理-KK: SUB BX,AX MOV AX,BX CALL HEX_ASC1 MOV DX,OFFSET CRLF MOV AH,9 INT 21H ;輸出回車換行 JMP STAC;-;* 乘法運算*;-MUL3: ;-回車,換行顯示- PUSH AX MOV DX,OFFSET ARRAY3 ;取ARRAY3偏移地址送進DX MOV AH,9 INT 21H POP AX MOV AX,ARRAY MOV BX,ARRAY+2 MUL BX CALL HEX_ASC MOV

29、 DX,OFFSET CRLF MOV AH,9 INT 21H JMP STAC ;-;* 除法運算*;-DIV4: ;-回車,換行顯示- PUSH AX MOV DX,OFFSET ARRAY3 ;取ARRAY3偏移地址送進DX MOV AH,9 INT 21H POP AX MOV CX,4 MOV AX,ARRAY DIV5: MOV BX,ARRAY+2 MOV DX,0 DIV BX PUSH DX ;保護余數(shù) PUSH CX CALL HEX_ASC POP CX POP DX ;釋放余數(shù) MOV YUSHU,DX CMP CX,4 JNZ YS2 ;CX不等于2就跳轉(zhuǎn)到Y(jié)S2

30、MOV DL,2EH MOV AH,2 ; 輸出小數(shù)點 INT 21H YS2: MOV AX,YUSHU MOV BX,10 MUL BX ;取余數(shù)乘以10繼續(xù)計算,把結(jié)果放到AX LOOP DIV5 MOV DX,OFFSET CRLF MOV AH,9 INT 21H JMP STAC;-返回操作系統(tǒng)- LAST: MOV AH,4CH INT 21H ;-;* ASC_HEX子程序(把ascii碼轉(zhuǎn)換成對應(yīng)的十六進制數(shù));-ASC_HEX PROC XOR CX,CX ;清空CX,CX=0 MOV CL,BUFF1 ;存入字符數(shù) JCXZ ABCD ;如果CX=0,即輸入字符數(shù)為0,跳

31、到ABCD處,返回主程序 PUSH CX ; 保護CX,把CX的值放入棧區(qū) MOV BX,OFFSET BUFF+2 ;取首字符地址 PUSH BX ; 保護BX,把BX的值(首字符地址)放入棧區(qū) L0: SUB BX,30H ;輸入字符即十六進制的ASCII碼轉(zhuǎn)換成相對應(yīng)的十進制碼(09),以BX作為指針 INC BX LOOP L0 POP BX ;釋放原來棧區(qū)的BX的值(首字符地址) MOV AX,0 MOV CH,0 MOV CL,BX-1 ; 取字符數(shù) L1: MOV DX,10 ;十進制轉(zhuǎn)換成二進制 ,以10為基數(shù) MUL DX ADD AL,BYTE PTR BX ; INC B

32、X LOOP L1 POP CX ABCD: RET ;返回主程序ASC_HEX ENDP;-; * HEX_ASC子程序(十六進制轉(zhuǎn)換成相應(yīng)的ascii碼)*;-HEX_ASC PROC MOV SI,OFFSET RESULT ;將RESULT暫存結(jié)果的單元偏移地址送到SI寄存器中 ADD SI,4 ;將源變址指針指到最后一個單元 MOV SI+1,"$" ;預(yù)先放結(jié)束碼,用來后面調(diào)用09號輸出功能的停止 MOV CX,5 ;循環(huán)次數(shù),最多不超過5位十進制數(shù),因為16位二進制數(shù)即4位16進制數(shù)不超過65535HA1: MOV DX,0 ;DX用來放余數(shù)的,所以每次都要清

33、零 MOV BX,10 ;以10為基數(shù) DIV BX ;二進制轉(zhuǎn)換成十進制,除10取余法 ADD DL,30H ;十進制轉(zhuǎn)換成十六進制的ASCII碼 MOV SI,DL ;保存當前位結(jié)果,(先個位、再十位、后百位、倒序!) DEC SI ;指向前一位LOOP HA1 MOV CX,4 ;循環(huán)次數(shù)為4次,對應(yīng)上面的SI所設(shè)的單元數(shù)HA2: INC SI MOV AL,SI CMP AL,30H ;判斷是否為0,若是,則繼續(xù)循環(huán)。 JNZ NOTZEARO ;若不是則跳到NOZEARO,顯示出該字符LOOP HA2 INC SINOTZEARO: ;-09號輸出字符串功能調(diào)用,顯示出內(nèi)容- MOV

34、 DX,SI MOV AH,9 INT 21H RET HEX_ASC ENDP ;-; *減法負數(shù)情況的HEX_ASC1子程序(十六進制轉(zhuǎn)換成相應(yīng)的ascii碼)*;-HEX_ASC1 PROC MOV SI,OFFSET RESULT ;將RESULT暫存結(jié)果的單元偏移地址送到SI寄存器中 ADD SI,4 ;將源變址指針指到最后一個單元 MOV SI+1,"$" ;預(yù)先放結(jié)束碼,用來后面調(diào)用09號輸出功能的停止 MOV CX,5 ;循環(huán)次數(shù),最多不超過5位十進制數(shù),因為16位二進制數(shù)即4位16進制數(shù)不超過65535AB1: MOV DX,0 ;DX用來放余數(shù)的,所以每

35、次都要清零 MOV BX,10 ;以10為基數(shù) DIV BX ;二進制轉(zhuǎn)換成十進制,除10取余法 ADD DL,30H ;十進制轉(zhuǎn)換成十六進制的ASCII碼 MOV SI,DL ;保存當前位結(jié)果,(先個位、再十位、后百位) DEC SI ;指向前一位LOOP AB1 MOV CX,4 ;循環(huán)次數(shù)為4次,對應(yīng)上面的SI所設(shè)的單元數(shù)AB2: INC SI MOV AL,SI CMP AL,30H ;判斷是否為0,若是,則繼續(xù)循環(huán)。 JNZ NOTZEARO1 ;若不是則跳到NOZEARO1,顯示出該字符LOOP AB2 INC SINOTZEARO1: ;- PUSH AX MOV AH,02H

36、MOV DL,'-' ;預(yù)先輸出一個'-'號,表示結(jié)果為負數(shù) INT 21H POP AX ;- MOV DX,SI MOV AH,9 INT 21H RET HEX_ASC1 ENDP ;- ;-LCC子程序-;-LCC PROC XOR CX,CX MOV CL,BX+1 PUSH BX PUSH CXLCC1:MOV AL,BX+2 SUB AL,20H MOV BX+2,AL INC BXLOOP LCC1 MOV BX+2,'$' MOV DX,OFFSET STR11 MOV AH,9 INT 21H POP CX POP BX AD

37、D BX,2 MOV DX,BX MOV AH,9 INT 21H MOV DX,OFFSET CRLF MOV AH,9 INT 21H MOV DX,OFFSET CRLF MOV AH,9 INT 21H RET LCC ENDP CODE ENDS END START3.4 程序調(diào)試功能選擇界面:圖2 圖3如圖2所示,運行程序,首先顯示計算器的相關(guān)信息,主要利用系統(tǒng)功能調(diào)用實現(xiàn)。然后是輸出提示要求用戶通過輸入1或者2選擇功能。字母轉(zhuǎn)換功能功能1可以實現(xiàn)小寫字母向大寫字母的轉(zhuǎn)換,當用戶輸入1會進入圖3界面。提示用戶輸入字母,注意要是小寫,如果輸入不是小寫則會提示重新輸入如圖4所示。輸入正

38、確的小寫字母自動轉(zhuǎn)換并且返回功能選擇。圖4(上) 圖6(下) 圖5(上) 圖7(下)加法運算功能如圖6所示,任意輸入兩個正整數(shù)相加,結(jié)果正確。先輸入第一個數(shù),然后再輸入第二個數(shù),接著輸入運算符,這樣程序就會自動輸出結(jié)果。注意運算兩數(shù)相加的兩個數(shù)不能超過五位數(shù),并且結(jié)果不能超過65535 。減法運算功能如圖7所示,操作方法和加法相同。雖然不可以進行負數(shù)間的運算,但是可以輸出負數(shù),如圖8所示。圖8 圖9乘法運算功能如圖9所示,操作方法和加法相同。除法運算功能如圖10所示,操作方法和加法相同。除法輸出結(jié)果精確到3位小數(shù),但是不會四舍五入,而是直接舍去后面剩下的小數(shù)。如圖11所示。圖10 圖11輸入錯誤提示功能以下述說的前提是:輸入的字

溫馨提示

  • 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

提交評論