匯編語言課程設(shè)計(jì)--四則運(yùn)算計(jì)算器_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  技術(shù)工程學(xué)院</b></p><p><b>  2013年春季學(xué)期</b></p><p>  匯編語言實(shí)訓(xùn) 課程設(shè)計(jì)</p><p>  題 目: 四則運(yùn)算計(jì)算器 </p><p>  專業(yè)班級(jí): 計(jì)算機(jī)科學(xué)與技術(shù) </p>

2、<p>  姓 名:__ _ </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p><p>  成 績: </p><p>  匯編語言

3、實(shí)訓(xùn) 課程設(shè)計(jì)任務(wù)書</p><p>  題 目: 四則運(yùn)算計(jì)算器 班 級(jí): 11計(jì)算機(jī)科學(xué)與技術(shù)1班 </p><p><b>  題目簡介</b></p><p>  四則運(yùn)算計(jì)算器,主要是為了解決數(shù)學(xué)中的加、減、乘、除四則運(yùn)算的問題。</p><p>  通過該題目的設(shè)計(jì)過程,可以培養(yǎng)

4、學(xué)生結(jié)構(gòu)化程序設(shè)計(jì)的思想,加深對匯編語言基本語言要素和流程結(jié)構(gòu)的理解,針對匯編語言中的重點(diǎn)和難點(diǎn)內(nèi)容進(jìn)行訓(xùn)練,獨(dú)立完成有一定工作量的程序設(shè)計(jì)任務(wù),同時(shí)強(qiáng)調(diào)好的程序設(shè)計(jì)風(fēng)格。得到軟件工程的綜合訓(xùn)練,提高解決實(shí)際問題的能力。</p><p><b>  設(shè)計(jì)任務(wù)</b></p><p>  1、查閱文獻(xiàn)資料,一般在5篇以上;</p><p>  2

5、、要求可以進(jìn)行四則運(yùn)算;</p><p>  3、完成軟件結(jié)構(gòu)設(shè)計(jì)和算法設(shè)計(jì);</p><p>  4、完成系統(tǒng)的軟件開發(fā)和測試工作;</p><p>  5、撰寫設(shè)計(jì)說明書;</p><p><b>  6、做好答辯工作。</b></p><p>  主要內(nèi)容、功能及技術(shù)指標(biāo)</p>

6、<p>  1、實(shí)現(xiàn)功能及指標(biāo):①使用Win32的窗口程序模式,實(shí)現(xiàn)四則運(yùn)算程序的設(shè)計(jì)與開發(fā);②界面友好。</p><p>  2、問題分析及解決方案框架確定:充分地分析和理解問題本身,弄清要求做什么。在確定解決方案框架過程中,綜合考慮系統(tǒng)功能,考慮怎樣使系統(tǒng)結(jié)構(gòu)清晰、合理、簡單和易于調(diào)試。最后確定每個(gè)過程和函數(shù)的簡單功能,以及過程(或函數(shù))之間的調(diào)用關(guān)系,并畫出函數(shù)之間的調(diào)用關(guān)系圖。</p&

7、gt;<p>  3、詳細(xì)設(shè)計(jì)和編碼:定義相應(yīng)的存儲(chǔ)結(jié)構(gòu),確定各個(gè)函數(shù)的算法,并畫出流程圖,在此基礎(chǔ)上進(jìn)行代碼設(shè)計(jì),每個(gè)明確的功能模塊程序一般不超過200行,否則要進(jìn)一步劃分。</p><p>  4、上機(jī)前程序靜態(tài)檢查:上機(jī)前程序靜態(tài)檢查可有效提高調(diào)試效率,減少上機(jī)調(diào)試程序時(shí)的無謂錯(cuò)誤。靜態(tài)檢查主要有兩種途徑:用一組測試數(shù)據(jù)手工執(zhí)行程序;通過閱讀或給別人講解自己的程序而深入全面地理解程序邏輯。把程

