《画脉冲波图形.doc》由会员分享,可在线阅读,更多相关《画脉冲波图形.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流画脉冲波图形.精品文档.课 程 设 计 报 告课程名称 汇编语言程序设计 课题名称 画脉冲波图形 专 业 通信工程 班 级 学 号 姓 名 指导教师 廖智 2012年 6 月 30 日湖南工程学院课 程 设 计 任 务 书课程名称 汇编语言程序设计 课 题 画脉冲波图形 专业班级 通信工程 学生姓名 学 号 指导老师 廖智、罗敬 审 批 任务书下达日期 2012年 5 月 26 日任务完成日期 2012年 6 月 30 日一、设计内容与设计要求1.课程设计目的:汇编语言程序设计是计算机专业的重要的专业基础课,通过本课程设计使学生进一步巩固课堂
2、所学,全面熟悉、掌握8088宏汇编语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。2.课题题目1)编写一个时钟程序2)画网格线3)画脉冲波图形4)用“*”画菱形框5)计算比赛成绩6)文件加密程序3设计要求:1)在一周内学生须上机16小时以上,程序调试完后,须由指导老师在机器上检查运行结果,经教师认可后的源程序可通过打印机输出。2)分组及安排A.每组同学必须完成所指定的题目,每个同学须自己完成设计,应有不同的思路。B.按学号分组,第一组为1、7、13、19、25号同学,第二组为2、8、14、20、26号,第三组为3、9、15、21、27号,依次类推,其中
3、第一组做第一题,第二组做第二题,依次类推。3)按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。4)不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计,成绩的考核按上机表现、答辩成绩及课程设计说明书来综合评定。成绩分为优、良、中、及格、不及格五级分评定。二、进度安排第 周 星期一 8时:00分12时:00分 星期五 8时:00分12时:00分 星期五 14时:00分18时:00分课题1编写一个时钟程序 要求:A、驻留内存。B、不影响其它程序运行。C、把时钟信号显示在屏幕固定位置(最好为右上角)。 思路:先从系统实时钟取得当前时间,每隔约0.05秒定时器向发出一次号中断请求
4、,是一个硬中断。窃取 INT 1CH中断服务程序。课题2画网格线要求:A、背景为蓝色、横线为红色、直线为黄色。B、按用户输入的起点和终点坐标、列距和行距的大小画出任意条横竖线。C、参数以十进制数形式输入,格式如下: Please enter starting point (x1,y1):XX, XX Please enter ending point (x2,y2):XX, XX Please enter distance (row,col):XX, XX课题3画脉冲波图形 要求:用户以十进制数形式从键盘输入脉冲高度、脉冲宽度和颜色参数(格式同上)后,以屏幕中间行为脉冲中间行,从左到右、满屏画
5、出相应的脉冲波图形。课题4用“*”画菱形框要求:A、背景为蓝色、“*”为红色,菱形框画在屏幕中间,菱形中间为空格。B、用户以十进制数形式输入菱形宽度和高度(格式同上)。课题5计算比赛成绩要求:A、7个评委,每个评委给分范围为010分(整数)。B、7个评委的给分中,去掉一个最高分和一个最低分,余下5位评委的平均分即为参加者的得分(精确到小数点后一位)。C、将分数在屏幕中间位置处用红色显示出来。课题6文件加密程序 要求:A、文件名从键盘输入。 B、加密密钥从键盘输入。 思路:从原文件读取内容至缓冲区,对其加密后,重新写回文件原来的地方。 提示要点:A、加密可使用“异或”操作。 B、相关中断为3DH
6、,3EH,3FH,40H,42H号系统功能调用(INT 21H)目 录1.题目12.程序总体设计方案、思路13.程序设计框图14.源程序清单25.程序调试结果及分析76.设计总结81. 题目课题3画脉冲波图形要求:用户以十进制数形式从键盘输入脉冲高度、脉冲宽度和颜色参数后,以屏幕中间行为脉冲中间行,从左到右、满屏画出相应的脉冲波图形。参数以十进制数形式输入,格式如下:Please enter heigth :XX Please enter width:XXPlease enter color:XX2. 程序总体设计方案、思路设计方案:整个题目的过程可以分成参数的输入和利用输入的参数显示方波的过
7、程,所以可以把题目分成输入过程和显示两个过程。输入阶段,设置三个字符串来显示输入提示语句,再设置三个变量来存放输入进来的值的二进制数,也就是要显示的方波的三个参数,因这三个参数输入的时候是用十进制的数制输入的,还必须用一个子程序将输入的十进制数转换成二进制数。显示过程,在屏幕中央画一根线,然后利用640x480,16色图形显示方式,屏幕显示的方波高度范围为0到320,宽度范围为0到240,颜色选择为0到15。然后再根据输入的方波参数显示方波图形。思路:因整个过程要调用图形显示,所以把代码段、数据段、堆栈段都放在同一个段内。先提示输入的方波参数,再把输入的参数转换成二进制存储,最后通过输入的参数
8、显示方波。3. 程序设计框图开始提示输入参数,高度,宽度和颜色将输入的十进制数转换成二进制设置640x320,16色文本显示方式,读入输入的参数,显示脉冲波形结束并驻留4. 源程序清单; 操作说明:运行开始,首先要输入3个参数:脉冲高度、脉冲宽度和波线颜色。; 各项取值范围:; 脉冲高度:0240; 脉冲宽度:0320; 波线颜色:015(参见下方的颜色参数表); 数值位数满3位的,自动结束当前项输入,不必回车;不足3位数的,; 需按回车键结束当前输入。Code Segment Assume CS:Code,DS:CodeCR EQU 000DHLF EQU 000AHKBBack EQU 0
9、008H; Dark Colors (Foreground & Background); Constant ValueBlack EQU 0Blue EQU 1Green EQU 2Cyan EQU 3Red EQU 4Magenta EQU 5Brown EQU 6LightGray EQU 7; Light Colors(Foreground); Constant ValueDarkGray EQU 8LightBlue EQU 9LightGreen EQU 10LightCyan EQU 11LightRed EQU 12LightMagenta EQU 13Yellow EQU 14
10、White EQU 15Blinking EQU 80H; 功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput MACRO Str_Addr lea dx,Str_Addr mov ah,9 int 21h EndM; 功能:输出回车换行Enter_CTLF proc Near push ax push dx mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h pop dx pop ax retEn
11、ter_CTLF endp ; 功能:取光标位置; 入口:无; 出口:DH=行号,DL=列号GetCursor Proc Near PUSH AX PUSH BX PUSH CX XOR BX,BX MOV AH,3 INT 10H MOV Cursor_Row,DH MOV Cursor_Col,DL POP CX POP BX POP AX RETCursor_Row DB ?Cursor_Col DB ?GetCursor EndP; 功能:置光标位置; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)SetCursor Proc Near PUSH CX PUSH
12、 BX PUSH AX MOV DH,Cursor_Row MOV DL,Cursor_Col XOR BX,BX MOV AH,2 INT 10H POP AX POP BX POP CX RETSetCursor EndP; 功能:键盘输入一个N位的十进制数字,将其转换成二进制数并保存在指定的内存单元。; 入口:N=数字位数;di=保存输入的数字首地址; 出口:转换后的二进制数保存在di所指的单元Input_Digit Proc Near push dx push cx push bx push di lea di,Save_Tmp push di cld mov cx,N push cx
13、Input: call GetCursor ;取光标位置 mov ah,1 ;从键盘接受一个字符 int 21h cmp al,CR ;若键入的是回车,已经键入的数字不足N位 jz ASC_Dec ;转去处理已经键入的数字 cmp al,KBBack jz KB_Back ;若是回空键,重新输入 cmp al,0 jb KBBack ;若低于数字0,重新输入 cmp al,9 ja KBBack ;若低于数字9,重新输入 jmp Save_DigKB_Back: dec Cursor_Col inc cx dec diKBBack: call SetCursor ;置光标位置 jmp Inpu
14、tSave_Dig: and al,0fh ;转换成二进制数 stosb ;保存 loop Input ;接受下一个数字ASC_Dec: mov ax,cx pop cx pop si sub cx,ax ;实际输入的数字位数 xor bp,bp xor dx,dx xor ax,ax jcxz Save_Ret ;若直接回车,没有输入任何数字,按输入0处理 dec cx ;实际输入的数字位数减1,准备把输入的这一串数字转换成二进制数 jcxz One_Digit ;若输入的数字只有一位,转去直接保存这个二进制数 mov bx,10Mul_Ten: lodsb cbw add ax,bp mu
15、l bx mov bp,ax loop Mul_TenOne_Digit:lodsb cbw add ax,bpSave_Ret: pop di stosw pop bx pop cx pop dx retSave_Tmp db 16 dup(?)Input_Digit EndPPrompt_Str1 db Please input pulse hight: $ ;提示输入脉冲高度Prompt_Str2 db Please input pulse width: $ ;提示输入脉冲宽度Prompt_Str3 db Please input line colour: $ ;提示输入波线颜色N eq
16、u 3 ;输入十进制数值位数Hight_Pulse dw ? ;脉冲高度Width_Pulse dw ? ;脉冲宽度Colou_Pulse dw ? ;波线颜色Start: push cs pop ds push cs pop es ;使数据段、附加段与代码段同段 Output Prompt_Str1 ;提示输入脉冲高度 lea di,Hight_Pulse ;脉冲高度 call Input_Digit ;键盘输入一个3位的十进制数字,将其转换成二进制数并保存在指定的内存单元 call Enter_CTLF ;输出一个回车、换行 Output Prompt_Str2 ;提示输入脉冲宽度 lea
17、 di,Width_Pulse ;脉冲宽度 call Input_Digit call Enter_CTLF ;输出一个回车、换行 Output Prompt_Str3 ;提示输入波线颜色 lea di,Colou_Pulse ;波线颜色 call Input_Digit mov ax,12h ;设置640x480,16色图形显示方式 int 10h; 以屏幕中间行为脉冲中间行,画一条横线 mov bp,640 ;横向点数 xor bh,bh xor cx,cx ;横向起始点 mov dx,480 ;图形显示方式,一列480点 shr dx,1 ;纵向起始点 mov ah,0ch mov al
18、,byte ptr Colou_Pulse ;取像素颜色L0: int 10h ;写一个指定颜色的像素 inc cx ;横向向右增值 dec bp test bp,bp jnz L0; 从左到右、满屏画出相应的脉冲波图形。 mov bp,Hight_Pulse ;取脉冲高度 xor cx,cx ;横向起始点 mov dx,480 ;图形显示方式,一列480点 shr dx,1 ;纵向起始点L1: int 10h ;写一个指定颜色的像素 dec dx ;纵向向上减值 dec bp test bp,bp jnz L1Pulse_Wave: mov bp,Width_Pulse ;取脉冲宽度,一个脉
19、冲周期L2: int 10h ;写一个指定颜色的像素 inc cx ;横向向右增值 cmp cx,639 ja Pause ;若到达屏幕最右边,跳出循环,等待用户按键,结束程序 dec bp test bp,bp jnz L2 mov bp,Hight_Pulse ;取脉冲高度 shl bp,1L3: int 10h ;写一个指定颜色的像素 inc dx ;纵向向下增值 dec bp test bp,bp jnz L3 mov bp,Width_Pulse ;取脉冲间断宽度L4: int 10h ;写一个指定颜色的像素 inc cx ;横向向右增值 cmp cx,639 ja Pause ;若
20、到达屏幕最右边,跳出循环,等待用户按键,结束程序 dec bp test bp,bp jnz L4 mov bp,Hight_Pulse ;取脉冲高度 shl bp,1L5: int 10h ;写一个指定颜色的像素 dec dx ;纵向向上减值 dec bp test bp,bp jnz L5 jmp Pulse_Wave ;一个脉冲周期结束,进行下一个脉冲周期Pause: mov ah,1 ;暂停,按任意键结束程序 int 21h mov ah,3 ;设置80x25,16色文本显示方式 int 10hExit_Proc: mov ah,4ch ;结束程序 int 21hCode ENDS E
21、ND Start ;编译到此结束5. 程序调试结果及分析当输入上述参数时,满屏显示的是高度为54,宽度为27,以蓝绿色显示的脉冲图案。图中包含了多个完整的方波图形。是参数合理状况下的脉冲图形。当输入参数超过范围时,屏幕显示不出一个完整的图案,因为使用的是640x480的显示,当输入的参数过大,屏幕无法准确的显示。这时只要把参数适当的调下,就可以看到完整的图案。6. 设计总结在这次的课程设计中,遇到了以前实验时没有碰到过的很多困难,因为之前没有做过汇编课设,在刚开始的时候,遇到了很多困难,感觉到自己根本无从下手。但通过老师的讲解以及同学的帮助,终于完成了任务。通过这次课程设计,让我对汇编语言的基本语法和常用的中断有了更加深入的了解。总的来说,课程设计就是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节。当今计算机应用在生活中可以说是无处不在,因此掌握一些编程语言对我们来说是基本的要求,也让我感觉到要掌握好一门语言,必须通过长时间的积累、运用和思考。计算机与通信学院课程设计评分表课程名称: 汇编语言程序设计 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期:
限制150内