匯編語(yǔ)言課程設(shè)計(jì)報(bào)告——實(shí)現(xiàn)加減乘除四則運(yùn)算的計(jì)算器_第1頁(yè)
已閱讀1頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  匯編語(yǔ)言課程設(shè)計(jì)報(bào)告</p><p>  ( 2013 -- 2014 年度第1 學(xué)期)</p><p>  實(shí)現(xiàn)加減乘除四則運(yùn)算的計(jì)算器</p><p> 專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)</p><p> 學(xué)生姓名</p><p> 班級(jí)</p><p> 學(xué)號(hào)</p>

2、<p> 指導(dǎo)教師</p><p> 完成日期20140101</p><p><b>  目錄</b></p><p>  1 概 述1</p><p>  1.1 設(shè)計(jì)目的1</p><p>  1.2 設(shè)計(jì)內(nèi)容1</p><p><b&

3、gt;  2實(shí)現(xiàn)方法1</b></p><p>  2.1 實(shí)現(xiàn)的目標(biāo)1</p><p>  2.2 主體的功能1</p><p>  2.3 開發(fā)的環(huán)境1</p><p>  3 設(shè)計(jì)方法概要2</p><p>  3.1功能模塊劃分2</p><p><b>

4、;  3.2流程圖3</b></p><p><b>  4詳細(xì)設(shè)計(jì)3</b></p><p><b>  5 程序調(diào)試4</b></p><p>  5.1 調(diào)試方案4</p><p>  5.2 調(diào)試結(jié)果4</p><p><b>  6結(jié)

5、論5</b></p><p><b>  參考文獻(xiàn)6</b></p><p><b>  附 錄7</b></p><p>  附錄 源程序清單7</p><p>  實(shí)現(xiàn)加減乘除四則運(yùn)算的計(jì)算器</p><p>  1 概 述

6、</p><p><b>  1.1 設(shè)計(jì)目的</b></p><p>  本課程設(shè)計(jì)是在學(xué)完教學(xué)大綱規(guī)定的全部?jī)?nèi)容、完成所有實(shí)踐環(huán)節(jié)的基礎(chǔ)上,旨在深化學(xué)生學(xué)習(xí)的匯編語(yǔ)言課程基本知識(shí),進(jìn)一步掌握匯編語(yǔ)言程序設(shè)計(jì)方法,提高分析問題、解決問題的綜合應(yīng)用能力。</p><p><b>  1.2 設(shè)計(jì)內(nèi)容</b></p&g

7、t;<p>  能實(shí)現(xiàn)加、減、乘、除的計(jì)算;該程序接受的是16進(jìn)制數(shù);執(zhí)行時(shí),需要在文件名后直接跟上計(jì)算表達(dá)式,如在命令提示符下執(zhí)行結(jié)果如下:</p><p>  c:\tasm>js 3+2</p><p><b>  5</b></p><p><b>  2實(shí)現(xiàn)方法</b></p>

8、<p><b>  2.1 實(shí)現(xiàn)的目標(biāo)</b></p><p>  本次匯編語(yǔ)言課程設(shè)計(jì)的最終目的是要實(shí)現(xiàn)一個(gè)簡(jiǎn)單加減乘除四則運(yùn)算的計(jì)算器,要求編寫一個(gè)程序,每運(yùn)行一次可執(zhí)行程序,可以實(shí)現(xiàn)數(shù)的加減乘除四則運(yùn)算。比如,十進(jìn)制數(shù)的加減乘除四則運(yùn)算。我們?cè)?jīng)學(xué)習(xí)過兩個(gè)具體數(shù)字進(jìn)行加減法運(yùn)算,但是對(duì)于簡(jiǎn)單計(jì)算器用匯編語(yǔ)言實(shí)現(xiàn)難點(diǎn)在于這兩個(gè)要做運(yùn)算的數(shù)是未知的,是由自己調(diào)用中斷輸入到屏幕上并

9、要用程序存儲(chǔ)起來的數(shù),然后才能對(duì)這兩個(gè)數(shù)進(jìn)行運(yùn)算,而且做的是加法運(yùn)算、減法運(yùn)算乘法運(yùn)算還是除法運(yùn)算也未可知,為此我們還要判斷用戶所輸入的運(yùn)算是四則運(yùn)算中的哪一個(gè)運(yùn)算。此外,運(yùn)算過程中的進(jìn)位或是借位,選擇用什么樣的方式進(jìn)行輸出,如何實(shí)現(xiàn)清屏等也是要解決的問題。</p><p><b>  2.2 主體的功能</b></p><p>  系統(tǒng)分析主要包括設(shè)計(jì)的功能分析和系

10、統(tǒng)的流程,功能分析放在首位,每一個(gè)軟件都要能滿足一定的功能才有使用價(jià)值。根據(jù)功能需求來創(chuàng)建應(yīng)用程序。</p><p><b>  本設(shè)計(jì)的功能如下:</b></p><p>  1、輸入2個(gè)數(shù),先判斷是加減運(yùn)算還是乘除運(yùn)算,再進(jìn)行計(jì)算</p><p>  2、判斷符號(hào)是否為運(yùn)算符</p><p><b>  3

11、、回車為換行符</b></p><p>  4、用十進(jìn)制或十六進(jìn)制輸出運(yùn)算結(jié)果</p><p><b>  2.3 開發(fā)的環(huán)境</b></p><p>  TASM5.0集成環(huán)境</p><p><b>  3 設(shè)計(jì)方法概要</b></p><p><b&g

12、t;  3.1功能模塊劃分</b></p><p>  本題目實(shí)現(xiàn)的模塊圖如圖3-1所示</p><p><b>  圖3-1 概要模塊</b></p><p><b>  界面設(shè)置</b></p><p>  主要實(shí)現(xiàn)確定界面樣式的功能,以菜單形式顯示。</p><

13、p><b>  選擇算法設(shè)置</b></p><p>  用于選擇加、減、乘、除法來進(jìn)行運(yùn)算。</p><p><b>  十進(jìn)制轉(zhuǎn)換設(shè)置</b></p><p>  應(yīng)用十進(jìn)制的轉(zhuǎn)換算法來處理加、減、乘、除法四則運(yùn)算。</p><p><b>  3.2流程圖</b>&

14、lt;/p><p>  圖3.2.1四則運(yùn)算計(jì)算器執(zhí)行過程流程圖</p><p><b>  4詳細(xì)設(shè)計(jì)</b></p><p><b>  4.1 界面設(shè)置</b></p><p>  通過定義數(shù)據(jù)段,利用09H顯示出功能列表。通過定義數(shù)據(jù)段,以字符串的形式輸入每個(gè)提示信息,利用09H鍵盤輸入并回顯命

15、令顯示每一個(gè)功能提示,是計(jì)算器的功能列表有序清晰的顯示在屏幕上。</p><p>  4.2 選擇算法設(shè)置</p><p>  首先選擇要進(jìn)行的四則運(yùn)算,若選擇1,則進(jìn)行加法;若選擇2,則進(jìn)行減法;若選擇3,則進(jìn)行乘法;若選擇4,則進(jìn)行除法。加法:先輸入第一個(gè)小于4位十六進(jìn)制數(shù)存入SI中,在輸入第二個(gè)小于4位十六進(jìn)制數(shù)存入BX中,然后顯示BX 和[SI]中的內(nèi)容相加存在BX中。減法:先輸入

16、第一個(gè)小于4位十六進(jìn)制數(shù)存入SI中,在輸入第二個(gè)小于4位十六進(jìn)制數(shù)存入BX中,然后顯示BX 和[SI]中的內(nèi)容相減存在BX中,然后用NEG來求反,即為第一個(gè)數(shù)減去第二個(gè)數(shù)的差,顯示BX的內(nèi)容即為差。乘法:先輸入第一個(gè)小于4位十六進(jìn)制數(shù)存入SI中,在輸入第二個(gè)小于4位十六進(jìn)制數(shù)存入BX中,把BX的值給AX,然后讓AX乘以[SI],然后再分別將DX,AX中的內(nèi)容賦給BX,接著依次顯示DX,AX的內(nèi)容,即為積。除法:先輸入第一個(gè)小于4位十六進(jìn)