8、序中的明顯錯(cuò)誤事先排除。</p><p>  5、程序調(diào)試與測試:采用自底向上,分模塊進(jìn)行,即先調(diào)試低層函數(shù)。能夠熟練掌握調(diào)試工具的各種功能,設(shè)計(jì)測試數(shù)據(jù)確定疑點(diǎn),通過修改程序來證實(shí)它或繞過它。調(diào)試正確后,認(rèn)真整理源程序及其注釋,形成格式和風(fēng)格良好的源程序清單和結(jié)果。</p><p>  6、完成課程設(shè)計(jì)報(bào)告</p><p> ?、?需求和規(guī)格說明:設(shè)計(jì)題目和問題描

9、述:題目要解決的問題是什么;</p><p> ?、?設(shè)計(jì)思路:主要算法思想,程序功能圖,函數(shù)之間的調(diào)用關(guān)系圖;</p><p>  設(shè)計(jì)表示:每個(gè)函數(shù)或過程的功能,列出每個(gè)過程或函數(shù)所調(diào)用的過程或函數(shù),并畫出各函數(shù)的流程圖;</p><p>  詳細(xì)設(shè)計(jì):主要算法的偽代碼;</p><p> ?、?調(diào)試報(bào)告:調(diào)試過程中遇到的主要問題,是如何

10、解決的;對設(shè)計(jì)和編碼的回顧討論和分析;改進(jìn)設(shè)想;經(jīng)驗(yàn)和體會(huì)等;</p><p>  ④ 程序?qū)崿F(xiàn)注釋; </p><p>  ⑤ 附錄:源程序清單和結(jié)果。如果題目規(guī)定了測試數(shù)據(jù),則結(jié)果要求包含這些測試數(shù)據(jù)和運(yùn)行輸出,當(dāng)然還可以含其他測試數(shù)據(jù)和運(yùn)行輸出。</p><p><b>  提交的成果</b></p><p>  

11、1. 設(shè)計(jì)說明書一份,內(nèi)容包括:</p><p>  1) 中文摘要100字;關(guān)鍵詞3-5個(gè);</p><p><b>  2) 前言;</b></p><p>  3) 系統(tǒng)分析(包含需要的系統(tǒng)流程圖);</p><p>  4) 系統(tǒng)總體設(shè)計(jì)(包含總體軟件結(jié)構(gòu)圖、總體數(shù)據(jù)結(jié)構(gòu));</p><p&g

12、t;<b>  5) 詳細(xì)設(shè)計(jì);</b></p><p>  6) 系統(tǒng)測試(包含測試方案、測試用例、測試結(jié)果及軟件可靠性分析);</p><p>  7) 軟件使用說明書(核心界面說明);</p><p>  8) 設(shè)計(jì)總結(jié)、參考文獻(xiàn)、致謝等。</p><p>  2. 刻制光盤一張。</p><p

13、><b>  主要參考文獻(xiàn)</b></p><p>  [1]李敬兆等編.《匯編語言程序設(shè)計(jì)》.合肥:中國科學(xué)技術(shù)大學(xué)出版社,2008.9</p><p>  [2]李敬兆等編.《匯編語言程序設(shè)計(jì)實(shí)驗(yàn)教程及習(xí)題解答》.合肥:中國科學(xué)技術(shù)大學(xué)出版社,2008.9</p><p>  [3]王爽等編.《匯編語言》.北京:清華大學(xué)出版社,200

14、3.5</p><p>  [4]曹加恒等編.《新一代匯編語言課程設(shè)計(jì)》.北京:高等教育出版社,2003.6</p><p>  [5]楊路明等編.《匯編語言程序設(shè)計(jì)》.長沙:中南大學(xué)出版社,2005.8</p><p>  [6]詹仕華等編.《匯編語言程序設(shè)計(jì)》.北京:中國電力出版社,2008.2</p><p>  [7]詹仕華等編.《匯

