画脉冲波图形剖析Word文档格式.docx
《画脉冲波图形剖析Word文档格式.docx》由会员分享,可在线阅读,更多相关《画脉冲波图形剖析Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
![画脉冲波图形剖析Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/12/7d44cc6b-8f11-4111-afb4-b5293fd42e83/7d44cc6b-8f11-4111-afb4-b5293fd42e831.gif)
4)不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计,成绩的考核按上机表现、答辩成绩及课程设计说明书来综合评定。
成绩分为优、良、中、及格、不及格五级分评定。
二、进度安排
第2周星期一8时:
00分——12时:
00分
星期二8时:
星期三8时:
星期四8时:
课题1.用“*”画菱形框
要求:
A、背景为蓝色、“*”为红色,菱形框画在屏幕中间,菱形中间为空格。
B、用户以十进制数形式输入菱形宽度和高度(格式同上)。
课题2.读入一个文本文件并以DEBUG中的D命令格式显示。
要求:
A、以DEBUG中的D命令格式显示一个文本文件。
B、文件名从键盘键入。
思路:
A、打开相应文件,读内容至程序缓冲区。
B、按要求显示。
课题3.文件加密程序
A、文件名从键盘输入。
B、加密密钥从键盘输入。
从原文件读取内容至缓冲区,对其加密后,重新写回文件原来的地方。
提示要点:
A、加密可使用“异或”操作。
B、相关中断为3DH,3EH,3FH,40H,42H号系统功能调用(INT21H)
课题4.编写一个时钟程序
A、驻留内存。
B、不影响其它程序运行。
C、把时钟信号显示在屏幕固定位置(最好为右上角)。
先从系统实时钟取得当前时间,每隔约0.05秒定时器向CPU发出一次8号中断请求,是一个硬中断。
窃取INT1CH中断服务程序。
课题5.画网格线
A、背景为蓝色、横线为红色、直线为黄色。
B、按用户输入的起点和终点坐标、列距和行距的大小画出任意条横竖线。
C、参数以十进制数形式输入,格式如下:
Pleaseenterstartingpoint(x1,y1):
XX,XX
Pleaseenterendingpoint(x2,y2):
XX,XX
Pleaseenterdistance(row,col):
课题6.画脉冲波图形
用户以十进制数形式从键盘输入脉冲高度、脉冲宽度和颜色参数(格式同上)后,以屏幕中间行为脉冲中间行,从左到右、满屏画出相应的脉冲波图形。
课题7.测量任意程序的运行时间
该程序驻留内存
DOS操作系统中,程序的调入运行及程序的终止均是通过相应的软中断来实现的。
若窃取相应软中断,记录下程序开始调入运行的时间及程序终止的时间,则可测量出该程序运行的时间。
与之相关的软中断分别为:
程序开始执行:
4BH号系统功能调用(INT21H)
程序结束:
INT20H
INT27H
00H、3lH、4CH号系统功能调用(INT21H)
课题8.计算比赛成绩
A、7个评委,每个评委给分范围为0~10分(整数)。
B、7个评委的给分中,去掉一个最高分和一个最低分,余下5位评委的平均分即为参加者的得分(精确到小数点后一位)。
C、将分数在屏幕中间位置处用红色显示出来。
目录
1.题目5
2.程序总体设计方案、思路5
3.程序设计框图5
4.源程序清单6
5.程序调试结果及分析12
6.设计总结14
7.课程设计评分表15
1.题目
课题3.画脉冲波图形
用户以十进制数形式从键盘输入脉冲高度、脉冲宽度和颜色参数
后,以屏幕中间行为脉冲中间行,从左到右、满屏画出相应的脉冲波图形。
参数以十进制数形式输入,格式如下:
Pleaseenterheigth:
XX
Pleaseenterwidth:
XX
Pleaseentercolor:
2.程序总体设计方案、思路
设计方案:
整个题目的过程可以分成参数的输入和利用输入的参数显示方波的过程,
所以可以把题目分成输入过程和显示两个过程。
输入阶段,设置三个字符串来显示输入提示语句,再设置三个变量来存放输入进来的值的二进制数,也就是要显示的方波的三个参数,因这三个参数输入的时候是用十进制的数制输入的,还必须用一个子程序将输入的十进制数转换成二进制数。
显示过程,在屏幕中央画一根线,然后利用640x480,16色图形显示方式,屏幕显示的方波高度范围为0到320,宽度范围为0到240,颜色选择为0到15。
然后再根据输入的方波参数显示方波图形。
思路:
因整个过程要调用图形显示,所以把代码段、数据段、堆栈段都放在同一个段内。
先提示输入的方波参数,再把输入的参数转换成二进制存储,最后通过输入的参数显示方波。
3.程序设计框图
图3.1
4.源程序清单
;
操作说明:
运行开始,首先要输入3个参数:
脉冲高度、脉冲宽度和波线颜色。
各项取值范围:
脉冲高度:
0~240
脉冲宽度:
0~320
波线颜色:
0~15(参见下方的颜色参数表)
数值位数满3位的,自动结束当前项输入,不必回车;
不足3位数的,
需按回车键结束当前输入。
CodeSegment
AssumeCS:
Code,DS:
Code
CREQU000DH
LFEQU000AH
KBBackEQU0008H
-------------------------------------
DarkColors(Foreground&
Background)
ConstantValue
BlackEQU0
BlueEQU1
GreenEQU2
CyanEQU3
RedEQU4
MagentaEQU5
BrownEQU6
LightGrayEQU7
LightColors(Foreground)
DarkGrayEQU8
LightBlueEQU9
LightGreenEQU10
LightCyanEQU11
LightRedEQU12
LightMagentaEQU13
YellowEQU14
WhiteEQU15
BlinkingEQU80H
功能:
显示指定地址(Str_Addr)的字符串
入口:
Str_Addr=字符串地址(要求在数据段)
用法:
OutputStr_Addr
用法举例:
OutputPromptStr
OutputMACROStr_Addr
leadx,Str_Addr
movah,9
int21h
EndM
-------------------------------------
输出回车换行
Enter_CTLFprocNear
pushax
pushdx
movah,02h
movdl,0dh
movdl,0ah
int21h
popdx
popax
ret
Enter_CTLFendp
取光标位置
无
出口:
DH=行号,DL=列号
GetCursorProcNear
PUSHAX
PUSHBX
PUSHCX
XORBX,BX
MOVAH,3
INT10H
MOVCursor_Row,DH
MOVCursor_Col,DL
POPCX
POPBX
POPAX
RET
Cursor_RowDB?
Cursor_ColDB?
GetCursorEndP
置光标位置
Cursor_Row=行坐标;
Cursor_Col:
列坐标)
SetCursorProcNear
MOVDH,Cursor_Row
MOVDL,Cursor_Col
MOVAH,2
SetCursorEndP
-------------------------------------
键盘输入一个N位的十进制数字,将其转换成二进制数并保存在指定的内存单元。
N=数字位数;
di=保存输入的数字首地址
转换后的二进制数保存在di所指的单元
Input_DigitProcNear
pushcx
pushbx
pushdi
leadi,@@Save_Tmp
cld
movcx,N
@@Input:
callGetCursor
movah,1
cmpal,CR
jz@@ASC_Dec
cmpal,KBBack
jz@@KB_Back
cmpal,'
0'
jb@@KBBack
9'
ja@@KBBack
jmp@@Save_Dig
@@KB_Back:
decCursor_Col
inccx
decdi
@@KBBack:
callSetCursor
jmp@@Input
@@Save_Dig:
andal,0fh
stosb;
保存
loop@@Input
@@ASC_Dec:
movax,cx
popcx
popsi
subcx,ax
xorbp,bp
xordx,dx
xorax,ax
jcxz@@Save_Ret
deccx
jcxz@@One_Digit
movbx,10
@@Mul_Ten:
lodsb
cbw
addax,bp
mulbx
movbp,ax
loop@@Mul_Ten
@@One_Digit:
lodsb
@@Save_Ret:
popdi
stosw
popbx
@@Save_Tmpdb16dup(?
)
Input_DigitEndP
Prompt_Str1db'
Pleaseinputpulsehight:
$'
Prompt_Str2db'
Pleaseinputpulsewidth:
Prompt_Str3db'
Pleaseinputlinecolour:
Nequ3
Hight_Pulsedw?
Width_Pulsedw?
Colou_Pulsedw?
Start:
pushcs
popds
popes
OutputPrompt_Str1
leadi,Hight_Pulse
callInput_Digit
callEnter_CTLF
OutputPrompt_Str2
leadi,Width_Pulse
callInput_Digit
callEnter_CTLF
OutputPrompt_Str3
leadi,Colou_Pulse
movax,12h
int10h
movbp,640
xorbh,bh
xorcx,cx
movdx,480
shrdx,1
movah,0ch
moval,byteptrColou_Pulse
L0:
int10h
inccx
decbp
testbp,bp
jnzL0
movbp,Hight_Pulse
L1:
decdx
jnzL1
Pulse_Wave:
movbp,Width_Pulse
L2:
cmpcx,639
jaPause
jnzL2
movbp,Hight_Pulse
shlbp,1
L3:
incdx
jnzL3
movbp,Width_Pulse
L4:
jnzL4
L5:
decdx
jnzL5
jmpPulse_Wave
Pause:
movah,3
Exit_Proc:
movah,4ch
CodeENDS
ENDStart
5.程序调试结果及分析
图5.1调试执行窗口1
图5.2调试执行窗口2
当程序运行时,执行窗口提示输入参数,如图5.1所示。
当输入上述参数时,如图5.2,满屏显示的是高度为20,宽度为20,以蓝绿色显示的脉冲图案。
图中包含了多个完整的方波图形。
是参数合理状况下的脉冲图形。
当输入参数超过范围时,屏幕显示不出一个完整的图案,因为使用的是640x480的显示,当输入的参数过大,屏幕无法准确的显示。
这时只要把参数适当的调下,就可以看到完整的图案。
图5.3脉冲波形图
图5.3为输入参数按回车键后得到的满屏脉冲波图形。
6.设计总结
通过这次课程设计学到的不仅是知识,而是解决困难的能力。
在这次的课程设计中,遇到了以前实验时没有碰到过的很多困难,因为之前没有做过汇编课设,在刚开始的时候,遇到了很多困难,感觉到自己根本无从下手。
但通过老师的讲解以及同学的帮助,终于完成了任务。
通过这次课程设计,让我对汇编语言的基本语法和常用的中断有了更加深入的了解。
总的来说,课程设计就是培养我们综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节。
当今计算机应用在生活中可以说是无处不在,因此掌握一些编程语言对我们来说是基本的要求,也让我感觉到要掌握好一门语言,必须通过长时间的积累、运用和思考,这样才能学到真正的知识。
不管怎么说,我觉得最重要的是能有这样的一次课设经历让我在遇到困难的时候学会了怎么解决问题。
计算机与通信学院课程设计评分表
课程名称:
汇编语言程序设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期: