已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书课程名称: 汇编语言 班级: 姓名:_ _学号:_ _设计题目: 绘制三角形图形程序 设计时间: 2010/6/21 至 2010/7/2 指导教师: 李永飞 评 语:_评阅成绩: 评阅教师: 一、课程设计目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。二、课程设计要求 1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。2.遵循模块化、结构化的程序设计方法。3.要求程序必须正确。4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。5.要求程序结构合理,语句使用得当。6.适当追求编程技巧和程序运行效率。三、课程设计题目: 绘制三角形图形程序四、课题分析 编写程序.使PC机显示一个三角形。对于图形设计,要通过BIOS INT 10H调用,用菜单选择三角形的输出。三角形可分割为3条直线,因此显示三角形就可分解为根据两点画直线的程序。五、流程图:设置三角形颜色设置3顶点坐标设置显示方式AL=12H显示欢迎界面用户输入选项程序结束设置显示方式AL=02HLine函数绘图清屏 Q六、核心代码展示:1、主函数MAIN PROC FAR ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSSTART:MOV AX,DATAMOV DS,AX MOV AX,0A000H MOV ES,AX MOV AX,0012H ;设置640*480*16图形模式 INT 10Hreset: ;02文字模式显示主界面 MOV AX,0002H ;根据用户输入调用相关功能 INT 10H disp deskmov ah,01hint 21hcmp al,Ajz zj cmp al,Bjz dycmp al,Cjz zdycmp al,Qjz gooverjmp resetzj: ;输出直角三角形CALL INPUTCOLORdisp crlf lea si,zhijiaojmpnextdy: ;输出等腰三角形CALL INPUTCOLORdisp crlf lea si,dengyaojmpnextzdy: ;调用input函数自定义三角形CALL INPUTCOLORdisp crlf CALL inputlea si,pointjmpnext 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 RESETgoover: ;程序结束 MOV AH,0 ;清屏 MOV 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 AL,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 WORD 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 ;DELTA_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-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=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+INCX 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,JMP LP6 JZ LP9 JMP LP6LP9: MOV SP,BP POP BP RET 8line endp3、 自定义三角形顶点位置INPUT PROC NEARlea si,pointDISP inputINFO_1 ;显示输入提示信息xx1:disp xCALL getchar ;调用getchar输入3位数cmp dx,0 ;验证输入数字在要求的范围内jl wx1cmp dx,600jg wx1mov si,dx ;验证通过,输入下一个数mov si+8,dxjmp yy1wx1:disp inputwrong ;验证失败,显示提示信息并重新输入jmp xx1yy1:disp yCALL getcharcmp dx,0jl wy1cmp dx,400jg wy1mov si+2,dxmov si+10,dxDISP inputINFO_2jmp xx2wy1:disp inputwrongjmp yy1xx2:disp xCALL getcharcmp dx,0jl wx2cmp dx,600jg wx2mov si+4,dxmov si+16,dxjmp yy2wx2:disp inputwrongjmp xx2yy2:disp yCALL getcharcmp dx,0jl wy2cmp dx,400jg wy2mov si+6,dxmov si+18,dxDISP inputINFO_3jmp xx3wy2:disp inputwrongjmp yy2xx3:disp xCALL getcharcmp dx,0jl wx3cmp dx,600jg wx3mov si+12,dxmov si+20,dxjmp yy3wx3:disp inputwrongjmp xx3yy3:disp yCALL getcharcmp dx,0jl wy3cmp dx,400jg wy3mov si+14,dxmov si+22,dxretwy3:disp inputwrongjmp yy3INPUT 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七、结果显示八、感想、收获及体会 本程序的核心在于Bresenham画线算法,有了画线算法后添加以输入输出,用户界面等模块既得到最终的程序。程序多次在图形模式和文本模式下切换,充分考虑到与用户的互动性,界面比较友好,功能简单实用。程序在windows xp下测试通过。 程序首先在文本模式下显示欢迎界面,要求用户输入选项。程序可以根据用户选项直接输出直角三角形和等腰三角形,或者输出用户自定义三顶点的三角形,每次输出图形都可由用户自定义输出颜色。输出完成后按下任意键清屏,显示选项,用户可以继续输出三角形或者按下Q退出。 在BIOS调用方面本程序采用了多种写屏方式,力求每种功能实现采用相应的最简算法。 设计程序初考虑过使用Int 33h调用鼠标,是程序更加人性化,但是由于技术原因和设备显示难以实现,实在遗憾。 下面分析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时候的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购物资分类与库存管理工具
- 2025年兰溪市交通建设投资集团有限公司旅开公司高级运营管理人员招聘备考题库及完整答案详解一套
- 2026年内江市部分市本级事业单位公开选调工作人员14人的备考题库有答案详解
- 2025年英语四六级听力专项训练试卷:高频词汇解析与听力实战
- 2025年化工厂拆除工程结算合同
- 孩童防护措施保证承诺书4篇
- 软件缺陷修复报告工具软件升级效果对比表
- 2025年福建医科大学附属第二医院非在编工作人员招聘备考题库(三)及完整答案详解一套
- 2026年上海兰迪(海口)律师事务所招聘备考题库及一套参考答案详解
- 2026年首都文化科技集团有限公司招聘9人备考题库及答案详解(考点梳理)
- 2026年度财务总监工作计划(3篇)
- 2025美国心脏协会心肺复苏(CPR)与心血管急救(ECC)指南解读课件
- 职业毕业就业生涯规划书
- 腹腔出血课件
- 惊恐障碍的认知行为干预与药物协同
- 2025年国家统计局齐齐哈尔调查队公开招聘公益性岗位5人笔试考试备考试题及答案解析
- 啦啦操课件教学课件
- 2025年及未来5年市场数据中国抛光液市场运行态势及行业发展前景预测报告
- 2026年网络安全法培训课件
- 2025年全国新能源电力现货交易价格趋势报告
- 2025年尾矿库年度排放计划
评论
0/150
提交评论