17、制數(shù)存入SI中,在輸入第二個(gè)小于4位十六進(jìn)制數(shù)存入BX中,將[SI]賦給AX作被除數(shù),讓BX作除數(shù),得到的商存放在AX中,余數(shù)放在DX中,然后依次賦給BX,將其依次顯示即為商。</p><p>  4.3 十進(jìn)制轉(zhuǎn)換設(shè)置</p><p>  要完成十進(jìn)制轉(zhuǎn)換成十六,一般采用除十六取余法來完成,其大致過程如下:將待轉(zhuǎn)換的數(shù)除以16得到第一個(gè)商和余數(shù),此第一個(gè)余數(shù)就是所求的十六進(jìn)制數(shù)的各位,再

18、用第一個(gè)商除以16,得到第二個(gè)商和余數(shù),此第二個(gè)余數(shù)就是所求十六進(jìn)制數(shù)的十位,重復(fù)這一過程直至商為0,此時(shí)的余數(shù)就是所求十六進(jìn)制數(shù)的最高位。在內(nèi)存中分配一緩沖區(qū),用來存放以上分離出來的使十進(jìn)制數(shù)的每一位,然后再逐個(gè)轉(zhuǎn)換成ASCII碼,轉(zhuǎn)換成ASCII碼的過程很簡(jiǎn)單,就是給每個(gè)十六進(jìn)制位加上30H即可,最后送顯示器輸出。</p><p><b>  5 程序調(diào)試</b></p>

19、<p><b>  5.1 調(diào)試方案</b></p><p>  對(duì)程序源代碼進(jìn)行功能調(diào)試和功能驗(yàn)證。程序代碼運(yùn)行成功后,分別檢驗(yàn)測(cè)試其加、減、乘、除功能,并對(duì)結(jié)果進(jìn)行分析。當(dāng)用戶選擇0時(shí),輸入Y或N決定是否退出程序。</p><p><b>  5.2 調(diào)試結(jié)果</b></p><p>  輸入數(shù)字進(jìn)行加減乘除

20、運(yùn)算,計(jì)算結(jié)果如下圖所示:</p><p>  測(cè)試結(jié)束后,退出程序,如下圖所示:</p><p><b>  6結(jié)論</b></p><p>  程序的主要功能是實(shí)現(xiàn)四則運(yùn)算,整個(gè)程序中主要分為,輸入算式,加法,減法,乘法,除法和以十進(jìn)制顯示結(jié)果這幾個(gè)部分。通過這次課程設(shè)計(jì),我發(fā)現(xiàn)一個(gè)好的匯編程序不僅要正確可行,還要有健壯性,當(dāng)用戶輸入數(shù)據(jù)非

21、法,使運(yùn)行環(huán)境改變時(shí),程序能恰當(dāng)?shù)刈鞒龇磻?yīng)或進(jìn)行處理,不會(huì)產(chǎn)生莫名其妙的輸出結(jié)果。一個(gè)正確可行的算法如果缺乏健壯性,那么這個(gè)程序也不能算真正的成功。</p><p>  經(jīng)過為期一周的匯編語(yǔ)言課程設(shè)計(jì),親身感受體驗(yàn)敲、改寫程序代碼的樂趣,我對(duì)匯編語(yǔ)言有了較為深入的了解,不僅鞏固了以前在課本上學(xué)到的知識(shí),還學(xué)會(huì)了很多其他東西。通過這次課程設(shè)計(jì),我收獲的不僅僅是課程上的知識(shí)得到實(shí)際應(yīng)用,還有編程的基本習(xí)慣和開發(fā)系統(tǒng)時(shí)

