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

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)微機(jī)原理與接口技術(shù)課程設(shè)計(jì)說明書課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 專業(yè)班級: 自動(dòng)化1004班 指導(dǎo)教師: 工作單位: 自動(dòng)化學(xué)院 題 目: 圖形變換程序設(shè)計(jì) 初始條件:掌握8086匯編語言程序設(shè)計(jì)方法,設(shè)計(jì)一個(gè)圖形變換顯示程序。要求完成的主要任務(wù):(包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說明書撰寫等具體要求) 1. 程序運(yùn)行后,鍵盤輸入不同進(jìn)行不同處理:(1)輸入Q或q,顯示Thank You ,the game is over!并結(jié)束程序;(2)輸入A,顯示由16個(gè)*構(gòu)成的菱形圖案每隔1秒變換顏色(紅綠黃),;輸入B,顯示10個(gè)*構(gòu)成的五角星圖案每隔2秒變換顏色(同上);輸入C,顯示25

2、個(gè)*構(gòu)成的菱形圖案每隔3秒變換顏色(同上);輸入D,顯示12個(gè)*構(gòu)成的三角形圖案每隔2秒變換顏色;輸入E,顯示一個(gè)每隔1用紅綠黃三種顏色填充且?guī)в羞吙虻木匦螆D案;輸入F,顯示一個(gè)每隔1秒用紅綠黃三種顏色填充的圓形圖案。2. 撰寫課程設(shè)計(jì)說明書。內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄(程序清單)。正文部分包括:設(shè)計(jì)任務(wù)及要求、方案比較及論證、軟件設(shè)計(jì)說明(軟件思想,流程,源程序設(shè)計(jì)及說明等)、程序調(diào)試說明和結(jié)果分析、課程設(shè)計(jì)收獲及心得體會。時(shí)間安排:2012年12月 30日- 12月31日 查閱資料及方案設(shè)計(jì)2013年01月 01日- 01月05日 編程2013年01月06 日- 01月08

3、日 調(diào)試程序2013年01月09 日- 01月10日 撰寫課程設(shè)計(jì)報(bào)告指導(dǎo)教師簽名: 2013 年 01 月 11 日系主任(或責(zé)任教師)簽名: 年 月 日目 錄摘 要11 總體方案論證21.1題目功能分析21.2 算法說明22 流程圖設(shè)計(jì)及說明32.1主程序流程32.2. 分布功能程序42.2.1 圖形A,B,C,D42.2.2 圖形E,F53 延時(shí)子程序134 輸入字符檢驗(yàn)145 程序運(yùn)行結(jié)果155.1輸入字符A155.2輸入字符B155.3輸入字符C155.4輸入字符D165.5輸入字符E165.6輸入字符F16總結(jié)體會17附錄:完整程序18參考文獻(xiàn)281本科生課程設(shè)計(jì)成績評定表28摘

4、要匯編語言的顯示輸出包括文字文本的輸出和圖形的輸出,此次的課程設(shè)計(jì)既包括文字文本的輸出,也包括了圖形的輸出。而顯示輸出主要是通過DOS的10號調(diào)用來控制。首先,在論文的最初根據(jù)題意畫出該程序的總流程圖。根據(jù)總流程圖將程序分解為了三個(gè)部分:對鍵盤輸入符號的檢驗(yàn)程序,各個(gè)圖形的形成程序,延時(shí)子程序。對于鍵盤輸入符號的檢驗(yàn)屬于分支程序,采用字符比較的方式選取相應(yīng)的圖形入口程序。圖形的形成原理隨圖形的不同而改變:由“*”產(chǎn)生的圖形主要是通過控制空格和換行號數(shù)進(jìn)行控制;而長方形的形成則主要是通過DOS調(diào)用繪制直線而成;而對于圓形則通過掃描像素的方法作圖;而顏色的變換主要是通過修改輸出字符圖形的顏色屬性以

