1、武汉理工大学 微机原理与接口技术 课程设计说明书 1 目录 摘要 . 2 1 总体设计 . 3 1.1 总体设计思路 . 3 1.3 程序流程图 . 3 2 程序设计与实现 . 5 2.1 初始条件 . 5 2.2 设置屏幕显示方式 . 5 2.3 输出文本 信息 . 6 2.4 键盘处理子程序 . 7 2.5 绘制图形 . 7 2.6 绘制坐标系 . 8 2.7 清屏过程 . 8 2.8 绘制波形曲线 . 9 2.9 相位及幅值的改变 . 9 3 程序调试及结果 . 10 4 总结与体会 . 12 参考文献 . 13 附录 1 . 14 武汉理工大学 微机原理与接口技术 课程设计说明书 2
2、摘要 通过汇编语言设计一个运行于计算机的显示 波形 的软件,软件应实现根据定义的数组或从键盘输入的数据串显示 波形。并通过键盘输入改变波形类型,相位。 运用基本程序设计方法、 DOS 和 BIOS 调用 ,宏汇编的基本概念和方法,通过上机操作和程序调试技术,进行软件设计。 将计算机理论知识转化为计算机 应用知识。设计波形中利用笛卡尔坐标和屏幕像素完成波形绘制,实验中,利用插标法产生正弦波,绘制一张正弦数字量表。汇编语言中,可以通过调用 DOC 中断,int 21h 处理输入输出信息,同时还通过 BIOS 中断 int 10h 设置输出字符的起始位置。通过这些完成波形绘制和变换。 关键词: DO
3、C , BIOS , 宏汇编 武汉理工大学 微机原理与接口技术 课程设计说明书 3 1 总体设计 1.1 总体设计思路 通过汇编语言产生方波和正弦波,并控制波形的幅值和相位。 波形曲线可以看成一个函数,屏幕是由一个个像素点组成,它可以看成一个笛卡尔坐标系 ,曲线的每一个点对应着一个横坐标,对应着一个纵坐标(函数值),不同的曲线有不同的函数 ,只要找到曲线上点的坐标(函数值)就可以绘制出不同的曲线,所以,问题的关键就在于如何获得并显示出不同波形曲线的函数值。 本实验中采用查表法产生正弦波,造一张正弦数字量表,即查函数表得到的值转换成十六进制数填表。 D/A 转换取值范围为一个周期,采样点越多,精
4、度越高,本实验中采样点为 128 点 /周期。正弦数字量表中的值为参考值,对于不同幅值的正弦波可以通过把表中的每个值乘以相同的倍数得到。 方波,只需确定其极值,在第一时间段为正, 在第二时间段为负,以此类推。 1.2 程序流程图 程序从初始化开始,首先让指针指向提示信息一,即在屏幕上显示: “ 1 sin;2 cos;3 clear;E/e exit;right/left change pha se;up/down change amplitude” ; 当有键按下后,如果键是 1,则转向执行产生正弦波的程序; 如果键不是 1,则看键是否为 2。如果键是 2,则转向执行产生方波的程序; 如果键
5、也不是 2,则看是否为 3。如果是 3,则转向执行清屏的程序; 如果也不是 3,则看是否为 e或者 E。如果 是 e 或者 E,则转向执行结束程序。 以正弦波为例,当程序判断为按键 1 时,继续判断是否为“”,“”,“”,“”若为是 则执行右移,左移,幅度变大,幅度减小。其他波形同正弦波,这里不一一累述。 武汉理工大学 微机原理与接口技术 课程设计说明书 4 结束 开始 1按下? 正弦波 2按下? 方波 3按下 ? 清屏 左键按下? 左移 右键按下? 右移 E/e 键按下? 绘制坐标系 设置屏幕显示方式 输出提示信息 武汉理工大学 微机原理与接口技术 课程设计说明书 5 2 程序设计与实现 2
6、.1 初始条件 1.用于调试程序的 IBM 兼容 PC 机一台; 2.安装 DOS/WIN98 操作系统或运行于 DOS/ WIN98 兼容方式; 3.EDIT 等文本编辑器输入 80x86 汇编程序, MASM 5.0 编译及链接程序。 2.2 设置屏幕显示方 式 IBM-PC 的标准显示适配器,一种是单色显示,它只能显示黑白字母、数字、符号和菱形等简单的图形字符,它是以文本方式工作的;另一种是彩色 /图形适配器 EGA 和 VGA,它能以文本和图形两种方式工作。在彩色 /图形适配器中把屏幕分成 M*N 个点阵,每个坐标上的图像元素就是一个像素。 通过调用 BIOS 中断 int 10h 的
7、 0 号功能可以设置屏幕的显示方式。调用方式如下:入口参数: AH=0(功能号), AL=设置方式。部分显示设置方式调用参数如表 2-1。出口参数:无。 表 2-1 部分显示设置方式表 调用参数 AL 显示方式 00H 40*25 黑白字符方式 01H 40*25 彩色字符方式 02H 80*25 黑白字符方式 03H 80*25 彩色字符方式 04H 320*200 彩色图形方式 11H 640*480 单色图形 12H 640*480 16 色图形 本设计中选用 04号功能,设置屏幕分辨率为 320*200,彩色图形方式,字符分辨率为 80*25。其中屏幕的最左上角坐标为( 0,0)。 武
8、汉理工大学 微机原理与接口技术 课程设计说明书 6 程序模块如下: ;设置屏幕显示方式宏 setscreen macro mov ah,0 mov al,04h int 10h endm 2.3 输出文本信息 为了拥有一个良好的人机交互界面,在程序设计中,文本提示信息的输出有着非常重要的作用。汇编语言中,可以通过调用 DOS 中断, int 21h 处理输入和输出信息,同时还可以通过 BIOS 中断 int 10h 设置输出字符的起始位置。 设置输出字符的起始位置模块如下: mov ah,2 ;用文本坐标下设置光标位置 mov dh, X ;第一个字符输出的行坐标 mov dl,Y ; 第一个
9、字符输 出的列坐标 int 10H 显示字符串需要调用 int 21h 中断的 09 号功能。 程序模块如下: ;设置输出宏,带参数 output macro mess ;mess 为字符串变量名 mov ah,2 mov dh,22 mov dl,1 int 10H ;设置字符输出开始位置 mov dx,offset mess mov ah,9 武汉理工大学 微机原理与接口技术 课程设计说明书 7 int 21h endm 宏执行完成后 ,将在 22行第一列开始输出变量 mess 的字符串。 2.4 键盘处理子程序 键盘处理使用 BIOS 或者 DOS 键盘中断, BIOS 中断 INT16
10、H,本程序中使用 DOS键盘中断,调用如下: mov ah,0ch ;清 除 键盘缓冲区 mov ah,7 ;等待从键盘输入一个字符,不回显 int 21h ;返回参数 AL=按下键的 ASC 码 2.5 绘制图形 本设计选用的屏幕显示方式为 320*200 彩色图形方式,即横坐标有 320 个点,纵坐标有 200 个点,默认左上角为坐标原点( 0,0)。要画出波形曲线, 则要每个横坐标都对应着一个纵坐标的值。值不同绘制出的波形曲线也不同。把不同的曲线纵坐标的值储存在表中,通过查表可以得到不同曲线。每种曲线每周期取128 个点,然后在屏幕上绘制出这些点,从而显示出相应的波形曲线。 屏幕上的图形
11、是由多个像素点组成,所以各种曲线也由多个点组成。在指定的坐标位置上写像素点的方式如下: mov ah,0ch mov al,color ;像素点的颜色 (03) mov cx,col ;列号 mov dx,row ;行号 int 10h 武汉理工大学 微机原理与接口技术 课程设计说明书 8 2.6 绘制坐标系 由于屏幕默 认的原点为左上角为( 0,0),要在屏幕中间绘制曲线,所以在绘制前要进行坐标的变换,转化为笛卡尔坐标系,该子程序如下: ;绘制笛卡尔坐标系 draw_zuobiao proc near mov cx,0 d_heng: ;绘制横轴 mov ah,0ch mov al,01h
12、;像素的颜色 mov dl,100 int 10h inc cx cmp cx,320 jne d_heng mov cx,0 mov dl,0 2.7 清屏过程 清屏程序的设计原理,是 用背景色的像素点重新在全屏进行绘制。 clear1: mov ah,0ch mov al,00h;背景色重新刷屏 int 10h inc cx cmp cx,320 武汉理工大学 微机原理与接口技术 课程设计说明书 9 2.8 绘制波形曲线 根据不同的按键值,绘制不同的波形曲线。如: draw_line proc near 画线过程 ,先绘制第一周期 push si mov ax,col add bx,ax
13、call d_line pop si call draw_line1 2.9 相位的改变 相位的改变原理是当左 /右方向键之一按下时,将曲线绘制的起始点向左 /右平移 10个像素点,然后重新绘制。 幅值的改变原理是当上 /下方向键之一按下时,改变 si指针,指向另外一个幅值的函数表,重新绘制波形曲线。如: ;改变相位,右方向键按下一次曲线右移 10个像素点 key_right proc near mov cx,col add cx,10 mov col,cx cmp temp,1 jz right1 武汉理工大学 微机原理与接口技术 课程设计说明书 10 3 程序调试及结果 通过运行程序可实现正弦波,方波,以及两种种波形的相位改变。调节时如重新回到初始页面,按数字键“ 3”,即可完成清屏指令并返回最初界面。按 e/E 退出程序。以下位移及幅值改变以正弦波为例。 按下数字 1,显示两个周期的正弦波形曲线 3-1 3-1 正弦波形 按下方向键右,曲线向右移动,如图 3-2 3-2 正弦波右移 按下方向键左,曲线向左移动,如 3-3