22、應(yīng)注意的流程。作為一個(gè)程序編程人員,要保持清醒的頭腦,以現(xiàn)實(shí)為依據(jù),讓自己的每一行代碼都能實(shí)現(xiàn)自己的意義。由于能力有限,程序還是有不完美的地方。這次的綜合實(shí)驗(yàn)讓我對(duì)匯編有了更深刻的認(rèn)識(shí),對(duì)各種指令有了進(jìn)一步的理解。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 劉其明.匯編語(yǔ)言程序設(shè)計(jì)教程.徐州:中國(guó)礦業(yè)大學(xué)出版社,2010</p&g

23、t;<p>  [2] 錢曉捷.新版匯編語(yǔ)言程序設(shè)計(jì).北京:電子工業(yè)出版社,2007</p><p>  [3] 何小海,嚴(yán)華. 微機(jī)原理與接口技術(shù).北京:科學(xué)出版社,2006</p><p>  [4]沈美明,溫冬嬋. IBM-PC匯編語(yǔ)言程序設(shè)計(jì) [M]. 清華大學(xué)出版社</p><p>  [5]王爽 匯編語(yǔ)言 [M].清華大學(xué)出版社</p

24、><p><b>  附 錄</b></p><p><b>  附錄 源程序清單</b></p><p>  IN16 MACRO ;完成從鍵盤接受二個(gè)數(shù)并轉(zhuǎn)換為十六制數(shù),第一個(gè)數(shù)由SI指向,第二個(gè)數(shù)存放在BX中 </p><p>  LEA DX,PR

25、 ;DX指向PR換行</p><p>  CALL OUTPUT ;</p><p>  LEA DX,INPUT1 ;DX指向INPUT1,提示輸入第一個(gè)數(shù)</p><p>  CALL OUTPUT </p><p>  CALL INPUT ;把輸入的數(shù)存放在BX中</p><p&

26、gt;  LEA SI,RESULT ;SI指向RESULT</p><p>  MOV [SI],BX ;把第一個(gè)十六制數(shù)存入RESULT的第一個(gè)位置</p><p>  LEA DX,PR ;DX指向PR,換行</p><p>  CALL OUTPUT </p><p>  LEA D

27、X,INPUT2 ;DX指向INPUT2,提示輸入第一個(gè)數(shù)</p><p>  CALL OUTPUT </p><p>  CALL INPUT ;把輸入的數(shù)存放在BX中</p><p>  ENDM ;宏結(jié)束</p><p>  DATA SEGMENT ;數(shù)據(jù)

28、段</p><p>  BUF DB ' ',0DH,0AH</p><p>  DB '*------- WELCOME TO CALCULATOR SYSTEM ---------*',0DH,0AH</p><p>  DB '*---1:ADD--2:SUB--3:MUL--4:DIV--0:QUIT---------

29、*',0DH,0AH</p><p>  DB '*---------- 2011*6*21---------------*',0DH,0AH</p><p>  DB 0DH,0AH,'Please input the choose number:','$' </p><p>  INPUT1 DB 

30、9;Please input the first number xiao yu 4 wei:','$'</p><p>  INPUT2 DB 'Please input the second number xiao yu 4 wei:','$'</p><p>  RESULT DW ?,? ;存放鍵盤輸入的兩個(gè)十六制數(shù)

31、</p><p>  WRO DB 'You input the number is wrong,please input again:',0DH,0AH,'$'; </p><p>  PR DB 0DH,0AH,'$' ;將光標(biāo)移到下一行起始位置</p><p>  PR1 DB 'A + B=$

32、9;</p><p>  PR2 DB 'A - B=$'</p><p>  PR3 DB 'A * B=$'</p><p>  PR4 DB 'A / B=$'</p><p>  PR5 DB '......$'</p><p>  PR6 DB

33、'Are you sure exit?(Y/N)$' </p><p>  DATA ENDS ;數(shù)據(jù)段落定義結(jié)束</p><p>  CODE SEGMENT</p><p>  MAIN PROC FAR ;主函數(shù)</p><p>  ASSUME CS:CODE ,DS:DATA</

34、p><p><b>  START:</b></p><p>  MOV AX,DATA</p><p><b>  MOV DS,AX</b></p><p>  LEA DX,BUF ;DX指向BUF換行</p><p>  CALL OUTPUT