15、編語言程序設(shè)計(jì)習(xí)題解答及課程設(shè)計(jì)、設(shè)計(jì)輔導(dǎo)》.北京:中國電力出版社,2008.2</p><p>  [8]宋彩莉等編.《匯編語言程序設(shè)計(jì)學(xué)習(xí)指導(dǎo)》.西安:西安交通大學(xué)出版社,2008.2</p><p><b>  摘 要</b></p><p>  匯編語言是一種功能很強(qiáng)的程序設(shè)計(jì)語言,也是利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的語言。匯編

16、語言,作為一門語言,對應(yīng)于高級(jí)語言的編譯器,需要一個(gè)“匯編器”來把匯編語言原文件匯編成機(jī)器可執(zhí)行的代碼。高級(jí)的匯編器如MASM,TASM等等為我們寫匯編程序提供了很多類似于高級(jí)語言的特征,比如結(jié)構(gòu)化、抽象等。在這樣的環(huán)境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經(jīng)類同于高級(jí)語言。現(xiàn)在的匯編環(huán)境已經(jīng)如此高級(jí),即使全部用匯編語言來編寫windows的應(yīng)用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效且需要對機(jī)

17、器硬件精確控制的程序。本次設(shè)計(jì)的簡單計(jì)算器支持簡單的四則運(yùn)算。 </p><p>  關(guān)鍵詞:匯編語言,四則運(yùn)算計(jì)算器,高效,硬件</p><p><b>  目錄</b></p><p><b>

18、;  摘要5</b></p><p><b>  一 系統(tǒng)分析7</b></p><p>  二 系統(tǒng)總體設(shè)計(jì)8</p><p>  2.1 系統(tǒng)總體分析8</p><p>  2.2 主模塊框圖及說明8</p><p><b>  詳細(xì)設(shè)計(jì)10</b>

19、;</p><p>  3.1 主模塊及子模塊說明10</p><p>  3.2 各模塊詳細(xì)設(shè)計(jì)10</p><p><b>  程序調(diào)試19</b></p><p>  4.1運(yùn)行界面如圖19</p><p>  4.2算法的分析19</p><p>  5.

20、3 調(diào)試過程及分析19</p><p><b>  設(shè)計(jì)總結(jié)20</b></p><p><b>  參考文獻(xiàn)21</b></p><p><b>  致謝22</b></p><p><b>  1 系統(tǒng)分析</b></p><

21、;p>  該課程設(shè)計(jì)的任務(wù)是做一個(gè)簡易計(jì)算器,可以實(shí)現(xiàn)加減乘除四則運(yùn)算。我們要解決的問題有:以什么方式輸入數(shù)字、判斷是進(jìn)行什么運(yùn)算、運(yùn)算過程中的進(jìn)位和借位問題以及如何實(shí)現(xiàn)清屏等問題。</p><p>  本次設(shè)計(jì)的簡單計(jì)算器,主要是為了解決數(shù)學(xué)中的加、減、乘、除四則運(yùn)算的問題。由于在設(shè)計(jì)過程中考慮到了可能會(huì)多次計(jì)算數(shù)據(jù),為此本次課程設(shè)計(jì)我設(shè)計(jì)的這個(gè)簡單計(jì)算器可以一次運(yùn)行,多次使用。本程序使用了函數(shù)和宏混用的

22、方式實(shí)現(xiàn)了代碼的較好的可讀性,使程序看起來結(jié)構(gòu)嚴(yán)謹(jǐn)。</p><p><b>  2 系統(tǒng)總體設(shè)計(jì)</b></p><p>  2.1 系統(tǒng)總體分析</p><p>  本次設(shè)計(jì)的簡單計(jì)算器,主要是為了解決數(shù)學(xué)中的加、減、乘、除四則運(yùn)算的問題。由于在設(shè)計(jì)過程中考慮到了可能會(huì)多次計(jì)算數(shù)據(jù),為此本次課程設(shè)計(jì)我設(shè)計(jì)的這個(gè)簡單計(jì)算器可以一次運(yùn)行,多次使

