ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:121.59KB ,
资源ID:1251132      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1251132.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言课程设计绘制三角形图形程序.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

汇编语言课程设计绘制三角形图形程序.docx

1、汇编语言课程设计绘制三角形图形程序课程设计说明书课程名称: 汇编语言 班级: 姓名:_ _学号:_ _设计题目: 绘制三角形图形程序 设计时间: 2010/6/21 至 2010/7/2 指导教师: 李永飞 评 语:_评阅成绩: 评阅教师: 一、课程设计目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。二、课程设计要求 1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。2.遵循模块化、结构化的程序设计方法。3.要求程序必须正确。4

2、.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。5.要求程序结构合理,语句使用得当。6.适当追求编程技巧和程序运行效率。三、课程设计题目: 绘制三角形图形程序四、课题分析 编写程序.使PC机显示一个三角形。对于图形设计,要通过BIOS INT 10H调用,用菜单选择三角形的输出。三角形可分割为3条直线,因此显示三角形就可分解为根据两点画直线的程序。五、流程图: Q六、核心代码展示:1、主函数MAIN PROC FAR ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSSTART: MOV AX,DATA MOV DS,AX MOV AX,0A000H M

3、OV ES,AX MOV AX,0012H ;设置640*480*16图形模式 INT 10H reset: ;02文字模式显示主界面 MOV AX,0002H ;根据用户输入调用相关功能 INT 10H disp desk mov ah,01h int 21h cmp al,A jz zj cmp al,B jz dy cmp al,C jz zdy cmp al,Q jz goover jmp resetzj: ;输出直角三角形 CALL INPUTCOLOR disp crlf lea si,zhijiao jmp nextdy: ;输出等腰三角形 CALL INPUTCOLOR dis

4、p crlf lea si,dengyao jmp nextzdy: ;调用input函数自定义三角形 CALL INPUTCOLOR disp crlf CALL input lea si,point jmp next next: ;调用output函数输出指定的三角形 MOV AX,0012H INT 10H ;设置640*480*16图形模式 MOV AL,2 CALL SET_WRITE_MODE MOV AX,BKCOLOR CALL CLEARcall output MOV AH,1 INT 21H JMP RESET goover: ;程序结束 MOV AH,0 ;清屏 MOV

5、AL,12H INT 10H RETMAIN ENDP2、 Bresenham画线算法PIXEL proc near 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=余数(X%8) MOV CL,AH ;CL=AH MOV AH,0 ; ADD BX,AX ;BX(OFFSET)=80*Y+X/8 MOV A

6、L,80H ; SHR AL,CL ;AL(MASK)CL) PUSH AX MOV DX,3CEH MOV AL,8 OUT DX,AL MOV DX,3CFH 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 6pixel endp;- ;Bresenham画线算法 LINE proc near PUSH BP MOV BP,SP SUB SP,16 MOV WORD PTRBP-6,0 ;X=0 MOV WOR

7、D PTRBP-8,0 ;Y=0 MOV WORD PTRBP-14,1 ;INCX=1 MOV WORD PTRBP-16,1 ;INCY=1 MOV AX,WORD PTRBP+6 ;AX=X2 SUB AX,WORD PTRBP+10 ;AX=X1,JMP L1 NEG AX ;IF X2X1,DELTA_X=-DELTA_X MOV WORD PTRBP-14,-1 ;INCX=-1 L1: CMP AX,0 ;IF DELTA_X!=0,JMP L11 JNE L11 MOV WORD PTRBP-14,0 ;INCX=0 L11: MOV WORD PTRBP-10,AX ;DEL

8、TA_X=AX MOV AX,WORD PTRBP+4 ;AX=Y2 SUB AX,WORD PTRBP+8 ;AX=Y1,JMP L2 NEG AX ;IF Y2Y1,DELTA_Y=-DELTA_Y MOV WORD PTRBP-16,-1 ;INCY=-1 L2: ; CMP AX,0 ;IF DELTA_Y!=0,JMP L22 JNE L22 ; MOV WORD PTRBP-16,0 ;INCY=0 L22: MOV WORD PTRBP-12,AX ;DELTA_Y=AX LP4: MOV AX,WORD PTRBP-10 ;AXDELTA_Y MOV AX,WORD PTRBP

9、-12 ; MOV WORD PTRBP-4,AX ;DISTANCE=DELTA_Y JMP LP51 ; LP5: MOV AX,WORD PTRBP-10 ; MOV WORD PTRBP-4,AX ;DISTANCE=DELTA_XLP51: INC AX MOV WORD PTRBP-2,AXLP6: PUSH WORD PTRBP+10 PUSH WORD PTRBP+8 PUSH COLOR CALL PIXEL MOV AX,WORD PTRBP-6 ;AX=X ADD AX,WORD PTRBP-10 ;AX=X+DELTA_X MOV WORD PTRBP-6,AX ;X=

10、X+DELTA_X MOV AX,WORD PTRBP-8 ;AX=Y ADD AX,WORD PTRBP-12 ;AX=Y+DELTA_Y MOV WORD PTRBP-8,AX ;Y=Y+DELTA_Y MOV AX,WORD PTRBP-6 ;AX=X CMP AX,WORD PTRBP-4 JLE LP7 ;IF XDISTANCE SUB AX,WORD PTRBP-4 ;AX=X-DISTANCE MOV WORD PTRBP-6,AX ;X=X-DISTANCE MOV AX,WORD PTRBP+10 ;AX=X1 ADD AX,WORD PTRBP-14 ;AX=X1+INC