35、 ;調(diào)用顯示字符串函數(shù)換行</p><p>  SUB AX,AX ;AX清零</p><p>  CALL CHOOSE ;調(diào)用選擇函數(shù)</p><p>  JMP START ;跳轉(zhuǎn)到START</p><p>  RET </p>&l

36、t;p><b>  MAIN ENDP</b></p><p>  INPUT PROC NEAR ;定義INPUT函數(shù),就是將從鍵盤輸入的數(shù)按原十六進(jìn)制數(shù)存放在BX中</p><p>  MOV BX,0 ;BX清零</p><p><b>  NEWCHAR:</b></p&g

37、t;<p>  MOV AH,1 </p><p>  INT 21H ;接受鍵盤輸入一個(gè)字符</p><p>  CMP AL,0DH ;輸入的字符與回車比較</p><p>  JE EXIT ;是回車就結(jié)束 </p><p>  CMP

38、 AL,'A' ;與A比較</p><p>  JAE H0 ;大于等于就跳轉(zhuǎn)到H0 </p><p>  CMP AL,'0' ;與0比較</p><p>  JAE H1 ;大于等于就跳轉(zhuǎn)到H1 </p><p>

39、;  H0:SUB AL,37H ;由于41-A=37,完成把字母字符轉(zhuǎn)換成對(duì)應(yīng)的十六進(jìn)制數(shù)</p><p>  JMP ADDTO ;跳轉(zhuǎn)到ADDTO</p><p>  H1:SUB AL,30H ;把0到9的字符轉(zhuǎn)換成對(duì)應(yīng)的十六進(jìn)制數(shù)</p><p>  JMP ADDTO ;跳轉(zhuǎn)到ADDTO

40、 </p><p>  ADDTO: </p><p>  MOV CL,4 ;相當(dāng)于讓BX乘以16</p><p>  SHL BX,CL ;將BX邏輯左移</p><p>  MOV AH,0 ;將AX清零</p><

41、p>  ADD BX,AX ;AX+BX送到BX</p><p>  JMP NEWCHAR ;跳轉(zhuǎn)到NEWCHAR,把第二個(gè)輸入的字符存放到BX的第二位</p><p><b>  EXIT: RET</b></p><p>  INPUT ENDP</p><p>  OU

42、TPUT PROC NEAR ;顯示字符串函數(shù)</p><p>  MOV AH,09H</p><p><b>  INT 21H</b></p><p><b>  RET</b></p><p>  OUTPUT ENDP</p><p>  CHOOSE PRO

43、C NEAR ;選擇函數(shù)</p><p>  MOV AH,1 ;從鍵盤接受一個(gè)數(shù)</p><p><b>  INT 21H</b></p><p>  CMP AL,'1' ;與1比較</p><p>  JE YES1 ;等于1就

44、跳轉(zhuǎn)到Y(jié)ES1,進(jìn)行加法</p><p>  CMP AL,'2' ;與1比較</p><p>  JE YES2 ;等于2就跳轉(zhuǎn)到Y(jié)ES2,進(jìn)行減法</p><p>  CMP AL,'3' ;與1比較 </p><p>  JE YES3

45、 ;等于3就跳轉(zhuǎn)到Y(jié)ES2,進(jìn)行乘法</p><p>  CMP AL,'4' ;與1比較</p><p>  JE YES4 ;等于4就跳轉(zhuǎn)到Y(jié)ES2,進(jìn)行除法</p><p>  CMP AL,'0' ;與0比較</p><p>  

46、JE EXIT1 ;等于4就跳轉(zhuǎn)到EXIT1,結(jié)束程序</p><p>  CALL WRONG ;如果不是0到4之間的數(shù)就提示出錯(cuò)</p><p>  EXIT1: LEA DX,PR ;DX指向PR換行</p><p>  CALL OUTPUT </p><p>  LEA DX,PR6

47、 ;DX指向PR6,確認(rèn)是否退出</p><p>  CALL OUTPUT </p><p>  MOV AH,1 ;從鍵盤接受一個(gè)數(shù)</p><p><b>  INT 21H</b></p><p>  CMP AL,'Y' ;與Y比較&