5、及結(jié)合延時(shí)控制程序來完成。延時(shí)子程序則采用了循環(huán)嵌套的方式通過改變內(nèi)外兩層的循環(huán)次數(shù)做到精確地控制。關(guān)鍵詞: DOS調(diào)用 循環(huán)嵌套 掃描像素1 總體方案論證1.1題目功能分析(1)檢驗(yàn)輸入字符Q或q顯示Thank You ,the game is over!并結(jié)束程序;(2)輸入字符A則顯示由16個(gè)*構(gòu)成的菱形圖案每隔1秒變換顏色(紅綠黃);輸入字符B,顯示10個(gè)*構(gòu)成的五角星圖案每隔2秒變換顏色(同上);輸入C,顯示25個(gè)*構(gòu)成的菱形圖案每隔3秒變換顏色(同上);輸入D,顯示12個(gè)*構(gòu)成的三角形圖案每隔2秒變換顏色;輸入E,顯示一個(gè)每隔1用紅綠黃三種顏色填充且?guī)в羞吙虻木匦螆D案;輸入F,顯示

6、一個(gè)每隔1秒用紅綠黃三種顏色填充的圓形圖案。 1.2 算法說明(1) 調(diào)用DOS的字符輸入功能并檢驗(yàn)字符通過設(shè)置字符輸出格式以及像素的輸出規(guī)則控制圖形的輸出(2) 調(diào)用DOS的10號功能修改輸出字符的顏色屬性,并同時(shí)調(diào)用延時(shí)子程序?qū)崿F(xiàn)顏色的變化。2流程圖設(shè)計(jì)及說明2.1主程序流程開始初始化段檢驗(yàn)鍵盤輸入Q或q輸入A?顯示A輸入B?輸入C?顯示B顯示C輸入F?輸入E?輸入D?顯示D顯示E顯示F顯示結(jié)束語句結(jié)束 YNN Y NYNYN Y N Y Y 圖2-1 主程序流程圖顯然,從圖中可以看出:主程序包含了順序,分支,循環(huán)三種結(jié)構(gòu);程序只有在遇到Q和q的情形下才會結(jié)束。 2.2. 分布功能程序 2

7、.2.1 圖形A,B,C,D(1)A,B,C,D各圖案如圖2-2所示。 圖2-2 A,B,C,D各圖案由圖可以看出,對于A,B,C,D的圖形是根據(jù)其空間的具體排布所確定的,通過控制每個(gè)*之間空格的數(shù)目以及換行數(shù)形成相應(yīng)的圖形(2)為形成A,B,C,D圖形的存儲代碼:BUFF1 DB ' *',0AH,0DH,' * *',0AH,0DH,' * * * ',0AH,0DH,' * * * *',0AH,0DH,' * * * ',0AH,0DH,' * *',0AH,0DH,' *'

8、,0AH,0DH,'$' BUFF2 DB ' *',2 DUP(0AH),0DH,'* * * *',2 DUP(0AH),0DH,' * *',2 DUP(0AH),0DH,' *',2 DUP(0AH),0DH,' * *','$' BUFF3 DB ' *',0AH,0DH,' * *',0AH,0DH,' * *',0AH,0DH, ' * *',0AH,0DH,' * * * * *',

9、9;$' BUFF4 DB ' *',0AH,0DH,' * *',0AH,0DH,' * * *',0AH,0DH,' * * * *',0AH,0DH,'* * * * *',0AH,0DH,' * * * *',0AH,0DH,' * * *',0AH,0DH,' * *',0AH,0DH,' *','$' 2.2.2圖形E,FE,F分別是長方形和圓形,屬于圖形變換程序設(shè)計(jì)此圖形轉(zhuǎn)換程序主要是運(yùn)用寫顯存的方式去實(shí)現(xiàn)??梢詫?shí)

10、現(xiàn)矩形和圓形的繪制及圖形顏色變換。設(shè)計(jì)思想:(1)界面控制程序開始檢驗(yàn)鍵盤輸入字符,若輸入“E”則進(jìn)入畫矩形子程序。鍵盤輸入“F”進(jìn)入畫圓子程序(2)畫圓通過寫算法來確定圓邊點(diǎn)的位置,利用寫像素方式畫出圓邊點(diǎn),用盡量多的點(diǎn)能較完整地表現(xiàn)出一個(gè)圓,再改變確定區(qū)域的背景顏色和調(diào)用延時(shí)子程序即可完成圓形的顏色變換。(3)算法首選確定圓心位置O(OX,OY),設(shè)置圓半徑為Radius,圓邊任一位置A(X,Y)可由圓心位置和圓半徑及方向角(見下圖2-3)確定。本程序首先設(shè)立大概連續(xù)的多個(gè)數(shù)值(本程序?yàn)?0個(gè))以確定SIN值及其相對應(yīng)的COS值。A點(diǎn)位置可由以下表達(dá)式確定。  算法示意圖如圖2-