23、用。本程序使用了函數(shù)和宏混用的方式實(shí)現(xiàn)了代碼的較好的可讀性,使程序看起來結(jié)構(gòu)嚴(yán)謹(jǐn)。</p><p>  2.2 主模塊框圖及說明</p><p>  本程序的功能結(jié)構(gòu)圖如圖2-1:</p><p>  圖 2-1 功能結(jié)構(gòu)圖</p><p>  程序流程圖如圖2-2:</p><p><b>  3詳細(xì)設(shè)計(jì)&

24、lt;/b></p><p>  3.1 主模塊及子模塊說明</p><p>  主模塊:主要完成程序的主體框架結(jié)構(gòu),提供人-程序的交互。</p><p>  子模塊:主要完成對數(shù)據(jù)的加工,處理。</p><p>  3.2 各模塊詳細(xì)設(shè)計(jì)</p><p><b>  主模塊:</b><

25、;/p><p>  首先提供一個(gè)主界面,提示用戶按要求輸入具體的數(shù)據(jù)和所要進(jìn)行的操作,輸入完畢后給出結(jié)果。如果輸入過程中發(fā)現(xiàn)非法輸入,則立即給與提示,程序自動(dòng)刷新界面,提示繼續(xù)輸入。整個(gè)過程按“ESC”結(jié)束。流程圖如下圖4-1:</p><p><b>  N </b></p><p><b>  Y</b></p>

26、;<p>  圖3-1 主模塊流程圖</p><p><b>  代碼如下:</b></p><p>  CURS MACRO A,B </p><p>  MOV AH,2 ;置光標(biāo)位置 </p><p>  MOV BH,0 ;頁號(hào)為0 </p><p>  MOV DH,A ;

27、設(shè)置光標(biāo)的坐標(biāo)為(A.B) </p><p><b>  MOV DL,B </b></p><p>  INT 10H ;BIOS調(diào)用 </p><p><b>  ENDM </b></p><p>  ;------------------------------- </p>&

28、lt;p>  DISPMSG MACRO MESSAGE </p><p>  LEA DX,MESSAGE ;傳遞MESSAGE的偏移地址 </p><p>  MOV AH,9 ;顯示字符串 </p><p>  INT 21H ;DOS調(diào)用 </p><p><b>  ENDM </b></p>

29、<p>  ;---------------------------------- </p><p>  CLEAR MACRO COLOR ;清屏 </p><p>  MOV AH,6 ;屏幕初始化 </p><p>  MOV AL,0 ;頁號(hào) </p><p>  MOV CH,0 ;設(shè)置左上角的坐標(biāo)為(0,0) <

30、;/p><p><b>  MOV CL,0 </b></p><p>  MOV DL,100 ;設(shè)置右上角的坐標(biāo)為(100,100) </p><p>  MOV DH,100 </p><p>  MOV BH,COLOR ;卷入行屬性 </p><p>  INT 10H ;BIOS調(diào)用 &l

31、t;/p><p><b>  ENDM </b></p><p>  .MODEL SMALL </p><p><b>  .STACK </b></p><p>  .DATA ;數(shù)據(jù)段定義 </p><p>  MSG0 DB '* * * * * * * * *

32、* * * * * * * * * * *',0DH,0AH ;,0dh,0ah,0dh,0ah </p><p>  DB ' * *',0DH,0AH </p><p>  ;db '* *',0dh,0ah </p><p>  ;db '* *',0dh,0ah </p><p>

33、;  DB ' * --------caculater-------- *',0DH,0AH ;,0dh,0ah,0dh,0ah </p><p>  DB ' * *',0DH,0AH </p><p>  DB ' * *',0DH,0AH </p><p>  DB ' * *',0DH,0AH

34、</p><p>  DB ' * NUM1:' </p><p>  DB ' *',0DH,0AH ;,0dh,0ah,0dh,0ah,0dh </p><p>  DB ' * *',0DH,0AH </p><p>  DB ' * *',0DH,0AH </p&g

