版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 匯編語言課程設(shè)計(jì)--四則運(yùn)算計(jì)算器的設(shè)計(jì)
- 匯編語言課程設(shè)計(jì)--實(shí)現(xiàn)加減乘除四則運(yùn)算的計(jì)算器
- 簡單四則運(yùn)算計(jì)算器
- 匯編語言課程設(shè)計(jì)報(bào)告——實(shí)現(xiàn)加減乘除四則運(yùn)算的計(jì)算器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)—十進(jìn)制四則運(yùn)算計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)
- 課程設(shè)計(jì) 長整數(shù)四則運(yùn)算
- c語言課程設(shè)計(jì)報(bào)告-長整數(shù)四則運(yùn)算
- eda課程設(shè)計(jì)--2位十進(jìn)制四則運(yùn)算器電路四則運(yùn)算器
- c語言課程設(shè)計(jì)報(bào)告-長整數(shù)四則運(yùn)算
- 課程設(shè)計(jì) 長整數(shù)四則運(yùn)算
- 匯編語言課程設(shè)計(jì)--簡單計(jì)算器設(shè)計(jì)
- eda課程設(shè)計(jì)之2位十進(jìn)制四則運(yùn)算器電路四則運(yùn)算器
- c語言畢業(yè)課程設(shè)計(jì)報(bào)告-長整數(shù)四則運(yùn)算
- 匯編課程設(shè)計(jì)計(jì)算平臺(tái)長度程序 加減乘除四則運(yùn)算
- 大整數(shù)的四則運(yùn)算課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--長整數(shù)的四則運(yùn)算
- 分?jǐn)?shù)四則運(yùn)算習(xí)題
- 1 四則運(yùn)算 2、四則混合運(yùn)算(有括號(hào))
- eda課程設(shè)計(jì)--2位十進(jìn)制四則運(yùn)算器電路
- eda課程設(shè)計(jì)--2位十進(jìn)制四則運(yùn)算器電路
評(píng)論
0/150
提交評(píng)論