11、3所示。圖2-3 算法示意圖X=SIN*Radius+OXY=COS*Radius+OY由A點(diǎn)又可求出與其相關(guān)的其他點(diǎn)B,C,D.程序流程圖如圖2-4所示。圖2-4 程序流程圖(4)算法程序代碼FIGURE_F PROC NEAR ;圖形F變換子程序MOV AX,0A000H MOV ES,AX MOV AX,0012H INT 10H ;設(shè)置640*480*16圖形模式 MOV AL,2 CALL SET_WRITE_MODE ;將寫模式設(shè)為寫模式2 again:MOV AX,BKCOLOR CALL CLEAR ;將背景清成白色 MOV AX,WORD PTR X PUSH AX MOV

12、AX,WORD PTR Y PUSH AX MOV AX,WORD PTR RADIUS PUSH AX CALL CIRCLE ;640*480*16模式下的畫點(diǎn)函數(shù)PIXEL PROC PUSH BP PUSH BX PUSH CX PUSH DS MOV BP,SP MOV AX,80 MOV BX,WORD PTRBP+12 ;BX<=Y MUL BX ;(DX:AX)<=80*Y MOV BX,AX ; MOV AX,WORD PTRBP+14 ;AX<-X MOV CL,8 ; | | DIV CL ;AL<=商(X/8),AH<=余數(shù)(X%8) SP

13、-> | | MOV CL,AH ;CL<=AH | DS |<-BP MOV AH,0 ; | CX |<-BP+2 ADD BX,AX ;BX(OFFSET)<=80*Y+X/8 | BX |<-BP+4 MOV AL,80H ; | BP |<-BP+6 SHR AL,CL ;AL(MASK)<=(80H>>CL) |返回地址|<-BP+8 PUSH AX ; | COLOR |<-BP+10 MOV DX,3CEH ; | Y |<-BP+12 MOV AL,8 ; | X |<-BP+14 OUT D

14、X,AL ; | | MOV DX,3CFH ; PIXEL堆棧結(jié)構(gòu) POP AX OUT DX,AL MOV AL,ES:BX MOV AX,WORD PTRBP+10 ;AX<=COLOR MOV BYTE PTR ES:BX,AL POP DS POP CX POP BX POP BP RET 6 PIXEL ENDP ;清屏函數(shù) CLEAR PROC NEAR MOV BX,0 CLR1: MOV ES:BX,AL INC BX CMP BX,9600H;80*480 JNB CLR2 JMP CLR1 CLR2: RET CLEAR ENDP;Bresenham算法實(shí)現(xiàn)的畫圓函

15、數(shù) CIRCLE PROC NEAR PUSH BP MOV BP,SP SUB SP,6 MOV WORD PTRBP-2,0 ;X<=0 | | MOV AX,WORD PTRBP+4 ; | | MOV WORD PTRBP-4,AX ;Y<=R SP-> | | MOV AX,0FFFEH ; | P |<-BP-6 IMUL WORD PTRBP+4 ;AX<=RADIUS*(-2) | Y |<-BP-4 ADD AX,3 ;AX<=3-2*RADIUS | X |<-BP-2 MOV WORD PTRBP-6,AX ;P=3-2*R

16、ADIUS | BP |<-BP C0: MOV AX,WORD PTRBP-2 ;AX<=X |返回地址|<-BP+2 CMP AX,WORD PTRBP-4 ;IF X<Y,JMP C00 | RADIUS |<-BP+4 JL C00 ; | YC |<-BP+6 JMP C3 ; | XC |<-BP+8 C00: PUSH WORD PTRBP+8 ; CIRCLE堆棧結(jié)構(gòu) PUSH WORD PTRBP+6 ; PUSH WORD PTRBP-2 PUSH WORD PTRBP-4 CALL CIRCLE_POINT CMP WORD PT

17、RBP-6,0 JGE C1 MOV AX,4 MUL WORD PTRBP-2 ADD AX,6 ADD AX,WORD PTRBP-6 MOV WORD PTRBP-6,AX JMP C2 C1: MOV AX,WORD PTRBP-2 SUB AX,WORD PTRBP-4 MOV BX,4 IMUL BX ADD AX,10 ADD AX,WORD PTRBP-6 MOV WORD PTRBP-6,AX DEC WORD PTRBP-4 C2: INC WORD PTRBP-2 JMP C0 C3: MOV AX,WORD PTRBP-2 CMP AX,WORD PTRBP-4 JNE