35、t;<p>  DB ' * *',0DH </p><p>  DB ' * NUM2:' </p><p>  DB ' *',0DH,0AH ;,0dh,0ah,0dh,0ah,0dh </p><p>  DB ' * *',0DH,0AH </p><p>

36、;  DB ' * *',0DH,0AH </p><p>  DB ' * *',0DH </p><p>  DB ' * RESULT:' </p><p>  DB ' *',0DH,0AH,0DH ;,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh </p

37、><p>  DB ' * *',0DH,0AH </p><p>  DB ' * *',0DH,0AH </p><p>  DB ' * *',0DH,0AH </p><p>  DB ' * *',0DH,0AH </p><p>  DB '

38、; * *',0DH,0AH </p><p>  DB ' * * * * * * * * * * * * * * * * * * * *','$' </p><p>  MSG1 DB 'choose +,-,*,/','$' </p><p>  MSG2 DB 'you choo

39、se wrong','$',0AH,0DH </p><p>  MSG3 DB 'Press ESC to Exit!',0DH,0AH,'$' </p><p>  MSG4 DB 'Press any key to continue!',0DH,0AH,'$' </p><p&

40、gt;  MSG5 DB '-','$' </p><p>  MSG6 DB '.','$' </p><p>  MSG7 DB 'error input!','$' </p><p>  MSG8 DB 'data2 is wrong!','

41、$' </p><p>  NUM1 DW ? </p><p>  NUM2 DW ? </p><p><b>  子模塊:</b></p><p>  完成對數(shù)據(jù)的進(jìn)一步加工處理,轉(zhuǎn)換格式并得出結(jié)果。首先根據(jù)輸入調(diào)用對應(yīng)的“+”、“-”、“*”、“/”四大函數(shù)模塊,這是本程序的核心模塊,其他部分的一些小模塊

42、都是為這幾大模塊服務(wù)的,大致的流程圖如下圖3-2:</p><p><b>  N</b></p><p><b>  Y</b></p><p>  圖3-2 子模塊流程圖</p><p><b>  代碼如下:</b></p><p>  BEGI

43、N PROC NEAR </p><p>  BACK: CLEAR 1EH </p><p>  CURS 2,20 ;設(shè)置光標(biāo)為(2.20) </p><p>  DISPMSG MSG0 ;顯示用戶界面 </p><p>  CURS 8,41 ;設(shè)置光標(biāo)為(8,41) ,第一行 </p><p><b&g

44、t;  MOV BX,0 </b></p><p><b>  MOV CX,2 </b></p><p>  NEWCHAR1: </p><p>  MOV AH,1 ;鍵盤輸入并回顯 </p><p>  INT 21H ;DOS調(diào)用 </p><p>  CMP AL,30H

45、;檢查輸入的字符是不是數(shù)字 </p><p>  JAE J1 ;如果不是,則轉(zhuǎn)移至J1 </p><p>  JMP D2 ;是,轉(zhuǎn)移到D2執(zhí)行 </p><p>  J1: CMP AL,39H ; 與9的ASCII比較 </p><p>  JBE J2 ;如果輸入的字符是0-9,則轉(zhuǎn)移至J2 </p><p>

46、  JMP D2 ;如果不是數(shù)字,則轉(zhuǎn)移至D2 </p><p>  J2: SUB AL,30H </p><p>  CBW ;AL的內(nèi)容符號(hào)擴(kuò)展到AH </p><p>  XCHG AX,BX </p><p>  MOV DI,10 </p><p><b>  MUL DI </b>&

47、lt;/p><p>  XCHG AX,BX </p><p>  ADD BX,AX </p><p>  LOOP NEWCHAR1 </p><p>  MOV NUM1,BX </p><p>  CURS 11,41 ;設(shè)置光標(biāo)位為(11,40),第二行 </p><p><b>

48、;  MOV BX,0 </b></p><p><b>  MOV CX,2 </b></p><p>  NEWCHAR2: </p><p>  MOV AH,1 ;鍵盤輸入并回顯 </p><p>  INT 21H ;DOS調(diào)用 </p><p>  CMP AL,30H ;

