版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 报 告课程名称 汇编语言程序设计 课题名称 画脉冲波图形 专 业 通信工程 班 级学 号姓 名指导教师 廖 智201x年 06 月 22 日湖南工程学院课 程 设 计 任 务 书课程名称 汇编语言程序设计 课 题 画脉冲波图形 专业班级 学生姓名 学 号 指导老师 廖智 审 批 任务书下达日期 201x年 5 月 28日任务完成日期 201x年 6 月 22日一、设计内容与设计要求1.课程设计目的:汇编语言程序设计是计算机专业的重要的专业基础课,通过本课程设计使学生进一步巩固课堂所学,全面熟悉、掌握8088宏汇编语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上
2、机操作、调试程序的能力。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)按规定格式完成课程设计报告,将其打印稿(A4纸)上交给
3、老师存档。4)不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计,成绩的考核按上机表现、答辩成绩及课程设计说明书来综合评定。成绩分为优、良、中、及格、不及格五级分评定。二、进度安排第 17 周 星期 一 14 时:00分 18 时:00分 星期二 14 时:00分 18时:00分 星期五 14时:00分 18时:00分目 录1. 画脉冲波图形12. 程序总体设计方案、思路13. 程序设计框图14. 源程序清单25. 程序调试结果及分析96. 设计总结10画脉冲波图形要求:用户以十进制数形式从键盘输入脉冲高度、脉冲宽度和颜色参数(格式同上)后,以屏幕中间行为脉冲中间行,从左到右、满屏画出
4、相应的脉冲波图形。参数以十进制数形式输入,格式如下:Please enter heigth:*Please enter width:*Please enter color:*程序总体设计方案、思路设计方案:程序由输入、输出、图形显示构成。代码段、数据段、堆栈段都放在同一个段内,以便调用图形显示。在显示屏幕中间显示一根线,以便确认中间线,调用INT 10H的写像素功能以循环画脉冲波形图。思路.:首先写好需要调用的函数,接着给出提示输入参数,高度,宽度以及颜色,然后将输入的十进制数据转化为二进制数据。设置一个640X320的1 6色文本显示方式,将键盘读取的数据带入图形显示文本,显示脉冲波形图。开
5、始给出输入提示输入参数,高度,宽度和颜色将输入的十进制数转换成二进制设置图形显示方式画脉冲波形图结束程序设计框图图3.1总体流程图源程序清单Code Segment Assume CS:Code,DS:CodeCR EQU 000DHLF EQU 000AHKBBack EQU 0008H; ; 功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput MACRO Str_Addr lea dx,Str_Addr mov ah,9 int 21h E
6、ndM; ; 功能:输出回车换行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 retEnter_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 RET
7、Cursor_Row DB ?Cursor_Col DB ?GetCursor EndP; ; 功能:置光标位置; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)SetCursor Proc Near PUSH CX PUSH 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=保存输入的数
8、字首地址; 出口:转换后的二进制数保存在di所指的单元Input_Digit Proc Near push dx push cx push bx push di lea di,Save_Tmp push di cld mov cx,N push cxInput: call GetCursor ;取光标位置 mov ah,1 ;从键盘接受一个字符 int 21h cmp al,CR ;若键入的是回车,已经键入的数字不足N位 jz ASC_Dec ;转去处理已经键入的数字 cmp al,KBBack jz KB_Back ;若是回空键,重新输入 cmp al,'0' jb KBBa
9、ck ;若低于数字'0',重新输入 cmp al,'9' ja KBBack ;若低于数字'9',重新输入 jmp Save_DigKB_Back: dec Cursor_Col inc cx dec diKBBack: call SetCursor ;置光标位置 jmp InputSave_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 x
10、or ax,ax jcxz Save_Ret ;若直接回车,没有输入任何数字,按输入'0'处理 dec cx ;实际输入的数字位数减1,准备把输入的这一串数字转换成二进制数 jcxz One_Digit ;若输入的数字只有一位,转去直接保存这个二进制数 mov bx,10Mul_Ten: lodsb cbw add ax,bp mul 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(?)I
11、nput_Digit EndP; Prompt_Str1 db 'Please input pulse hight: $' ;提示输入脉冲高度Prompt_Str2 db 'Please input pulse width: $' ;提示输入脉冲宽度Prompt_Str3 db 'Please input line colour: $' ;提示输入波线颜色N equ 3 ;输入十进制数值位数Hight_Pulse dw ? ;脉冲高度Width_Pulse dw ? ;脉冲宽度Colou_Pulse dw ? ;波线颜色Start: push c
12、s pop ds push cs pop es ;使数据段、附加段与代码段同段 Output Prompt_Str1 ;提示输入脉冲高度 lea di,Hight_Pulse ;脉冲高度 call Input_Digit ;键盘输入一个3位的十进制数字,将其转换成二进制数并保存在指定的内存单元 call Enter_CTLF ;输出一个回车、换行 Output Prompt_Str2 ;提示输入脉冲宽度 lea di,Width_Pulse ;脉冲宽度 call Input_Digit call Enter_CTLF ;输出一个回车、换行 Output Prompt_Str3 ;提示输入波线颜
13、色 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,byte ptr Colou_Pulse ;取像素颜色L0: int 10h ;写一个指定颜色的像素 inc cx ;横向向右增值 dec bp test bp,bp jnz L0;
14、从左到右、满屏画出相应的脉冲波图形。 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 ;取脉冲宽度,一个脉冲周期L2: int 10h ;写一个指定颜色的像素 inc cx ;横向向右增值 cmp cx,639 ja Pause ;若到达屏幕最右边,跳出循环,等待用户按键,结束程序 dec
15、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 ;若到达屏幕最右边,跳出循环,等待用户按键,结束程序 dec bp test bp,bp jnz L4 mov bp,Hight_Pulse ;取脉冲高度 shl bp,1L5: int 1
16、0h ;写一个指定颜色的像素 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 END Start ;编译到此结束程序调试结果及分析a. 设置高度为100,宽度为100,以蓝色显示的脉冲图案。图5.1 参数设置b. 以640x480,16色的显示当输入的参数的脉冲波形图。当输入的参数过大,屏幕无法准确的显示,这时只要把参数适当的调下,就可以看到完整的图案。图5.2 脉冲波形图设计总结通过此次的课程设计,对80x86汇编语言程序设计有了更深入的了解。将课堂上所学的知识运用到实践当中,了解了实践的重要性,加强了自己的动手能力,也知道自己对学到的相关知识没有很好的掌握。在做课设中遇到了很多问题,通过询问老师,网上查阅资料以及同学的帮助下,问题得以解决。这次课程设计使我学到了很多东西,受益匪浅。总的来说,此次的课程设计算是顺利完成,汇编语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 解除医患关系的规范流程
- 理想之城培训课件
- 医患关系和谐发展策略
- 房地产策划面试技巧
- 乐器行业就业前景分析
- 班级拍手节奏课件
- 京东快递员面试内容指南
- 精准招聘话术与技巧
- 园林消防安全管理
- Chapter7Let'scelebrate语法(课件)-新版香港朗文英语六年级上册
- 驾驶员心理健康培训课件
- DBJ50T-306-2018 建设工程档案编制验收标准
- 室内装修工程高空作业方案
- 术前准备与术后护理指南
- 【基于Java的图书管理系统的设计与实现7600字(论文)】
- 数据库系统基础教程第三章答案
- 2024年广东省深圳市中考英语真题含解析
- 从烽火台到网络课件
- 2023中国儿童维生素E、维生素D临床应用专家共识(全文)
- 数学六年级上册-第八单元检测卷(一)
- 髋关节撞击综合征诊疗课件
评论
0/150
提交评论