48、lt;/p><p>  JE EXIT0 ;不是Y就看是否為y</p><p>  CMP AL,'y' ;與y比較</p><p>  JNE START ;不是y就跳轉(zhuǎn)到START</p><p>  EXIT0:MOV AH,4CH ;結(jié)束本程序</p&

49、gt;<p><b>  INT 21H</b></p><p>  YES1:CALL JIA ;調(diào)用JIA函數(shù)</p><p>  JMP START ;調(diào)用完之后跳轉(zhuǎn)到START</p><p>  YES2:CALL JIAN ;調(diào)用JIAN函數(shù)</p><p&

50、gt;  JMP START ;調(diào)用完之后跳轉(zhuǎn)到START</p><p>  YES3:CALL CHENG ;調(diào)用CHENG函數(shù)</p><p>  JMP START ;調(diào)用完之后跳轉(zhuǎn)到START</p><p>  YES4:CALL CHU ;調(diào)用CHU函數(shù)</p><p>

51、;  RET </p><p>  CHOOSE ENDP ;選擇函數(shù)結(jié)束</p><p>  WRONG PROC NEAR ;報(bào)錯(cuò)函數(shù)</p><p>  LEA DX,PR ;DX指向PR換行</p><p>  LEA DX,WRO ;DX指向WRO,

52、提示輸入有錯(cuò),請(qǐng)重新輸入</p><p>  JMP START ;跳轉(zhuǎn)到START</p><p><b>  RET </b></p><p>  WRONG ENDP ;報(bào)錯(cuò)函數(shù)結(jié)束</p><p>  JIA PROC NEAR ;加法函數(shù)</p>

53、<p>  IN16 ;調(diào)用宏,接受鍵盤輸入的兩個(gè)十六進(jìn)制數(shù),第一個(gè)數(shù)由SI指向,第二個(gè)數(shù)存放在BX中 </p><p>  ADD BX,[SI] ;把第一個(gè)數(shù)加第二個(gè)數(shù)存放到BX中</p><p>  LEA DX,PR ;DX指向PR,換行</p><p>  CALL OUTPUT

54、 </p><p>  LEA DX,PR1 ;DX指向PR1,顯示‘A + B=’</p><p>  CALL OUTPUT </p><p>  CALL OUTBX ;調(diào)用顯示BX寄存器的內(nèi)容函數(shù)</p><p><b>  RET</b></p><

55、;p>  JIA ENDP ;加法結(jié)束</p><p>  JIAN PROC NEAR ;減法函數(shù)</p><p>  IN16 ;調(diào)用宏,接受鍵盤輸入的兩個(gè)十六進(jìn)制數(shù),第一個(gè)數(shù)由SI指向,第二個(gè)數(shù)存放在BX中 </p><p>  SUB BX,[SI] ;第二個(gè)數(shù)減第一個(gè)數(shù),結(jié)

56、果存放到BX中</p><p>  NEG BX ;對(duì)結(jié)果取反后才是A-B的值,才是第一個(gè)數(shù)減去第二個(gè)數(shù)</p><p>  LEA DX,PR ;DX指向PR,換行</p><p>  CALL OUTPUT </p><p>  LEA DX,PR2 ;DX指向PR2,顯

57、示‘A - B=’</p><p>  CALL OUTPUT </p><p>  CALL OUTBX ;調(diào)用顯示BX寄存器的內(nèi)容</p><p><b>  RET</b></p><p>  JIAN ENDP ;加法函數(shù)結(jié)束</p><p>  

58、CHENG PROC NEAR ;乘法函數(shù)</p><p>  IN16 ;調(diào)用宏,接受鍵盤輸入的兩個(gè)十六進(jìn)制數(shù),第一個(gè)數(shù)由SI指向,第二個(gè)數(shù)存放在BX中 </p><p>  MOV DX,0 ;把DX清零</p><p>  MOV AX,BX ;把第二個(gè)數(shù)賦給AX </p&g