49、與0的ASCII碼比較 </p><p>  JAE J3 ;如果輸入數(shù)字大于等于0則跳轉(zhuǎn)至J3 </p><p><b>  JMP D2 </b></p><p>  J3: CMP AL,39H ;與9比較 </p><p>  JBE J4 ;如果小于或等于9則跳轉(zhuǎn) </p><p>  

50、JMP D2 ;如果輸入不是數(shù)字則跳轉(zhuǎn) </p><p>  J4: SUB AL,30H ;如果輸入不是0-9,則轉(zhuǎn)化成相應(yīng)的字符 </p><p>  CBW ;將AL符號(hào)擴(kuò)展到AH </p><p>  XCHG AX,BX </p><p>  MOV DI,10 </p><p><b>  MUL

51、 DI </b></p><p>  XCHG AX,BX </p><p>  ADD BX,AX </p><p>  LOOP NEWCHAR2 </p><p>  MOV NUM2,BX </p><p>  MOV AX,NUM1 </p><p>  MOV BX,NU

52、M2 </p><p><b>  PUSH AX </b></p><p><b>  PUSH BX </b></p><p>  CURS 15,33 ;設(shè)置光標(biāo)的位置為(15.33),第三行 </p><p>  DISPMSG MSG1 ;顯示提示信息 </p><p&

53、gt;  MOV AH,1 ;接受鍵盤輸入并回顯 </p><p>  INT 21H ;DOS調(diào)用 </p><p>  CMP AL,'+' </p><p>  JE ADDI ;如果運(yùn)算符為+,則計(jì)算兩數(shù)之和 </p><p>  CMP AL,'-' </p><p>  JE

54、 SUBT ;如果運(yùn)算符為-,則計(jì)算兩數(shù)之差 </p><p>  CMP AL,'*' </p><p>  JE MULT ;如果運(yùn)算符為*,則計(jì)算兩數(shù)之積 </p><p>  CMP AL,'/' </p><p>  JE DIVI ;如果運(yùn)算符為/,則計(jì)算兩數(shù)之商 </p><p

55、>  CURS 16,25 ;設(shè)置光標(biāo)為(16,25) </p><p>  DISPMSG MSG2 ;在屏幕上輸出提示信息 </p><p><b>  JMP D1 </b></p><p>  ;---------------------------------------- </p><p>  ;ADD

56、 THE TWO DATAS </p><p>  ADDI: POP BX </p><p><b>  POP AX </b></p><p>  ADD AX,BX ;計(jì)算兩數(shù)字之和 </p><p><b>  PUSH AX </b></p><p>  CURS

57、14,41 ;設(shè)置光標(biāo)位置為(14,41) </p><p><b>  POP AX </b></p><p>  CALL CHANGE ;將結(jié)果轉(zhuǎn)換為十進(jìn)制數(shù) </p><p><b>  JMP D1 </b></p><p>  SUBT: POP BX </p><p

58、><b>  POP AX </b></p><p>  CMP AX,BX ;比較兩數(shù)大小 </p><p>  JAE D0 ;如果AX>=BX則跳轉(zhuǎn) </p><p>  XCHG AX,BX </p><p><b>  PUSH AX </b></p><p

59、><b>  PUSH BX </b></p><p>  CURS 14,40 ;設(shè)置光標(biāo)位置為(14,40) </p><p>  DISPMSG MSG5 ;在屏幕上顯示負(fù)號(hào) </p><p><b>  POP BX </b></p><p><b>  POP AX <

60、;/b></p><p>  D0: SUB AX,BX ;計(jì)算兩數(shù)之差 </p><p><b>  PUSH AX </b></p><p>  CURS 14,41 ;設(shè)置光標(biāo)位置為(14,41) </p><p><b>  POP AX </b></p><p&g

