版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 圖形變換程序設(shè)計(jì)概述此圖形轉(zhuǎn)換程序主要是運(yùn)用寫顯存的方式去實(shí)現(xiàn)。可以實(shí)現(xiàn)矩形、三角形和圓形的繪制及圖形顏色變換。一、設(shè)計(jì)要求完成一個(gè)圖形變換的程序,系統(tǒng)具有4種可選擇的功能,按字母“y”畫一個(gè)用點(diǎn)組成的圓;按字母“s”畫一個(gè)用不同顏色填充的三角形;按字母“z”畫一個(gè)用不同顏色填充的矩形;按“q”鍵退出。二、設(shè)計(jì)思想(一)、界面掌握程序開頭顯示一行提示信息。鍵盤輸入“y”進(jìn)入畫圓子程序,輸入“s”進(jìn)入畫三角形子程序,輸入“z”進(jìn)入畫矩形子程序。(二)、畫圓通過(guò)寫算法來(lái)確定圓邊點(diǎn)的位置,利用寫像素方式畫出圓邊點(diǎn),用盡量多的點(diǎn)能較完整地表現(xiàn)出一個(gè)圓。算法首選確定圓心位置O(OX,OY),
2、設(shè)置圓半徑為Radius,圓邊任一位置A(X,Y)可由圓心位置和圓半徑及方向角(見(jiàn)下圖)確定。本程序首先設(shè)立也許連續(xù)的多個(gè)數(shù)值(本程序?yàn)?0個(gè))以確定SIN值及其相對(duì)應(yīng)的COS值。A點(diǎn)位置可由以下表達(dá)式確定。 <畫圓算法解圖>X=SIN*Radius+OXY=COS*Radius+OY由A點(diǎn)又可求出與其相關(guān)的三點(diǎn)A,B,B(見(jiàn)上圖)。(三)、畫三角形首先確定開頭位置,然后通過(guò)行數(shù)和列數(shù)的變化一行一行地畫三角形的分解部分。由設(shè)定的字符(本題為“*”)作為填充三角形元素,行數(shù)增1,字符數(shù)加2,依此往上畫能形成三角形。三角形顏色的變換是在已畫好圖的基礎(chǔ)上在圖原位置重畫,但轉(zhuǎn)變相
3、應(yīng)字符的顏色。(四)畫矩形在文本方式下首先利用字符(本題為“*”)的隨光標(biāo)的移動(dòng)而顯示畫一個(gè)矩形框,然后通過(guò)設(shè)置卷屏(本題為下卷)區(qū)域?yàn)榫匦慰騼?nèi)部,轉(zhuǎn)變確定區(qū)域的背景顏色即可完成矩形框的顏色變換。三、程序流程圖(一)、主流程圖 關(guān)鍵代碼;主程序MAIN PROC FARASSUME DS:DATA,SS:STACK,CS:CODESTART:MOV AX,DATAMOV DS,AXINPUT:LEA DX,SYSINFO ;存偏移地址到DXCALL CL_SCREENCALL DISPLAY ;調(diào)用顯示子程序;鍵盤輸入MOV AH,8 ;鍵盤輸入功能號(hào)(無(wú)回顯)INT 21H ;調(diào)用
4、DOS系統(tǒng)中斷;-;依據(jù)AL推斷畫哪個(gè)圖CMP AL,'Y'JZ CIRCLE1CMP AL,'S'JZ TRIANGLE1CMP AL,'Z'JZ TECTANGLE1;-CMP AL,'Q'JE EXIT ;鍵盤輸入'Q'字符,退出CALL ERRORDISJMP INPUTCIRCLE1:CALL CIRCLEMOV AX,3 ;顯示方式INT 10H ;調(diào)用BIOS中斷JMP INPUTTRIANGLE1:CALL TRIANGLEJMP INPUTTECTANGLE1:CALL RECTANGLEJMP
5、INPUTEXIT:CALL CL_SCREENMOV AH,4CH ;退出程序,返回DOSINT 21HMAIN ENDP ;主程序結(jié)束(二)、子程序畫圓流程圖(三)、子程序畫三角形流程圖注:通過(guò)光標(biāo)的行號(hào)列號(hào)的轉(zhuǎn)變來(lái)一行一行地畫三角形的各部分。關(guān)鍵在于每畫一行(寫顯存)在光標(biāo)位置顯示字符的個(gè)數(shù)應(yīng)增加兩個(gè)。讓三角形變色就是重畫一次三角形,字符屬性值BL相應(yīng)地轉(zhuǎn)變。本程序BL從9變到15,三角形顏色從亮藍(lán)變到亮黃。(四)子程序畫矩形流程圖四、程序源代碼RUZHAN MACRO ;定義宏P(guān)USH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIENDM ;結(jié)束宏CHUZ
6、HAN MACRO ;定義宏P(guān)OP DIPOP SIPOP DXPOP CXPOP BXPOP AXENDM ;結(jié)束宏;-DATA SEGMENT ;定義數(shù)據(jù)段SYSINFO DB 'PLEASE CHOOSE THE LETTER Y,S,Z &'DB ' INPUT Q TO QUIT','$'MYINFO DB ' DESIGN BY DAWNY ',
7、0DH,0AH,'$'ERRINFO DB 'CHOOSE ERROR!','$'SINE DW 00,02,03,05,07,09,11,12,14,16 ;用于設(shè)定SIN函數(shù)值0到1DW 17,19,21,23,24,26,28,29,31,33DW 34,36,37,39,41,42,44,45,47,49DW 50,52,53,54,56,57,59,60,62,63DW 64,66,67,68,69,71,72,73,74,75DW 77,78,79,80,81,82,83,84,85,86DW 87,87,88,89,90,91,91
8、,92,93,93DW 94,95,95,96,96,97,97,97,98,98DW 98,99,99,99,99,100,100,100,100DW 100,100MM DW ? ;定義操作數(shù)為字的助記符MM代表像素點(diǎn)的列增量(為正)F_MM DW ? ;定義操作數(shù)為字的助記符MM代表像素點(diǎn)的列增量(為負(fù))NN DW ? ;定義操作數(shù)為字的助記符NN代表像素點(diǎn)的行增量(為正)F_NN DW ? ;定義操作數(shù)為字的助記符NN代表像素點(diǎn)的行增量(為負(fù))OX EQU 120 ;圓中心的列像素OY EQU 240 ;圓中心的行像素RADIUS DW 60 ;圓的半徑COLO
9、UR DB 2 ;圓邊的顏色KK DW 100COUNT DB 90DATA ENDS;-CODE SEGMENT ;定義代碼段;主程序MAIN PROC FARASSUME DS:DATA,SS:STACK,CS:CODESTART:MOV AX,DATAMOV DS,AX;置光標(biāo)位置INPUT:MOV AH,2 ;置光標(biāo)功能號(hào)MOV BH,0 ;頁(yè)號(hào)MOV DH,0 ;行號(hào)MOV DL,20 ;列號(hào)INT 10H ;調(diào)用BIOS中斷LEA DX,SYSINFO ;存偏移地址到DXCALL CL_SCREENCALL DISPLAY ;調(diào)用顯示子程序;鍵盤輸入MOV AH,8 ;鍵盤輸入功能
10、號(hào)(無(wú)回顯)INT 21H ;調(diào)用DOS系統(tǒng)中斷;-;依據(jù)AL推斷畫哪個(gè)圖CMP AL,'Y'JZ CIRCLE1CMP AL,'S'JZ TRIANGLE1CMP AL,'Z'JZ TECTANGLE1;-CMP AL,'Q'JE EXIT ;鍵盤輸入'Q'字符,退出CALL ERRORDISJMP INPUTCIRCLE1:CALL CIRCLEMOV AX,3 ;顯示方式INT 10H ;調(diào)用BIOS中斷JMP INPUTTRIANGLE1:CALL TRIANGLEJMP INPUTTECTANGLE1:C
11、ALL RECTANGLEJMP INPUTEXIT:CALL CL_SCREENMOV AH,4CH ;退出程序,返回DOSINT 21HMAIN ENDP ;主程序結(jié)束;-;子程序,顯示DS中內(nèi)容DISPLAY PROC NEARMOV AH,9INT 21HRETDISPLAY ENDP;-;子程序,顯示錯(cuò)誤信息ERRORDIS PROC NEARRUZHANCONTIUNE:MOV AH,2MOV BH,0MOV DH,12MOV DL,30INT 10HLEA DX,ERRINFO ;存偏移地址到DXCALL CL_SCREENCALL DISPLAY ;調(diào)用顯示子程序;檢驗(yàn)鍵盤狀態(tài)
12、MOV AH,0BH ;功能號(hào),返回參數(shù)ALINT 21HCMP AL,0JE TMP;鍵盤輸入,無(wú)回顯MOV AH,07H ;功能號(hào)INT 21HTMP:JZ CONTIUNECHUZHANRETERRORDIS ENDP;-;子程序,清屏CL_SCREEN PROC NEARRUZHANMOV AH,7 ;卷屏功能號(hào)MOV AL,0 ;初始化屏幕MOV BH,7 ;卷入行屬性,上此處為正常顯示MOV CH,0 ;左上角行號(hào)MOV CL,0 ;左上角列號(hào)MOV DH,24 ;右下角行號(hào)MOV DL,79 ;右下角列號(hào)INT 10HCHUZHANRETCL_SCREEN ENDP;-;子程序,
13、畫圓CIRCLE PROC NEARRUZHAN ;調(diào)用宏,保存寄存器CALL SCREEN ;調(diào)用屏幕子程序MOV COUNT,90MOV SI,OFFSET SINE+89*2 ;轉(zhuǎn)化為用于設(shè)定COS函數(shù)值1到0MOV DI,OFFSET SINEAGAIN:CALL COMPUTE ;調(diào)用計(jì)算圓邊像素點(diǎn)CALL WRITE ;描圓邊SUB SI,2 ;SI與源操作數(shù)相減ADD DI,2 ;DI與源操作數(shù)相加DEC COUNTJNZ AGAIN ;標(biāo)志符ZF不為0跳轉(zhuǎn)CHUZHAN ;調(diào)用宏,恢復(fù)寄存器RETCIRCLE ENDP;-;子程序, 設(shè)置屏幕SCREEN PROC NEARMO
14、V AX,12H ;顯示方式INT 10H ;調(diào)用BIOS中斷MOV AH,0BH ;置彩色調(diào)板MOV BX,0 ;BH為彩色調(diào)色板ID,BL為ID配套使用的顏色I(xiàn)NT 10HRETSCREEN ENDP;-;子程序,計(jì)算圓邊像素點(diǎn)COMPUTE PROC NEARMOV AX,SI ;地址SI所指向內(nèi)容賦給AX,SI+依次得到全部圓邊點(diǎn)MUL RADIUS ;目的操作數(shù)AX與源操作數(shù)RADIUS相乘,結(jié)果放AXDIV KK ;得到圓邊像素點(diǎn)的列位置MOV MM,AXNEG AX ;將AX轉(zhuǎn)化為二進(jìn)制補(bǔ)碼,以求相對(duì)應(yīng)的像素點(diǎn)MOV F_MM,AX ;補(bǔ)碼形式的AX放入F_MMMOV AX,DI
15、MUL RADIUSDIV KK MOV NN,AXNEG AXMOV F_NN,AXRETCOMPUTE ENDP;-;子程序,描點(diǎn)WRITE PROCMOV DX,F_MM ;對(duì)應(yīng)像素列ADD DX,OYMOV CX,NN ;對(duì)應(yīng)像素行ADD CX,OXCALL WR_DOTMOV CX,F_NNADD CX,OXCALL WR_DOTMOV DX,MMADD DX,OYCALL WR_DOTMOV CX,NNADD CX,OXCALL WR_DOTRETWRITE ENDP;-;子程序,寫像素WR_DOT PROCMOV AH,
16、0CH ;寫像素功能號(hào)MOV AL,COLOUR ;顏色值MOV BH,0 ;頁(yè)號(hào)INT 10HRETWR_DOT ENDP;-;子程序,畫三角形TRIANGLE PROC NEARRUZHAN ;保存寄存器MOV BL,9 ;字符屬性,暗藍(lán)GOON:MOV CH,1 ;1代表走,0代表暫停COLOR:MOV AH,0BH ;檢驗(yàn)鍵盤狀態(tài)INT 21HCMP AL,0JNZ AACMP CH,1JNZ COLOR;置光標(biāo)位置MOV CX,1 ;顯示字符個(gè)數(shù)MOV AH,2 ;功能號(hào)MOV BH,0 ;頁(yè)號(hào)MOV DH,6 ;行號(hào)MOV DL,36 ;列號(hào)INT 10HHUATU:MOV AH,
17、2 ;置光標(biāo)INT 10H;在光標(biāo)位置顯示字符和屬性MOV AH,9 ;功能號(hào)MOV BH,0 ;顯示頁(yè)MOV AL,2AH ;字符,'*'INT 10HINC DH ;行數(shù)加1,DOS窗口向下畫DEC DL ;列號(hào)減1,以便形成三角形ADD CX,2 ;每畫一行,顯示字符數(shù)加2個(gè)CMP CX,21 ;畫完為止JNZ HUATUINC BLCMP BL,15JNZ GOONAA: MOV AH,7INT 21HCMP AL,'Q'JNZ BBJMP EEBB: CMP CH,0JZ CCMOV CH,0JMP COLORCC: MOV CH,1JMP COLOR
18、EE: CHUZHAN ;恢復(fù)寄存器RETTRIANGLE ENDP;-;子程序,畫矩形RECTANGLE PROC NEARRUZHAN ;保存寄存器;設(shè)置顯示方式;MOV AH,0;MOV AL,12H;INT 10H;置光標(biāo)初始位置MOV CX,1MOV AH,2MOV BH,0MOV DH,6MOV DL,6INT 10H;光標(biāo)右移,向右畫RIGHT:MOV AH,2 ;置光標(biāo)位置INT 10HMOV AH,9 ;功能號(hào)9,顯示字符和屬性MOV AL,2AH ;字符,'*'MOV BL,0FAH ;字符屬性,背景為白,前景為紅;MOV CX,6INT 10HINC DL
19、 ;列數(shù)增加CMP DL,20JNE RIGHT ;當(dāng)ZF為1時(shí)間標(biāo)連續(xù)右移,為0時(shí)跳轉(zhuǎn)JMP DOWN;光標(biāo)下移,向下畫DOWN:MOV AH,2INT 10HMOV AH,9MOV AL,2AHMOV BL,0FAH;MOV CX,6INT 10HINC DHCMP DH,12JNZ DOWNJMP LEFT;光標(biāo)左移,向左畫LEFT:MOV AH,2INT 10HMOV AH,9MOV AL,2AHMOV BL,0FAH;MOV CX,6INT 10HDEC DLCMP DL,6JNZ LEFTJMP UP;光標(biāo)上移,向上畫UP:MOV AH,2INT 10HMOV AH,9MOV AL
20、,2AHMOV BL,0FAH;MOV CX,6INT 10HDEC DHCMP DH,6JNZ UP;*;矩形框內(nèi)部顏色變化COLOUR2:MOV BH,0MOV BL,0CHANGE2:MOV AH,0BHINT 21HCMP AL,0JNE CCMP BL,0JNE CHANGE2MOV AH,7MOV AL,14MOV CH,7MOV CL,7MOV DH,11MOV DL,19INT 10HCALL DELAY ;調(diào)用延時(shí)子程序ADD BH,0FHCMP BH,0F0HJNZ CHANGE2JMP COLOUR2C: MOV AH,07HINT 21HCMP AL,'Q'JNE DJMP ED:CMP BL,0JE SMOV BL,0JM
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)技醫(yī)院面試題目及答案
- 2026年越秀區(qū)梅花村街社區(qū)衛(wèi)生服務(wù)中心招聘醫(yī)師2-3名歡迎您的加入備考題庫(kù)及完整答案詳解1套
- 特長(zhǎng)班老師申請(qǐng)書
- 國(guó)企時(shí)政面試題目及答案
- 2026年語(yǔ)文語(yǔ)言運(yùn)用能力評(píng)估試卷及答案
- 成人教育教學(xué)設(shè)計(jì)能力測(cè)試試題及答案
- 2026年護(hù)士職業(yè)資格證考試試題及答案
- 全科醫(yī)院面試題目及答案
- 施工現(xiàn)場(chǎng)技術(shù)創(chuàng)新與成本效益方案
- 工地工藝流程優(yōu)化方案
- 通信冬季施工安全培訓(xùn)課件
- 2024SIWOF斯沃電氣火災(zāi)監(jiān)控系統(tǒng)
- 史海啟智心育潤(rùn)心:高中歷史教學(xué)與心理健康教育的融合探索
- 產(chǎn)品推廣項(xiàng)目管理辦法
- (2025秋新版)人教版二年級(jí)數(shù)學(xué)上冊(cè)全冊(cè)教案(教學(xué)設(shè)計(jì))
- 內(nèi)科護(hù)理副高答辯題庫(kù)及答案
- 小學(xué)無(wú)廢校園教學(xué)課件
- 地產(chǎn)公司品牌策劃方案
- 2025年高考真題-化學(xué)(黑吉遼卷) 含答案(黑龍江、吉林、遼寧、內(nèi)蒙古)
- 初三英語(yǔ)閱讀競(jìng)賽含答案
- 中學(xué)生英語(yǔ)詞匯表3500(全)
評(píng)論
0/150
提交評(píng)論