59、t;<p>  MUL WORD PTR[SI] ;AX乘[SI]并把結(jié)果存放到DX,AX中,是字的操作</p><p>  MOV BX,AX ;將AX賦給BX</p><p>  PUSH BX ;將BX壓棧,顯示下面DX的內(nèi)容時(shí)要將DX的值賦給BX</p><p>  PUSH DX

60、 ;將DX壓棧,因?yàn)橄旅嬉獡Q行輸出,會(huì)改變DX的值</p><p>  LEA DX,PR ;DX指向PR,換行輸出</p><p>  CALL OUTPUT </p><p>  LEA DX,PR3 ;DX指向PR3,顯示‘A * B=’</p><p>  CALL OUTPUT

61、 </p><p>  POP DX ;將DX出棧,要將做乘法后DX的內(nèi)容顯示出來</p><p>  MOV BX,DX ;把DX給BX</p><p>  CALL OUTBX ;顯示DX的內(nèi)容</p><p>  POP BX ;將BX出棧<

62、/p><p>  CALL OUTBX ;顯示AX的內(nèi)容</p><p><b>  RET</b></p><p>  CHENG ENDP ;乘法函數(shù)結(jié)束</p><p>  CHU PROC NEAR ;除法函數(shù)</p><p>  IN16

63、 ;調(diào)用宏,接受鍵盤輸入的兩個(gè)十六進(jìn)制數(shù),第一個(gè)數(shù)SI指向,第二個(gè)數(shù)存放在BX中</p><p>  MOV AX,[SI] ;將第一個(gè)數(shù)賦給AX</p><p>  MOV DX,0 ;將DX清零</p><p>  DIV BX ;AX除BX,結(jié)果存放到DX,AX,DX存放余

64、數(shù),AX存放商</p><p>  PUSH DX ;壓棧DX</p><p>  PUSH AX ;壓棧AX</p><p>  LEA DX,PR ;DX指向PR,換行</p><p>  CALL OUTPUT </p><p>  LEA

65、DX,PR4 ;DX指向PR4,顯示‘A / B=’</p><p>  CALL OUTPUT </p><p>  POP AX ;出棧AX</p><p>  MOV BX,AX ;將AX賦給BX,將商給BX</p><p>  CALL OUTBX

66、;顯示AX寄存器的內(nèi)容,即顯示商</p><p>  LEA DX,PR5 ;DX指向PR5,顯示省略號(hào)</p><p>  CALL OUTPUT </p><p>  POP DX ;出棧DX</p><p>  MOV BX,DX ;將DX賦給BX,即將余數(shù)賦給BX,&

67、lt;/p><p>  CALL OUTBX ;顯示DX寄存器的內(nèi)容,顯示余數(shù)</p><p>  RET </p><p>  CHU ENDP ;除法函數(shù)結(jié)束</p><p>  OUTBX PROC NEAR ;顯示BX寄存器的內(nèi)容函數(shù)</p><p>

68、;  MOV CH,4 ;CH等于4</p><p>  ROTATE:MOV CL,4 ;CL等于4</p><p>  ROL BX,CL ;將BX循環(huán)左移4位</p><p>  MOV AL,BL ;將BL賦給AL</p><p>  AND AL,0FH

69、 ;將AL的高位置0</p><p>  ADD AL,30H ;AL+30H可將AL變?yōu)閷?duì)應(yīng)的ASCII的值</p><p>  CMP AL,3AH ;判斷是否是0-9之間</p><p>  JL PRINTIT ;是則跳轉(zhuǎn)到PRINTIT</p><p>  ADD AL,

70、7H ;是A-F再加上7H</p><p>  PRINTIT:MOV DL,AL ;將AL賦給DL</p><p>  MOV AH,2 </p><p>  INT 21H ;顯示AL</p><p>  DEC CH ;CH-1再賦給CH</p&

71、gt;<p>  JNZ ROTATE ;CH!=0則跳轉(zhuǎn)到ROTATE</p><p>  RET ;CH=0則結(jié)束</p><p>  OUTBX ENDP ;顯示寄存器BX內(nèi)容函數(shù)結(jié)束</p><p><b>  CODE ENDS</b></p>

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論