61、t;  CALL CHANGE ;將結(jié)果轉(zhuǎn)換為十進(jìn)制數(shù) </p><p><b>  JMP D1 </b></p><p>  MULT: POP BX </p><p><b>  POP AX </b></p><p>  MUL BX ;計(jì)算兩數(shù)之積 </p><p>

62、;<b>  PUSH AX </b></p><p>  CURS 14,41 ;設(shè)置光標(biāo)位置為(14,41) </p><p><b>  POP AX </b></p><p>  CALL CHANGE ;將結(jié)果轉(zhuǎn)換為十進(jìn)制數(shù) </p><p><b>  JMP D1 </

63、b></p><p>  DIVI: POP BX </p><p><b>  POP AX </b></p><p>  CMP BX,0 ;判斷除數(shù)是否為0 </p><p>  JE ERROR ;如果是0則跳轉(zhuǎn) </p><p><b>  CWD </b>&

64、lt;/p><p>  DIV BX ;計(jì)算兩數(shù)之商 </p><p><b>  PUSH DX </b></p><p><b>  PUSH AX </b></p><p>  CURS 14,41 ;設(shè)置光標(biāo)位置為(14,41) </p><p><b>  P

65、OP AX </b></p><p>  CALL CHANGE ;將十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) </p><p><b>  POP DX </b></p><p><b>  CMP DX,0 </b></p><p>  JNE LOP ;如果DX不等于0則跳轉(zhuǎn) </p>

66、<p><b>  JMP D1 </b></p><p>  LOP: MOV CX,4 ;設(shè)置精確度為小數(shù)點(diǎn)后4位 </p><p><b>  PUSH DX </b></p><p>  DISPMSG MSG6 ;輸出小數(shù)點(diǎn) </p><p><b>  POP D

67、X </b></p><p>  CON: PUSH BX </p><p>  MOV AX,DX </p><p>  MOV BX,10 </p><p><b>  MUL BX </b></p><p><b>  POP BX </b></p&g

68、t;<p>  CWD ;將AX的內(nèi)容符號(hào)擴(kuò)展到雙字 </p><p>  DIV BX ;計(jì)算小數(shù)點(diǎn)后每一位的數(shù)字 </p><p><b>  PUSH DX </b></p><p><b>  PUSH CX </b></p><p>  CALL CHANGE ;將十六進(jìn)制數(shù)

69、轉(zhuǎn)化為十進(jìn)制數(shù) </p><p><b>  POP CX </b></p><p><b>  POP DX </b></p><p>  CMP DX,0 ;判斷是否已經(jīng)計(jì)算到小數(shù)點(diǎn)后第六位 </p><p>  JE D1 ;如果是,則跳轉(zhuǎn) </p><p>  LOO

70、P CON ;如果不是,就繼續(xù)計(jì)算 </p><p>  ERROR: CURS 15,33 ;設(shè)置光標(biāo)位置為(15,33) </p><p>  DISPMSG MSG8 ;提示出錯(cuò) </p><p><b>  D1: RET </b></p><p>  D2: PUSH AX </p><p&

71、gt;<b>  PUSH BX </b></p><p>  CURS 15,33 ;設(shè)置光標(biāo)位置為(15,33) </p><p>  DISPMSG MSG7 ;提示輸入出錯(cuò) </p><p><b>  POP BX </b></p><p><b>  POP AX </b

72、></p><p><b>  RET </b></p><p>  BEGIN ENDP</p><p><b>  4.程序調(diào)試</b></p><p><b>  4.1運(yùn)行界面如圖</b></p><p>  在NUM1這一行會(huì)提示輸入第一

73、個(gè)數(shù)據(jù),NUM2這一行提示輸入第二個(gè)數(shù)據(jù),輸入完成兩個(gè)數(shù)據(jù)后程序會(huì)提示允許輸入運(yùn)算符,輸入無誤后在RESULT行顯示結(jié)果。</p><p><b>  4.2算法的分析</b></p><p>  本程序使用了宏和函數(shù)調(diào)用的方法,這樣做使得整個(gè)程序體看上去嚴(yán)謹(jǐn),舒服。整個(gè)程序中的CHANGE子程序,將十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。BEGIN子程序開始運(yùn)算。DISPMSG子