18、 C4 PUSH WORD PTRBP+8 PUSH WORD PTRBP+6 PUSH WORD PTRBP-2 PUSH WORD PTRBP-4 CALL CIRCLE_POINT C4: MOV SP,BP POP BP RET 6 CIRCLE ENDP (5)畫矩形首先通過畫直線畫出一個(gè)矩形,再改變確定區(qū)域的背景顏色和調(diào)用延時(shí)子程序即可完成矩形框的顏色變換。長方形程序流程圖如圖2-5。圖2-5 長方形程序流程圖(6)程序代碼FIGURE_E PROC NEAR PUSH CX PUSHF PUSH DS ;圖形E長方形變換子程序 MOV AX,0 PUSH AX MOV AH,0

19、MOV AL,4 INT 10H MOV AH,0BH MOV BH,0 MOV BL,0FH INT 10H MOV AH,0BH MOV BH,1 MOV BL,0 INT 10H MOV DX,99 MOV CX,0 DRAW_U:MOV AH,0CH MOV AL,2 INT 10H DEC DX CMP DX,-1 JNZ DRAW_U INC DX DRAW_R: MOV AH,0CH MOV AL,2 INT 10H INC CX CMP CX,100 JNZ DRAW_R DEC CX DRAW_D:MOV AH,0CH MOV AL,2 INT 10H INC DX CMP

20、DX,100 JNZ DRAW_D DEC DX DRAW_L:MOV AH,0CH MOV AL,2 INT 10H DEC CX CMP CX,-1 JNZ DRAW_L POPF POP CX RETFIGURE_E ENDP3 延時(shí)子程序延時(shí)子程序原理:8080CPU執(zhí)行每一條指令均需要一定的時(shí)間,因此可以采用循環(huán)嵌套的方式讓程序始終只運(yùn)行一條指令,控制循環(huán)的次數(shù)即可控制所延遲的時(shí)間了。延時(shí)程序:DELAY_1s PROC NEAR ;延時(shí)一秒子程序 RUZHAN MOV AX,0FFFHNEXT1: MOV CX,02FFHNEXT2: DEC AX JNE NEXT1 CHUZHA

21、N RETDELAY_1s ENDP程序中RUZHAN和CHUZHAN均為宏定義,外層循環(huán)控制數(shù)為0FFFH,內(nèi)層循環(huán)控制數(shù)為02FFH,通過不同的數(shù)字搭配控制延遲時(shí)間4輸入字符檢驗(yàn)原理:主要是調(diào)用8號功能,通過比較指令和跳轉(zhuǎn)指令確定所選擇的分支:MOV AX,DATA MOV DS,AX MOV AH,08H INT 21H CMP AL,'q' JZ QUIT CMP AL,'Q' JZ QUIT CMP AL,'A' JZ FIGURE_A CMP AL,'B' JZ FIGURE_B CMP AL,'C'

22、JZ FIGURE_C CMP AL,'D' JZ FIGURE_D CMP AL,'E' JE XX CMP AL,'F' JE YY5 程序運(yùn)行結(jié)果5.1輸入字符A十“*”菱形顯示如圖5-1所示。當(dāng)輸入字母A后,每隔一秒(大約)菱形變換顏色。 圖5-1 十“*”菱形顯示5.2輸入字符B通過連續(xù)兩次調(diào)用延時(shí)程序,即可將延時(shí)擴(kuò)大為兩倍。圖5-2 十“*”五角星顯示5.3 輸入字符C連續(xù)調(diào)用三次延時(shí)程序,即可延時(shí)三秒 圖5-3 十二“*”三角形顯示5.4輸入字符D二十五“*”菱形顯示如圖5-4所示。間隔一秒變換顏色。圖5-4 二十五“*”菱形顯示5

23、.5輸入字符E長方形顯示如圖5-5所示。 圖5-5 長方形顯示5.6輸入字符F圓形變換顯示如圖2-6所示。圖2-6 圓形變換顯示總結(jié)體會此次微機(jī)課設(shè)考察的主要是DOS功能的調(diào)用,但同時(shí)涉及的范圍非常的廣,知識點(diǎn)也是非常的多。不僅包括程序設(shè)計(jì)的三大基本結(jié)構(gòu),還包括子程序的調(diào)用,顯示輸入輸出的技巧,匯編指令的考察。將整個(gè)8086匯編程序設(shè)計(jì)所考查的范圍都包含了。但是,這次課設(shè),最大的體會是如何完成一個(gè)較大型的程序。對于稍微大一點(diǎn)的程序,僅僅從頭寫到尾是不合理的也是不現(xiàn)實(shí)的,因此在這次課設(shè)中,首先應(yīng)對程序整體有一個(gè)總的認(rèn)識,再將問題分解成一個(gè)個(gè)小的問題,這樣同時(shí)也將程序分成塊了。這樣做,是學(xué)生們在編