11、X MOV WORD PTRBP+10,AX ;X1=X1+INCXLP7: MOV AX,WORD PTRBP-8 ;AX=Y CMP AX,WORD PTRBP-4 JLE LP8 ;IF YDISTANCE SUB AX,WORD PTRBP-4 ;AX=Y-DISTANCE MOV WORD PTRBP-8,AX ;Y=Y-DISTANCE MOV AX,WORD PTRBP+8 ;AX=Y1 ADD AX,WORD PTRBP-16 ;AX=Y1+INCY MOV WORD PTRBP+8,AX ;Y1=Y1+INCYLP8: DEC WORD PTRBP-2 ;IF T!=0,JM

12、P LP6 JZ LP9 JMP LP6LP9: MOV SP,BP POP BP RET 8line endp3、 自定义三角形顶点位置INPUT PROC NEAR lea si,point DISP inputINFO_1 ;显示输入提示信息xx1:disp x CALL getchar ;调用getchar输入3位数 cmp dx,0 ;验证输入数字在要求的范围内 jl wx1 cmp dx,600 jg wx1 mov si,dx ;验证通过,输入下一个数 mov si+8,dx jmp yy1wx1:disp inputwrong ;验证失败,显示提示信息并重新输入 jmp xx1

13、 yy1:disp y CALL getchar cmp dx,0 jl wy1 cmp dx,400 jg wy1 mov si+2,dx mov si+10,dx DISP inputINFO_2 jmp xx2wy1:disp inputwrong jmp yy1 xx2:disp x CALL getchar cmp dx,0 jl wx2 cmp dx,600 jg wx2 mov si+4,dx mov si+16,dx jmp yy2wx2:disp inputwrong jmp xx2 yy2:disp y CALL getchar cmp dx,0 jl wy2 cmp dx

14、,400 jg wy2 mov si+6,dx mov si+18,dx DISP inputINFO_3 jmp xx3wy2:disp inputwrong jmp yy2 xx3:disp x CALL getchar cmp dx,0 jl wx3 cmp dx,600 jg wx3 mov si+12,dx mov si+20,dx jmp yy3wx3:disp inputwrong jmp xx3 yy3:disp y CALL getchar cmp dx,0 jl wy3 cmp dx,400 jg wy3 mov si+14,dx mov si+22,dx retwy3:d

15、isp inputwrong jmp yy3 INPUT ENDP4、 置堆栈并调用LINE画线output proc near mov cx,3DDD: ;将指定三角形的三顶点坐标压栈 PUSH CX ;压栈按照line函数要求的规则 PUSH SI MOV AX,SI PUSH AX MOV AX,SI+2 PUSH AX MOV AX,SI+4 PUSH AX MOV AX,SI+6 PUSH AX CALL LINE ;调用Line函数画线 POP SI ADD SI,8 POP CX LOOP DDDretoutput endp七、结果显示八、感想、收获及体会 本程序的核心在于Bre

16、senham画线算法,有了画线算法后添加以输入输出,用户界面等模块既得到最终的程序。程序多次在图形模式和文本模式下切换,充分考虑到与用户的互动性,界面比较友好,功能简单实用。程序在windows xp下测试通过。 程序首先在文本模式下显示欢迎界面,要求用户输入选项。程序可以根据用户选项直接输出直角三角形和等腰三角形,或者输出用户自定义三顶点的三角形,每次输出图形都可由用户自定义输出颜色。输出完成后按下任意键清屏,显示选项,用户可以继续输出三角形或者按下Q退出。 在BIOS调用方面本程序采用了多种写屏方式,力求每种功能实现采用相应的最简算法。 设计程序初考虑过使用Int 33h调用鼠标,是程序更

17、加人性化,但是由于技术原因和设备显示难以实现,实在遗憾。 下面分析Bresenham画线算法。对于直线方程Y=kX+b;A:0K1时候的算法 1:输入线段的两个端点Point1和Point2,并且存储到Point1(x1,y1)和Point2(x2,y2)中; 2:将Point1载入桢缓存,绘画第一个起始点; 3:计算常量x、y、2y和2(y-x),并且获得一个决策参数的第一个值:P = 2y-x; 4:从n=0开始,在沿线经过每个Xn处,进行下面的检测:如果Pn=0,下一个点绘制的是(Xn+1,Yn+1),并且Pn+1=Pn+2(y-x) 5:重复执行x-1次步骤4;B,斜率k= 1或斜率k=0时候的算法 对于斜率等于0或者斜率等于1时候,不需要通过算法直接的对于其中单一坐标变量进行处理。C:斜率k0的情况算法将起始点和中止点坐标Point1和Point2交换,可以转化到斜率为0和1之内的算法去实现用汇编语言实现该算法的代码已经在上面贴出。以下是两个子函数的堆栈结构。 通过这个程序,我更加熟练了利用堆栈处理问题的方法,深入了对计算机图形显示技术的认识,掌握了BIOS调用的方法,对于子程序、顺序结构、循环结构、宏定义等的应用更加融会贯通。通过这次课程设计培养了我设计完成中小型程序的能力,加深了对汇编语言的认识。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2