1、一、设计任务1程设计的目的更深入的了解汇编这门语言,并从中学到东西掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力。提高我们对学习认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。培养我们从资料文献、科学实验中获得知识的能力,提高我们从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。培养我们勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。学习汇编语言综合应用程序设计方法,提高汇编语言实际应用能力,充分了解计算机硬件和软件,完成理论到实践的推进过程。2课程设计要求(1)根据微机软、硬件条件,每人选定一个具
2、有一定综合性的程序设计题目A对题目进行模块分析B 系统设计实用,功能全面C 按时 按量 完成任务(2)按时间上机完成调试任务3设计任务在DOS环境中编程完成以下任务:(1) 以滚动方式输出下车动态行驶图形(2) 小车在公路上动态行驶,从屏幕左侧驶向屏幕右侧后,在到达屏幕右侧后,公路下降。(3) 段距离并改变颜色,然后小车继续由左向右行驶(4) 当下降到屏幕底部时,再返回到屏幕顶部重复上述过程(5) 直到有键按下时,程序运行结束(6) 设计说明书:设计思想、参考程序的程序流程图和源程序4设备IBMPC微型计算机一台二、设计方案1、设计思想 主程序思想:使用BIOS中断调中显示器控制用子程序,要求
3、显示动态效果图像 即为一辆小车在公路上动态行驶,到达屏幕右方时,公路下降并改变颜色,小车又从左向右行驶 以此循环,直至有键按下时 结束程序。铺设公路模拟小车小车行驶在公路2、主程序流程框图 开始定义相关变量定义公路颜色定义小车的颜色定义列变量设置车体模型设置显示方式(320200)选择调色板设置公路颜色设置小车颜色写像素点计算公路坐标计算行坐标画公路画车模设置行坐标设置列坐标设置背景颜色取车模首地址 画一个点读当前点写当前右边的点画完8个点转?N列加1取下一个字节车模信息车模信息完转?YN设置移动总次数行坐标加一修改列坐标有键按下?清除公路和车模恢复文本显示方式结束YN23、源程序代码data
4、 segmentline dw 10 ;定义行变量color db 1 ;定义公路颜色color1 db 0 ;定义小车颜色corlum dw 2 ;定义列变量count1 dw 0 count2 dw 0 count3 dw 0 ;车体模型car_8 db 00000011b,11100000b db 00000010b,01010000b db 00000110b,01011000b db 01111111b,11111110b db 11111111b,11111111b db 11111011b,11101111b db 00001010b,00101000b db 00000100b
5、,00010000bdata endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,80 mov ah,0fh int 10h mov ax,0004h int 10h mov ah,0bh mov bh,1 ;选择1号调色板 mov bl,0 int 10hll: mov al,color ;设置公路颜色 inc al cmp al,3 jbe tt2 sub al,3tt: mov color1,al ;设置小车颜色 cmp al,1 jz tt3 inc al cmp al,3 jz tt2t
6、t3: inc altt2: mov color,al mov ax,line ;计算机行坐标 add ax,10 cmp ax,180 jbe tt1 sub ax,180tt1: mov line,ax mov ah,0ch ;写像素 mov dx,line add dx,8 ;计算公路坐标 mov cx,0 mov al,color ;设置公路颜色repet: mov bx,3 push ax int 10h ;画公路 pop ax inc cx cmp cx,319 ;未到屏幕最右转 jnz repet mov ah,0ch ;画车模 mov dx,line ;设置行坐标 mov cx
7、,corlum ;设置列坐标 mov si,offset car_8 ;取车模首坐标 mov count1,8 ;8行retry1: mov count2,2 ;每行2字节retry2: mov count3,8 ;每字节8位retry3: rol byte ptrsi,1 mov al,0 ;此位为0,置背景颜色 jnc next mov al,color1 ;此位为1,置背景颜色next: push ax push cx int 10h ;画一个点 pop cx pop ax inc cx ;列加1 dec count3 jnz retry3 ;未画完8个点转 inc si ;取下一个字节
8、的车模信息 dec count2 jnz retry2 ;车模信息未转完 inc dx mov cx,corlum dec count1 jnz retry1 ;未画完8行转 mov count1,320-18 ;设置移动总次数 mov cx,corlum add cx,15 ;小车最右点的列坐标送cxrepet1: push cx ;小车横向有16个点,外加1个空白点 mov count2,16+1repet2: mov dx,line ;车模向右移动1 个像素位 mov count3,8repet3: mov ah,0dh int 10h ;读当前点 mov ah,0ch push cx
9、inc cx int 10h ;写当前右边的点 pop cx inc dx ;行坐标加1 dec count3 ;车模向右移动1个像素位未完转 jnz repet3 dec cx ;修改列坐标 dec count2 ;小车移动1个车体位未完转 jnz repet2 pop cx inc cx ;修改列坐标 mov ah,1 int 16h jnz exit ;有键按下,转退出 dec count1 jnz repet1 mov dx,line ;清除公路和车模 call clears jmp ll ;无键按下,继续执行exit: mov ah,0 ;恢复文本显示方式 mov al,2 int
10、10h mov ah,4ch int 21hclears proc near push ax push cx push bx mov ax,0c00h mov bx,10cls0: mov cx,0cls1: int 10h inc cx cmp cx,320 jnz cls1 inc dx dec bx jnz cls0 pop bx pop cx pop ax retclears endpcode ends end start 三程序的调试与运行1、程序的调试程序的分析、代码的编写完成后,开始对代码进行编译和调试,我们采用DOS 环境对所编代码进行调式、编译。打开EMU8086压缩文件,新
11、建EXE模板,把源程序输入在新建模板中,之后进行保存,编译。当源程序出现语法错误时,就不能进行编译,调试过程中出现的错误如下:(1)编译后出现语法错误:(22)duplicate declaration of:DATA解决方法:将新建时自动生成的代码段删去,即可。(2)编译后 打开生成的EXE文件,运行时只有公路出现 但是颜色在改变,从上铺到下。解决方法:对源程序中tt: mov color1,al ;设置小车颜色进行更改,改为mov color1,al,则编译后生成的exe文件就能运行处动画效果。2、程序的运行 在程序调试完成的基础上,程序则能准确地运行,运行效果如下:以滚动方式输出下车动态
12、行驶图形小车在公路上动态行驶,从屏幕左侧驶向屏幕右侧后,在到达屏幕右侧后,公路下降。段距离并改变颜色,然后小车继续由左向右行驶当下降到屏幕底部时,再返回到屏幕顶部重复上述过程直到有键按下时,程序运行结束。四设计总结 1、设计的特点与不足小车速度过快,但可调试解决,还存在第一条公路上,小车运行不正常。不能独立增加一段程序代码,解决小车运行速度及车体颜色和小车颜色; 2、收获与体会通过这次为期近两周的微机原理课程设计,我深深感觉到这次的课程是比较难的,比较复杂的,让我深深的感觉到自己的不足。这次课程是一次具有挑战性的实践课程,在整个设计过程中我们小组遇到很多的困难。刚开始选题的时候,我们觉得这个题
13、目很有意思!但刚开始下手的时候,我们一组成员都是一头雾水,不知道该怎么做,老师上课也没有仔细讲过、所以只好自己查阅相关资料。首先是在处理问题上遇到一些困难,在理解题意分析时,出现偏差,导致错误,从中明白到要做到理论联系实际是相当困难的。而在写报告过程中发现自己对于课本的理论知识是多么的匮乏,以致在报告中对于理论的阐述和自己的见解是很廖少的。搞完这次课程设计,我更加明白数学和逻辑推理对程序的重要性,找到简单、合适及高效的算法可以大大节约程序运行的时间和空间,优化了程序,提高了运行的效率,这对于一个优秀的程序员来说是非常重要的。但是正是这次的课程设计我学会了很多东西,了解到理论实际是多么的重要,同时又是多么的困难,还有平时学习一定要认真踏实,把理论知识消化成自己的东西,并且要善于思考,多一些自己的想法和思路。感谢这次课程设计过程中给予我帮助的同学和老师,感谢学校给我们这次提高自己实践能力的机会。我觉得什么事都不应该轻易放弃,只要努力就会又结果! 五、创新得意之处不添加任何程序代码,在源程序中改变某条指令就可改变小车颜色和公路颜色。参考文献1微机原理与接口技术李兰友编清华大学出版社20092微机原理与应用潘名莲编 电子科技大学出版社19953新编深入DOS编程求伯君编 学苑出版社 1994 .忽略此处.