版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
武漢理工大學(xué)《微機(jī)原理與接口技術(shù)》課程設(shè)計(jì)說(shuō)明書(shū)III圖形變換程序設(shè)計(jì)1設(shè)計(jì)意義(1)鞏固和加深課堂所學(xué)知識(shí)。(2)
將課本上的理論知識(shí)和實(shí)際應(yīng)用有機(jī)的結(jié)合起來(lái),培養(yǎng)同學(xué)們分析和解決實(shí)際問(wèn)題的能力。(3)
通過(guò)對(duì)匯編語(yǔ)言程序代碼的閱讀、修改、設(shè)計(jì),理解和掌握復(fù)雜的匯編語(yǔ)言應(yīng)用程序的編程,提高實(shí)踐編程能力。本程序要求按不同的鍵顯示不同的圖形,按“q”鍵退出。實(shí)質(zhì)上通過(guò)做這道題目可以檢查學(xué)生對(duì)匯編語(yǔ)言這門(mén)課程的基本知識(shí)的掌握程度。能用匯編語(yǔ)言熟練地運(yùn)用順序、選擇、循環(huán)三大結(jié)構(gòu),進(jìn)一步掌握各個(gè)指令的功能,特別是轉(zhuǎn)向指令,能夠讓我們熟悉并掌握DOS系統(tǒng)功能調(diào)方法;同時(shí)在程序設(shè)計(jì)過(guò)程中熟悉并掌握各種指令的應(yīng)用,知道編程的具體流程。
只有掌握匯編語(yǔ)言基本編程方法,掌握程序各部分功能及其相互聯(lián)系、相互作用,才能把程序?qū)懗鰜?lái),才能把程序?qū)懞谩?設(shè)計(jì)內(nèi)容2.1程序的內(nèi)容與要求掌握8086匯編語(yǔ)言程序設(shè)計(jì)方法,設(shè)計(jì)一個(gè)圖形變換顯示程序。程序運(yùn)行后,鍵盤(pán)輸入不同進(jìn)行不同處理:(1)輸入‘Q’,顯示‘ThankYou!’并結(jié)束程序;(2)輸入‘E’,顯示一個(gè)用不同顏色填充且?guī)в羞吙虻木匦螆D案;輸入‘F’,顯示一個(gè)用不同顏色填充的圓形圖案。2.2程序運(yùn)行條件 本程序可在DOS,windows98或DOS模擬器上運(yùn)行。所需要工具軟件為MASM5.0及以上版本。3方案設(shè)計(jì)3.1設(shè)計(jì)思路3.1.1顯示字符程序顯示“ThankYou”程序是最易于設(shè)計(jì)的一部分,只需要定義其字符串為字節(jié)型變量,并定義在當(dāng)鍵盤(pán)輸人為‘Q’時(shí)顯示,并退出運(yùn)行即3.1.2顯示圓形首先,定義x為豎線(xiàn)的列值,Y1和Y2分別為豎線(xiàn)的兩端點(diǎn)的行值,并將界面分成LEFT和RIGHT兩部分。在LEFT部分,輸入值為列數(shù)A,給圓的半徑R賦具體值,通過(guò)算法完成下式求得A對(duì)應(yīng)的行值,從而確定Y2,再利用中間變量實(shí)現(xiàn)Y1與Y2的等值,即可畫(huà)出LEFT部分的一條弦。再用宏定義,使A值從0到R,完成弦在0到R上的積分,就形成左半部分的半圓,同理,可完成右半部分的半圓,兩個(gè)半圓整合,便形成圓。圖3-1定義弦圖3-2計(jì)算圓上點(diǎn)的坐標(biāo)3.1.3顯示矩形先確定一點(diǎn),定義為矩形左上角的列號(hào)和行號(hào),即確定了矩形的一個(gè)角點(diǎn)坐標(biāo),再定義其長(zhǎng)度和寬度并賦值,知道左上角角點(diǎn)坐標(biāo)及矩形長(zhǎng)寬,即可畫(huà)出矩形。邊框的設(shè)計(jì)實(shí)際是大小兩個(gè)矩形的重疊形成的,定義第二個(gè)矩形時(shí),其角點(diǎn)及長(zhǎng)寬比之前的尺寸少有增加,酌情而定,設(shè)置輸出時(shí),底層顯示尺寸較大的矩形,上層顯示尺寸較小的矩形,使得上層矩形顯示完整,下層矩形顯示多出來(lái)的部分,即形成邊框,并在輸出顏色是設(shè)置兩個(gè)舉行的色差,從而明顯顯示出邊框。3.2程序流程圖程序流程圖如圖3-3所示圖3-3程序流程圖4程序分解4.1字符顯示程序在設(shè)計(jì)思路中已經(jīng)提到,顯示字符的程序較為簡(jiǎn)單,只需用字節(jié)型變量定義字符串,并定義在接收‘Q’是顯示,并退出運(yùn)行即可。DB0DH,0AH,'Q:display"ThankYou!"andquittoDOS.',0DH,0AHMSGQDB0DH,0AH,'ThankYou!','$'4.2圓形顯示程序(1)利用弦的積分方法,定義宏:LINEMACROX,Y1,Y2 ;畫(huà)列值為x,行值從Y1到Y(jié)2的直線(xiàn)LOCALLL,FIRSTMOVAAAAAMOVAAAAAMOVAAAAAMOVAAAAAJMPAAAAALL:INCAAAAA ;行值加1FIRST:MOVAAAAAINT10H CMPDX,Y2JNZLL ;判斷Y1和Y2是否相等,若相等則完成ENDM(2)定義坐標(biāo):CIRCLEMACROMOVA,0 ;初始化圓的橫坐標(biāo)AGA:CALLAAA ;計(jì)算縱坐標(biāo)的值MOVAAAMOVCL,AADDCX,X0MOVAAA ;右平面弦的列值MOVAAAMOVCL,ANEGCXADDCX,X0 MOVAAA MOVAAA ADDAAAMOVAAA ;弦的上端點(diǎn)的行值MOVAAANEGAAAADDAAA MOVAAA ;弦的下端點(diǎn)的行值LINEAAA LINERIGHT,DOWN,UP ;在右平面畫(huà)弦INCA MOVAL,R計(jì)算縱坐標(biāo)的子程序:SQRTPROCNEAR;計(jì)算行坐標(biāo)MOVMULMOVMOVMULSUBMOVCX,0LAST1:MOVDXINCDSUBAXJCEINCCJMPLEXIT1:MOVH,CX ;計(jì)算結(jié)果保存在H單元內(nèi)RETSQRTENDP4.3矩形程序顯示產(chǎn)生矩形的子程序:RECTANGLEPROCNEARPUSH??PUSH??PUSH??PUSH??PUSH??MOVD??;矩形左上角行號(hào)MOVCX??MOVAL,??MOVDI??;矩形的長(zhǎng)ADDDI,CXMOVSI,??TWID;矩形的寬ADDSI,DXHLINE:MOVC??MNHAGAIN:MOVAHVMOV??INT??INCCXCMP??;是否達(dá)到矩形的長(zhǎng)?JLHA??ADDDX,1CMPD??EPOP??POP??POP??XPOPD??POPAXRETRECTANGLEENDP4.4產(chǎn)生顏色的子程序RANDOMCOLOR??OCNEARPUSH??PUSHBXPUSH??XRANDCOLOR:INAL,40HCMPA??JA??OLORMOVV??,ALPOP??POPBXPOPAXRETRANDOMCOLORENDP4.5屏幕初始化子程序CLSMENUPROCNEARMOV??;設(shè)置屏幕顯示方式MOV?? ;定義成640*48016色圖形模式INT10H LEAB??;顯示菜單MOVAH,13HMOVAL,01MOVC??MOV??MOVBH,0MOV??INT??RETCLSMENUENDP5運(yùn)行結(jié)果顯示5.1矩形輸出顯示輸入‘E’,矩形輸出顯示如圖5-1所示圖5-1(a)矩形輸出顯示程序圖5-1(b)矩形輸出顯示程序5.2圓形輸出顯示輸入‘F’,圓形輸出顯示如圖5-2所示圖5-2(a)圓形輸出顯示圖5-2(b)圓形輸出顯示5.3字符串輸出顯示輸入‘Q’,字符串輸出顯示如圖5-3所示5-3字符串輸出顯示6設(shè)計(jì)過(guò)程中的問(wèn)題在設(shè)計(jì)過(guò)程中出現(xiàn)的最大問(wèn)題,就是開(kāi)始按‘E’后正常顯示矩形,再按‘F’后,在顯示圓的同時(shí),還會(huì)顯示矩形,矩形在底層,再按‘E’,在顯示矩形的同時(shí)還會(huì)顯示圓形,且圓形在底層,運(yùn)行結(jié)果如圖6-1所示。圖6-1(a)錯(cuò)誤運(yùn)行結(jié)果圖6-1(b)錯(cuò)誤運(yùn)行結(jié)果經(jīng)分析,出現(xiàn)該問(wèn)題的原因是沒(méi)有清屏,導(dǎo)致按下一個(gè)鍵,顯示下一個(gè)圖形的時(shí)候,上一個(gè)圖形依舊不會(huì)消失,找到了問(wèn)題所在,之前是由于在設(shè)置輸出時(shí),僅在第一次輸出矩形之前屏幕初始化。修改后,定義屏幕初始化的子程序,在輸出矩形和圓形事,都先有調(diào)用清屏的子程序這一步,是的錯(cuò)誤得以糾正,屏幕初始化子程序的調(diào)用如下:CALLCLSMENU ;屏幕初始化并顯示菜單CALLRAN??????;隨機(jī)產(chǎn)生顏色CALL??;畫(huà)外框矩形CALLCLSMENU ;屏幕初始化并顯示菜單CALLRANDOMCOLOR ;隨機(jī)產(chǎn)生顏色MOV??CIRCLE ;在屏幕上畫(huà)出半徑為R的圓心得體會(huì)本次課程設(shè)計(jì)題目是圖形變換程序設(shè)計(jì)。初次看到題目,沒(méi)有任何的思路,情急之下,心神不定地查了一整天的資料,也沒(méi)有太大的收獲。自己完全局限于課本上所學(xué)的簡(jiǎn)單的語(yǔ)言,但那遠(yuǎn)不足以完成本次課設(shè)的任務(wù)。最后,我決定通過(guò)查閱參考資料,并上網(wǎng)查詢(xún)各種代碼的含義,自己設(shè)計(jì)畫(huà)圖的算法,實(shí)現(xiàn)圖形的顯示。在整個(gè)過(guò)程中,圓的畫(huà)法是最不易的。開(kāi)始參考了別人畫(huà)圓軌跡線(xiàn),從中得到了啟示,做圓上弦的積分由線(xiàn)及面,形成圓面。這次課程設(shè)計(jì)對(duì)我而言,其難度是之前從未有過(guò)的。然而,我還是靠自己的毅力挺了過(guò)來(lái)。在查閱了大量資料后,掌握了簡(jiǎn)單圖形顯示的程序,熟悉了子程序的調(diào)用和doc功能的實(shí)現(xiàn),并初步學(xué)會(huì)了中斷在程序中的應(yīng)用。兩周的匯編語(yǔ)言課程設(shè)計(jì)結(jié)束了,我的收獲是很大的。通過(guò)課程設(shè)計(jì)的編程和對(duì)編程過(guò)程中遇到的問(wèn)題的思考,有效的提高了我對(duì)匯編的認(rèn)識(shí)和理解,切實(shí)提高了我的編程能力,補(bǔ)全了我的不足。值得慶幸的是,這次課程設(shè)計(jì),自己是獨(dú)立完成的,并未參考他人方案。雖然并未有很多設(shè)計(jì)上創(chuàng)新的地方,但對(duì)我來(lái)說(shuō),這是一種突破,自己獨(dú)立解決問(wèn)題的能力進(jìn)一步提高。在今后的課程設(shè)計(jì)中,我依舊要保持這種獨(dú)立思考的習(xí)慣,將自己的短處變?yōu)殚L(zhǎng)處。致謝我本次的課程設(shè)計(jì)是在??老師老師親切關(guān)懷與細(xì)心指導(dǎo)下完成的。從題目的選擇到設(shè)計(jì)的最終完成,??老師始終都給予了我細(xì)心的指導(dǎo)和不懈的支持,并且在耐心指導(dǎo)之余,?????老師仍不忘關(guān)心我們的生活,冷冷寒冬的關(guān)懷讓我們倍感溫暖。值得一提的是,????老師宅心仁厚,閑靜少言,不慕榮利,對(duì)學(xué)生認(rèn)真負(fù)責(zé),在他身上,我們可以感受到一個(gè)學(xué)者的嚴(yán)謹(jǐn)和務(wù)實(shí),這些都讓我們獲益菲淺,并且將終生受用無(wú)窮。畢竟“經(jīng)師易得,人師難求”,希望借此機(jī)會(huì)向???老師表示最衷心的感謝!參考文獻(xiàn)【1】彭虎周佩玲付忠謙.《微機(jī)原理與接口技術(shù)》(第二版)電子工業(yè)出版社2008.3【2】張凡.《微機(jī)原理與接口技術(shù)》(第二版)清華大學(xué)出版社2010.9【3】朱定華.《微機(jī)原理、匯編與接口技術(shù)》清華大學(xué)出版社1010.1【4】牟琦聶建萍.《微機(jī)原理與接口技術(shù)》清華大學(xué)出版社1007.12【5】吳葉蘭.《微機(jī)原理與接口技術(shù)》機(jī)械工業(yè)出版社2009.8附錄;;宏功能:畫(huà)一條豎線(xiàn);啞元意義:x為豎線(xiàn)的列值;Y1和Y2分別為豎線(xiàn)的兩端點(diǎn)的行值;LINEMACROX,Y1,Y2 ;畫(huà)列值為x,行值從Y1到Y(jié)2的直線(xiàn)LOCALLL,FIRSTMOV??MOV?/???MOV/???MOVD/???JMP/???LL:INC/??? ;行值加1FIRST:MOV/???INT10H ;寫(xiě)一個(gè)像素點(diǎn)CMP/???JNZLL ;判斷Y1和Y2是否相等,若相等則完成ENDM;;宏功能:通過(guò)分別在左右平面畫(huà)垂直于x軸的弦來(lái)畫(huà)一個(gè)實(shí)心圓;CIRCLEMACROMOV/??? ;初始化圓的橫坐標(biāo)AGA:CALL/??? ;計(jì)算縱坐標(biāo)的值MOV/???MOV/???ADD/??? ;右平面弦的列值MOVCH,0MOV/???NEGVADDC/??? MOV/??? ;左平面弦的列值MOVDX,H ADD/???MOVV/???NEGDXADD/??? MOV/??? ;弦的下端點(diǎn)的行值LINELEFT,V/??? ;在左平面畫(huà)弦LINE/??? ;在右平面畫(huà)弦INCA ;繼續(xù)畫(huà)其他弦至畫(huà)出圓MOVAL,RCMP/???JNZ/???ENDM;**********************************************************************DATASEGMENTMENUDB0DH,0AH,'Pleasepressakey:',0DH,0AHDB0DH,0AH,'E:showarectangle.'DB0DH,0AH,'F:showacircle.'DB0DH,0AH,'Q:display"ThankYou!"andquittoDOS.',0DH,0AHMENULENEQU$-MENUMSGQDB0DH,0AH,'ThankYou!','$'ROW/???COLUMN/???RECTLENDW/???RECTWIDDWVCOLORDB/???RDB?/???DB? ;存放圓的橫坐標(biāo)A2DW/???HDW/??? ;存放圓的縱坐標(biāo)Y0EQU/??? ;縱坐標(biāo)的行值X0EQU/??? ;橫坐標(biāo)的列值RIGHTDW? ;存放右平面的列值LEFTDW? ;存放左平面的列值UPDW? ;存放上半平面的行值DOWNDW? ;存放下半平面的行值DATAENDS;**********************************************************************CODESEGMENTASSUMEDS:DATA,CS:CODE,ES:DATA;START:MOVA/???MOV/???MOV/???;CALLCLSMENU ;屏幕初始化并顯示菜單WAITPRESS: ;等待按鍵MOV/??? ;接受命令I(lǐng)NT1/???ORA/??? ;轉(zhuǎn)換成小寫(xiě)字母CMPAL,'e'JZDRAWRECTCMPAL/???CMPA/???JZQuitProcJMPW/???DRAWRECT:CALLCLSMENU ;屏幕初始化并顯示菜單CALLR/??? ;隨機(jī)產(chǎn)生顏色CALLRECTANGLE ;畫(huà)外框矩形PUSHV/???/???PUS/???PUSHRECTLENDDROW,8ADD/???SUB/???S/???ADDCOLOR,8CALLR/??? ;畫(huà)內(nèi)部矩形POPREC/???POPR/???POPROWJMPV/???SDRAWCIRC:CALLCLV/??? ;屏幕初始化并顯示菜單CALL/??? ;隨機(jī)產(chǎn)生顏色MOV/???CIRCLE ;在屏幕上畫(huà)出半徑為R的圓JMP/???QuitProc:MOVAL,03MOVAH,0INT/???MOVDX,OFFSETMSGQ ;顯示信息MOV/???INT21HMOV/??? ;返回DOSINT21H;;產(chǎn)生矩形子程序RECTANGLEPROC/???PUSHAXPUSH/???PUSHCXPUSH/???PUSH/???MOVDX,ROW;矩形左上角行號(hào)MOV/???;矩形左上角列號(hào)MOV/???MOV/???;矩形的長(zhǎng)ADDDI,CXMOV/???;矩形的寬ADDSI/???HLINE:MOV/???HAGAIN:MOVAH/???;寫(xiě)像素MOV/???INT/???INC/???CMP/???;是否達(dá)到矩形的長(zhǎng)?JL/???ADD/???CMP/???;是否達(dá)到矩形的寬?JL/???EPOPSI/???DIPOP/???POP/???RETRECTANGLEENDP;;計(jì)算縱坐標(biāo)的值輔助畫(huà)圓子程序SQRTPROC/???;計(jì)算行坐標(biāo)MOVA/???MUL/???MOV/???MOV/???MUL/???SUBA/???MOVCX,0LAST1:MOV/???ADD/???INCDXSUB/???JCEXIT1INCCXJMP/???EXIT1:MOV/??? ;計(jì)算結(jié)果保存在H單元內(nèi)RETSQRTENDP;;隨機(jī)產(chǎn)生顏色子程序RANDOMCOLORPROCNEARPUSH/???PUSHBXPUSH/???RANDCOLOR:IN/???CMP/???JA
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《第5課 讓機(jī)器人轉(zhuǎn)向》說(shuō)課稿教學(xué)反思-2023-2024學(xué)年小學(xué)信息技術(shù)人教版三起01六年級(jí)下冊(cè)
- 有關(guān)6分鐘在校生畢業(yè)典禮致辭5篇
- 餐飲經(jīng)理月工作總結(jié)600字5篇
- 紡織品制門(mén)前擦鞋墊相關(guān)項(xiàng)目建議書(shū)
- 紙桌布項(xiàng)目運(yùn)營(yíng)指導(dǎo)方案
- 胭脂市場(chǎng)環(huán)境與對(duì)策分析
- 可折疊智能手機(jī)市場(chǎng)發(fā)展預(yù)測(cè)和趨勢(shì)分析
- 期中考試動(dòng)員大會(huì)學(xué)生代表演講稿(34篇)
- 修鎖服務(wù)行業(yè)相關(guān)項(xiàng)目經(jīng)營(yíng)管理報(bào)告
- 纖維切斷機(jī)相關(guān)項(xiàng)目實(shí)施方案
- 倉(cāng)儲(chǔ)物流中心物業(yè)安全管理
- 醫(yī)療器械注冊(cè)專(zhuān)員培訓(xùn)
- 期末復(fù)習(xí)重要考點(diǎn)03 《一元一次方程》十大考點(diǎn)題型(熱點(diǎn)題型+限時(shí)測(cè)評(píng))(原卷版)
- 生物丨金太陽(yáng)(25-69C)廣東省2025屆高三10月大聯(lián)考生物試卷及答案
- 車(chē)隊(duì)車(chē)輛掛靠合同模板
- 期中 (試題) -2024-2025學(xué)年人教PEP版英語(yǔ)四年級(jí)上冊(cè)
- 動(dòng)物疫病防治員(高級(jí))理論考試題及答案
- 跨境電商行業(yè)研究框架專(zhuān)題報(bào)告
- 提升初中生英語(yǔ)寫(xiě)作
- 2024年深圳市優(yōu)才人力資源有限公司招考聘用綜合網(wǎng)格員(派遣至吉華街道)高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 高中政治必修四哲學(xué)與文化知識(shí)點(diǎn)總結(jié)
評(píng)論
0/150
提交評(píng)論