74、程序,顯示用戶界面。通過這幾個(gè)及程序的協(xié)助,使得這個(gè)系統(tǒng)可以正常的運(yùn)行。</p><p>  4.3 調(diào)試過程及分析</p><p>  編寫完代碼后分別點(diǎn)擊按鈕“C”,”L”,”R”,依次完成編譯、連接和運(yùn)行過程,也可以進(jìn)入DOS環(huán)境下用DEBUG命令完成類似的功能,整個(gè)程序按“ESC”退出。</p><p><b>  設(shè)計(jì)總結(jié)</b>&l

75、t;/p><p>  經(jīng)調(diào)試,基本上任務(wù)要求設(shè)計(jì)的所有功能都實(shí)現(xiàn),調(diào)試出的計(jì)算結(jié)果均正確。一周的課程設(shè)計(jì)結(jié)束了,給我的總體感覺就是忙碌但充實(shí),而且真正學(xué)到了東西。程序的主要功能是實(shí)現(xiàn)四則運(yùn)算,整個(gè)程序中主要分為,輸入算式,加法,減法,乘法,除法和以十進(jìn)制顯示結(jié)果這幾個(gè)部分</p><p>  本程序基本實(shí)現(xiàn)了四則運(yùn)算的功能,但還沒能實(shí)現(xiàn)帶有括號(hào)的四則運(yùn)算,還有在除法運(yùn)算中不能運(yùn)算較大的數(shù),會(huì)產(chǎn)

76、生溢出現(xiàn)象</p><p>  一開始的時(shí)候自己編出來的程序有很多問題,尤其是在循環(huán)程序上,因此查閱了不少資料,也請教了好幾個(gè)同學(xué)幫著修改,調(diào)試了好久才能正常運(yùn)行。由于能力有限,程序還是有不完美的地方。這次的綜合實(shí)驗(yàn)讓我對匯編有了更深刻的認(rèn)識(shí),對各種指令有了進(jìn)一步的理解。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]

77、李敬兆等編.《匯編語言程序設(shè)計(jì)》.合肥:中國科學(xué)技術(shù)大學(xué)出版社,2008.9</p><p>  [2]李敬兆等編.《匯編語言程序設(shè)計(jì)實(shí)驗(yàn)教程及習(xí)題解答》.合肥:中國科學(xué)技術(shù)大學(xué)出版社,2008.9</p><p>  [3]王爽等編.《匯編語言》.北京:清華大學(xué)出版社,2003.5</p><p>  [4]曹加恒等編.《新一代匯編語言課程設(shè)計(jì)》.北京:高等教育出

78、版社,2003.6</p><p>  [5]楊路明等編.《匯編語言程序設(shè)計(jì)》.長沙:中南大學(xué)出版社,2005.8</p><p>  [6]詹仕華等編.《匯編語言程序設(shè)計(jì)》.北京:中國電力出版社,2008.2</p><p>  [7]詹仕華等編.《匯編語言程序設(shè)計(jì)習(xí)題解答及課程設(shè)計(jì)、設(shè)計(jì)輔導(dǎo)》.北京:中國電力出版社,2008.2</p><p

79、>  [8]宋彩莉等編.《匯編語言程序設(shè)計(jì)學(xué)習(xí)指導(dǎo)》.西安:西安交通大學(xué)出版社,2008.2</p><p><b>  致謝</b></p><p>  本次課程設(shè)計(jì)的成功完成,我首先感謝我的指導(dǎo)老師**,他自始至終都給予了我莫大的幫助,正是在**老師的悉心指導(dǎo)下我才能順利完成本次課程設(shè)計(jì)中的每一個(gè)計(jì)劃。在這次課程設(shè)計(jì)中,無論從課題選擇,方案論證上,還是到具體

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論