圖形變換程序設(shè)計(jì)_第1頁(yè)
圖形變換程序設(shè)計(jì)_第2頁(yè)
圖形變換程序設(shè)計(jì)_第3頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

圖形變換程序設(shè)計(jì)概述的繪制及圖形顏色變換。一、設(shè)計(jì)要求4種可選擇的功能,按字母“y”畫一個(gè)用點(diǎn)組成的圓;按字母“s”畫一個(gè)用不同顏色填充的三角形;按字母“z”顏色填充的矩形;按“q”鍵退出。二、設(shè)計(jì)思想(一)、界面控制程序開始顯示一行提示信息。鍵盤輸入“y”進(jìn)入畫圓子程序,輸入“s”進(jìn)入畫三角形子程序,輸入“z”進(jìn)入畫矩形子程序。(二)、畫圓較完算法見下圖)(90個(gè)SINθCOSθA點(diǎn)位置可由以下表達(dá)式確定。<畫圓算法解圖>X=SINθ*Radius+OXY=COSθ*Radius+OY由A點(diǎn)又可求出與其相關(guān)的三點(diǎn)A’,B,B’(見上圖)。(三)、畫三角形由設(shè)定的字符(“*”)作為填充三角形元素,行數(shù)增12,依此往上畫能形成三角形。三角形顏色的變換是在已畫好圖的基礎(chǔ)上在圖原位置重畫,但改變相應(yīng)字符的顏色。(四)畫矩形(本題為(本題為下卷即可完成矩形框的顏色變換。三、程序流程圖(一)、主流程圖關(guān)鍵代碼;主程序MAINPROCFARASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVMOVDS,AXINPUT:LEADX,SYSINFO;存偏移地址到DXCALLCL_SCREENCALLDISPLAY;調(diào)用顯示子程序;鍵盤輸入MOVAH,8;鍵盤輸入功能號(hào)(無回顯)INT21H;調(diào)用DOS系統(tǒng)中斷;----------------------------------;根據(jù)AL判斷畫哪個(gè)圖CMPAL,'Y'JZCIRCLE1CMPAL,'S'JZTRIANGLE1CMPAL,'Z'JZTECTANGLE1;----------------------------------CMPAL,'Q'JEEXIT;鍵盤輸入'Q'字符,退出CALLERRORDISJMPINPUTCIRCLE1:CALLCIRCLEMOVAX,3;顯示方式INT10H;BIOSJMPINPUTTRIANGLE1:CALLTRIANGLEJMPINPUTTECTANGLE1:CALLRECTANGLEJMPINPUTEXIT:CALLCL_SCREENMOVAH,4CH;DOSINT21HMAINENDP;主程序結(jié)束(二)、子程序畫圓流程圖(三)、子程序畫三角形流程圖(寫顯存BLBL915,三角形顏色從亮藍(lán)變到亮黃。(四)子程序畫矩形流程圖四、程序源代碼RUZHANMACRO;定義宏P(guān)USHAXPUSHBXPUSHCXPUSHDXPUSHSIPUSHDIENDM;結(jié)束宏CHUZHANMACRO;定義宏P(guān)OPDIPOPSIPOPDXPOPCXPOPBXPOPAXENDM;結(jié)束宏;----------------------------------------------------------DATASEGMENT;定義數(shù)據(jù)段SYSINFODB'PLEASECHOOSETHELETTERY,S,Z&'DB'INPUTQTOQUIT','$'MYINFODB' DESIGNBYDAWNY ',0DH,0AH,'$'ERRINFODB'CHOOSEERROR!','$'SINEDW00,02,03,05,07,09,11,12,14,16;SIN01DW17,19,21,23,24,26,28,29,31,33DW34,36,37,39,41,42,44,45,47,49DW50,52,53,54,56,57,59,60,62,63DW64,66,67,68,69,71,72,73,74,75DW77,78,79,80,81,82,83,84,85,86DW87,87,88,89,90,91,91,92,93,93DW94,95,95,96,96,97,97,97,98,98DW98,99,99,99,99,100,100,100,100DW100,100MMDW?;定義操作數(shù)為字的助記符MM代表像素點(diǎn)的列增量(為正)F_MMDW?定義操作數(shù)為字的助記符MM代表像素點(diǎn)的列增量(為負(fù))NN DW?定義操作數(shù)為字的助記符NN代表像素點(diǎn)的行增量(為正)F_NNDW?定義操作數(shù)為字的助記符NN代表像素點(diǎn)的行增量(為負(fù))OXEQU120;圓中心的列像素OYEQU240;圓中心的行像素RADIUSDW60;圓的半徑COLOURDB2;圓邊的顏色KKDW100COUNTDB90DATAENDS;----------------------------------------------------------CODESEGMENT;定義代碼段;主程序MAINPROCFARASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AX;置光標(biāo)位置INPUT:MOVAH,2;置光標(biāo)功能號(hào)MOVBH,0;頁(yè)號(hào)MOVDH,0;行號(hào)MOVDL,20;列號(hào)INT10H;調(diào)用BIOS中斷LEADX,SYSINFO;存偏移地址到DXCALLCL_SCREENCALLDISPLAY;調(diào)用顯示子程序;鍵盤輸入MOVAH,8;鍵盤輸入功能號(hào)(無回顯)INT21H;調(diào)用DOS系統(tǒng)中斷;----------------------------------;根據(jù)AL判斷畫哪個(gè)圖CMPAL,'Y'JZCIRCLE1CMPAL,'S'JZTRIANGLE1CMPAL,'Z'JZTECTANGLE1;----------------------------------CMPAL,'Q'JEEXIT;鍵盤輸入'Q'字符,退出CALLERRORDISJMPINPUTCIRCLE1:CALLCIRCLEMOVAX,3;顯示方式INT10H;BIOSJMPINPUTTRIANGLE1:CALLTRIANGLEJMPINPUTTECTANGLE1:CALLRECTANGLEJMPINPUTEXIT:CALLCL_SCREENMOVAH,4CH;DOSINT21HMAINENDP;主程序結(jié)束;----------------------------------------------------------;DSDISPLAYPROCNEARMOVAH,9INT21HRETDISPLAYENDP;----------------------------------------------------------;子程序,顯示錯(cuò)誤信息ERRORDISPROCNEARRUZHANCONTIUNE:MOVAH,2MOVBH,0MOVDH,12MOVDL,30INT10HLEADX,ERRINFO;存偏移地址到DXCALLCL_SCREENCALLDISPLAY;調(diào)用顯示子程序;檢驗(yàn)鍵盤狀態(tài)MOVAH,0BH;INT21HCMPAL,0JETMP;鍵盤輸入,無回顯MOVAH,07H;功能號(hào)INT21HTMP:JZCONTIUNECHUZHANRETERRORDISENDP;----------------------------------------------------------;子程序,清屏CL_SCREENPROCNEARRUZHANMOVAH,7;卷屏功能號(hào)MOVAL,0;初始化屏幕MOVBH,7;卷入行屬性,上此處為正常顯示MOVCH,0;左上角行號(hào)MOVCL,0;左上角列號(hào)MOVDH,24;右下角行號(hào)MOVDL,79;右下角列號(hào)INT10HCHUZHANRETCL_SCREENENDP;----------------------------------------------------------;子程序,畫圓CIRCLEPROCNEARRUZHAN;調(diào)用宏,保存寄存器CALLSCREEN;調(diào)用屏幕子程序MOVCOUNT,90MOVSI,OFFSETSINE+89*2COS10MOVDI,OFFSETSINEAGAIN:CALLCOMPUTE;調(diào)用計(jì)算圓邊像素點(diǎn)CALLWRITE;描圓邊SUBSI,2;SI與源操作數(shù)相減ADDDI,2;DI與源操作數(shù)相加DECCOUNTJNZAGAIN;ZF0跳轉(zhuǎn)CHUZHAN;調(diào)用宏,恢復(fù)寄存器RETCIRCLEENDP;----------------------------------------------------------;10H;BIOSMOVAH,0BH;置彩色調(diào)板MOVBX,0;BH為彩色調(diào)色板ID,BL為ID配套使用的顏色I(xiàn)NT10HRETSCREENENDP;----------------------------------------------------------;子程序,計(jì)算圓邊像素點(diǎn)COMPUTEPROCNEARMOVAX,[SISIAX,SI++依次得到所有圓邊點(diǎn)MULRADIUS;AXRADIUSAXDIVKK;得到圓邊像素點(diǎn)的列位置MOVMM,AXNEGAX;將AX轉(zhuǎn)化為二進(jìn)制補(bǔ)碼,以求相對(duì)應(yīng)的像素點(diǎn)MOVF_MM,AX;AXF_MMMOVAX,[DI]MULRADIUSDIVKKMOVNN,AXNEGAXMOVF_NN,AXRETCOMPUTEENDP;----------------------------------------------------------;子程序,描點(diǎn)WRITEPROCMOVDX,F_MM;對(duì)應(yīng)像素列ADDDX,OYMOVCX,NN ;ADDCX,OXCALLWR_DOTMOVCX,F_NNADDCX,OXCALLWR_DOTMOVDX,MMADDDX,OYCALLWR_DOTMOVCX,NNADDCX,OXCALLWR_DOTRETWRITEENDP;----------------------------------------------------------;子程序,寫像素WR_DOTPROCMOVAH,0CH;寫像素功能號(hào)MOVAL,COLOUR;顏色值MOVBH,0;頁(yè)號(hào)INT10HRETWR_DOTENDP;----------------------------------------------------------;子程序,畫三角形TRIANGLEPROCNEARRUZHAN;保存寄存器MOVBL,9;字符屬性,暗藍(lán)GOON:MOVCH,1;1代表走,0代表暫停COLOR:MOVAH,0BH;檢驗(yàn)鍵盤狀態(tài)INT21HCMPAL,0JNZAACMPCH,1JNZMOVCX,1;顯示字符個(gè)數(shù)MOVAH,2;功能號(hào)MOVBH,0;頁(yè)號(hào)MOVDH,6;行號(hào)MOVDL,36;列號(hào)INT10HHUATU:MOVAH,2;置光標(biāo)INT10H;MOVAH,9;功能號(hào)MOVBH,0;顯示頁(yè)MOVAL,2AH;字符,'*'INT10HINCDH;行數(shù)加1,DOS窗口向下畫DECDL;列號(hào)減1,以便形成三角形ADDCX,2;每畫一行,顯示字符數(shù)加2個(gè)CMPCX,21;畫完為止JNZHUATUINCBLCMPBL,15JNZGOONAA:MOVAH,7INT21HCMPAL,'Q'JNZBBJMPEEBB:CMPCH,0JZCCMOVCH,0JMPCOLORCC:MOVJMPCOLOREE:CHUZHAN;恢復(fù)寄存器RETTRIANGLEENDP;----------------------------------------------------------;子程序,畫矩形RECTANGLEPROCNEARRUZHAN;保存寄存器;設(shè)置顯示方式;MOVAH,0;MOVAL,12H;INT10H;置光標(biāo)初始位置MOVCX,1MOVAH,2MOVBH,0MOVDH,6MOVDL,6INT10H;光標(biāo)右移,向右畫RIGHT:MOVAH,2;置光標(biāo)位置INT10HMOVAH,9;9MOVAL,2AH;字符,'*'MOVBL,0FAH;字符屬性,背景為白,前景為紅;MOVCX,6INT10HINCDL;列數(shù)增加CMPDL,20JNERIGHT;當(dāng)ZF為1時(shí)光標(biāo)繼續(xù)右移,為0時(shí)跳轉(zhuǎn)JMPDOWN;光標(biāo)下移,向下畫DOWN:MOVAH,2INT10HMOVAH,9MOVAL,2AHMOVBL,0FAH;MOVCX,6INT10HINCDHCMPDH,12JNZDOWNJMPLEFT;光標(biāo)左移,向左畫LEFT:MOVAH,2INT10HMOVAH,9MOVAL,2AHMOVBL,0FAH;MOVCX,6INT10HDECDLCMPDL,6JNZLEFTJMPUP;光標(biāo)上移,向上畫UP:MOVAH,2INT10HMOVAH,9MOVAL,2AHMOVBL,0FAH;MOVCX,6INT10HDECDHCMPDH,6JNZUP;**********************************************************;COLOUR2:MOVBH,0MOVBL,0CHANGE2:MOVINT21HCMPAL,0JNECCMPBL,0JNECHANGE2MOVAH,7MOVAL,14MOVCH,7MOVCL,7MOVDH,11MOVDL,19INT10HCALLDELAY;調(diào)用延時(shí)子程序ADDBH,0FHCMPBH,0F0HJNZCHANGE2JMPCOLOUR2C:MOVAH,07HINT21HCMPAL,'Q'JNEDJMPED:CMPBL,0

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論