24、寫程序時(shí)始終有一個(gè)清晰的思路,非常有層次感。思維不會陷入混亂,這是值得體會的。當(dāng)然,這樣做也有一些問題:當(dāng)分的塊太多了,會導(dǎo)致變量的命名出現(xiàn)問題,可能出現(xiàn)不同的程序間變量名重疊,導(dǎo)致程序運(yùn)行不正確。還有,過于分散的小塊當(dāng)匯總為完整的程序時(shí),發(fā)現(xiàn)并不是非常的兼容,往往出現(xiàn)很多不對應(yīng)的問題,這一次的課設(shè)中,當(dāng)將一個(gè)個(gè)小程序結(jié)合在一起時(shí),出現(xiàn)了很多意想不到的問題,調(diào)試經(jīng)常出錯(cuò)。這是非常值得注意的總而言之,這次課設(shè)雖然不能說對學(xué)習(xí)這門課有多大的作用,但是,對于程序的理解確是貫穿始終的,而并不僅僅局限于是匯編編程。附錄:完整程序RUZHAN MACRO ;宏定義 PUSH AXPUSH BXPUSH C

25、XPUSH DXPUSH SIPUSH DIENDMCHUZHAN MACRO ;宏定義POP DI POP SIPOP DXPOP CXPOP BXPOP AXENDM ;結(jié)束宏DATA SEGMENTBKCOLOR DW 15 X DW 280 Y DW 240 RADIUS DW 150 COLOR DW 02 MESSAGE DB 'Thangk You,the game is over!',0ah,0dh,'$'BUFF0 DB 04H,02H,0EHBUFF1 DB ' *',0AH,0DH,' * *',0AH,0D

26、H,' * * * ',0AH,0DH,' * * * *',0AH,0DH,' * * * ',0AH,0DH,' * *',0AH,0DH,' *',0AH,0DH,'$' LENGTH1 EQU $-BUFF1BUFF2 DB ' *',2 DUP(0AH),0DH,'* * * *',2 DUP(0AH),0DH,' * *',2 DUP(0AH),0DH,' *',2 DUP(0AH),0DH,' * *',&

27、#39;$' LENGTH2 EQU $-BUFF2BUFF3 DB ' *',0AH,0DH,' * *',0AH,0DH,' * *',0AH,0DH, ' * *',0AH,0DH,' * * * * *','$' LENGTH3 EQU $-BUFF3BUFF4 DB ' *',0AH,0DH,' * *',0AH,0DH,' * * *',0AH,0DH,' * * * *',0AH,0DH,'* * * *

28、*',0AH,0DH,' * * * *',0AH,0DH,' * * *',0AH,0DH,' * *',0AH,0DH,' *','$' LENGTH4 EQU $-BUFF4 DATA ENDSSTACK1 SEGMENT PARA STACK 'STACK' DB 200 DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: ;鍵盤輸入檢查 MOV AX,DATA MOV DS,AX MOV AH,08

29、H INT 21H CMP AL,'q' JZ QUIT CMP AL,'Q' JZ QUIT CMP AL,'A' JZ FIGURE_A CMP AL,'B' JZ FIGURE_B CMP AL,'C' JZ FIGURE_C CMP AL,'D' JZ FIGURE_D CMP AL,'E' JE XX CMP AL,'F' JE YYQUIT : LEA DX,MESSAGE ;顯示提示信息并結(jié)束程序 MOV AH,09H INT 21H MOV AH,4C

30、H INT 21HXX: CALL FIGURE_EYY: CALL FIGURE_F DELAY_1s PROC NEAR ;延時(shí)一秒子程序 RUZHAN MOV AX,0FFFHNEXT1: MOV CX,0FFFHNEXT2: DEC AX JNE NEXT1 CHUZHAN RETDELAY_1s ENDPFIGURE_A: FIGURE_A: MOV AL,3 ;圖形A變換 MOV AH,0 INT 10H MOV BP,SEG BUFF1 MOV ES,BP MOV BP,OFFSET BUFF1 MOV CX,LENGTH1 MOV DX,0 MOV BL,04H MOV AL,

31、0 MOV AH,13H INT 10H CALL DELAY_1S MOV BL,02H MOV AL,0 MOV AH,13H INT 10H CALL DELAY_1S MOV BL,0EH MOV AL,0 MOV AH,13H INT 10H JMP STARTFIGURE_B: MOV AL,3 ;圖形B變換 MOV AH,0 INT 10H MOV BP,SEG BUFF2 MOV ES,BP MOV BP,OFFSET BUFF2 MOV CX,LENGTH2 MOV DX,0 MOV BL,04H MOV AL,0 MOV AH,13H INT 10H CALL DELAY_

32、1S CALL DELAY_1S MOV BL,02H MOV AL,0 MOV AH,13H INT 10H CALL DELAY_1SCALL DELAY_1S MOV BL,0EH MOV AL,0 MOV AH,13H INT 10H JMP START FIGURE_C: MOV AL,3 ;圖形C變換 MOV AH,0 INT 10H MOV BP,SEG BUFF3 MOV ES,BP MOV BP,OFFSET BUFF3 MOV CX,LENGTH3 MOV DX,0 MOV BL,04H MOV AL,0 MOV AH,13H INT 10H CALL DELAY_1SCA

33、LL DELAY_1S CALL DELAY_1S MOV BL,02H MOV AL,0 MOV AH,13H INT 10H CALL DELAY_1SCALL DELAY_1S CALL DELAY_1S MOV BL,0EH MOV AL,0 MOV AH,13H INT 10H JMP STARTFIGURE_D: MOV AL,3 ;圖形D變換 MOV AH,0 INT 10H MOV BP,SEG BUFF4 MOV ES,BP MOV BP,OFFSET BUFF4 MOV CX,LENGTH4 MOV DX,0 MOV BL,04H MOV AL,0 MOV AH,13H I

34、NT 10H CALL DELAY_1S CALL DELAY_1S MOV BL,02H MOV AL,0 MOV AH,13H INT 10H CALL DELAY_1SCALL DELAY_1S MOV BL,0EH MOV AL,0 MOV AH,13H INT 10H JMP STARTFIGURE_E PROC NEAR PUSH CX PUSHF PUSH DS ;圖形E長方形變換子程序 MOV AX,0 PUSH AX MOV AH,0 MOV AL,4 INT 10H MOV AH,0BH MOV BH,0 MOV BL,0FH INT 10H MOV AH,0BH MOV

35、BH,1 MOV BL,0 INT 10H MOV DX,99 MOV CX,0 DRAW_U:MOV AH,0CH MOV AL,2 INT 10H DEC DX CMP DX,-1 JNZ DRAW_U INC DX DRAW_R: MOV AH,0CH MOV AL,2 INT 10H INC CX CMP CX,100 JNZ DRAW_R DEC CX DRAW_D:MOV AH,0CH MOV AL,2 INT 10H INC DX CMP DX,100 JNZ DRAW_D DEC DX DRAW_L:MOV AH,0CH MOV AL,2 INT 10H DEC CX CMP

36、CX,-1 JNZ DRAW_L POPF POP CX RETFIGURE_E ENDPFIGURE_F PROC NEAR ;圖形F變換子程序MOV AX,0A000H MOV ES,AX MOV AX,0012H INT 10H ;設(shè)置640*480*16圖形模式 MOV AL,2 CALL SET_WRITE_MODE ;將寫模式設(shè)為寫模式2 again:MOV AX,BKCOLOR CALL CLEAR ;將背景清成白色 MOV AX,WORD PTR X PUSH AX MOV AX,WORD PTR Y PUSH AX MOV AX,WORD PTR RADIUS PUSH AX

37、 CALL CIRCLE ;640*480*16模式下的畫點(diǎn)函數(shù)PIXEL PROC PUSH BP PUSH BX PUSH CX PUSH DS MOV BP,SP MOV AX,80 MOV BX,WORD PTRBP+12 ;BX<=Y MUL BX ;(DX:AX)<=80*Y MOV BX,AX ; MOV AX,WORD PTRBP+14 ;AX<-X MOV CL,8 ; | | DIV CL ;AL<=商(X/8),AH<=余數(shù)(X%8) SP-> | | MOV CL,AH ;CL<=AH | DS |<-BP MOV AH,

38、0 ; | CX |<-BP+2 ADD BX,AX ;BX(OFFSET)<=80*Y+X/8 | BX |<-BP+4 MOV AL,80H ; | BP |<-BP+6 SHR AL,CL ;AL(MASK)<=(80H>>CL) |返回地址|<-BP+8 PUSH AX ; | COLOR |<-BP+10 MOV DX,3CEH ; | Y |<-BP+12 MOV AL,8 ; | X |<-BP+14 OUT DX,AL ; | | MOV DX,3CFH ; PIXEL堆棧結(jié)構(gòu) POP AX OUT DX,AL

39、MOV AL,ES:BX MOV AX,WORD PTRBP+10 ;AX<=COLOR MOV BYTE PTR ES:BX,AL POP DS POP CX POP BX POP BP RET 6 PIXEL ENDP ;清屏函數(shù) CLEAR PROC NEAR MOV BX,0 CLR1: MOV ES:BX,AL INC BX CMP BX,9600H;80*480 JNB CLR2 JMP CLR1 CLR2: RET CLEAR ENDP;Bresenham算法實(shí)現(xiàn)的畫圓函數(shù) CIRCLE PROC NEAR PUSH BP MOV BP,SP SUB SP,6 MOV WO

40、RD PTRBP-2,0 ;X<=0 | | MOV AX,WORD PTRBP+4 ; | | MOV WORD PTRBP-4,AX ;Y<=R SP-> | | MOV AX,0FFFEH ; | P |<-BP-6 IMUL WORD PTRBP+4 ;AX<=RADIUS*(-2) | Y |<-BP-4 ADD AX,3 ;AX<=3-2*RADIUS | X |<-BP-2 MOV WORD PTRBP-6,AX ;P=3-2*RADIUS | BP |<-BP C0: MOV AX,WORD PTRBP-2 ;AX<=

41、X |返回地址|<-BP+2 CMP AX,WORD PTRBP-4 ;IF X<Y,JMP C00 | RADIUS |<-BP+4 JL C00 ; | YC |<-BP+6 JMP C3 ; | XC |<-BP+8 C00: PUSH WORD PTRBP+8 ; CIRCLE堆棧結(jié)構(gòu) PUSH WORD PTRBP+6 ; PUSH WORD PTRBP-2 PUSH WORD PTRBP-4 CALL CIRCLE_POINT CMP WORD PTRBP-6,0 JGE C1 MOV AX,4 MUL WORD PTRBP-2 ADD AX,6 AD

42、D AX,WORD PTRBP-6 MOV WORD PTRBP-6,AX JMP C2 C1: MOV AX,WORD PTRBP-2 SUB AX,WORD PTRBP-4 MOV BX,4 IMUL BX ADD AX,10 ADD AX,WORD PTRBP-6 MOV WORD PTRBP-6,AX DEC WORD PTRBP-4 C2: INC WORD PTRBP-2 JMP C0 C3: MOV AX,WORD PTRBP-2 CMP AX,WORD PTRBP-4 JNE C4 PUSH WORD PTRBP+8 PUSH WORD PTRBP+6 PUSH WORD PT

43、RBP-2 PUSH WORD PTRBP-4 CALL CIRCLE_POINT C4: MOV SP,BP POP BP RET 6 CIRCLE ENDP CIRCLE_POINT PROC NEAR PUSH BP MOV BP,SP SUB SP,16 MOV AX,WORD PTRBP+10 ; ADD AX,WORD PTRBP+6 ; MOV WORD PTRBP-2,AX ;XC+X MOV AX,WORD PTRBP+10 ; SUB AX,WORD PTRBP+6 ; MOV WORD PTRBP-4,AX ;XC-X MOV AX,WORD PTRBP+10 ; | | ADD AX,WORD PTRBP+4 ; | | MOV WORD PTRBP-6,AX ;XC+Y | | MOV AX,WORD PTRBP+10 ; SP-> | | SUB AX,WORD PTRBP+4 ; | YC-Y |<-BP-16 MOV WORD PTRBP-8,AX ;XC-Y | YC+Y |<-BP-14 MOV AX,WORD PTRBP+8 ; | YC-X |<-BP-12 ADD AX,WORD PTRBP+6 ; | YC+X |<-BP-10 MOV WORD PTR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論