汇编语言课程设计任务书(2)

2020-08-23 22:54

会成功。TC编译器默认情况下,对外部标识符均要在其首部加下划线,所以C程序中调用的函数ADDUP在这里也是以下划线标出:_ADDUP。

(2)编译过程

①用MASM宏汇编在命令行下对ADDM. ASM汇编,汇编后生成一个模块文件 ADDM.OBJ,然后将ADDM.OBJ复制到TC目录下,以便于建立TC下的工程文件。

②工程文件的建立。在TC集成环境下建一个新文件,其内容为:

就只有以上两行内容,写完后保存为ADDCM.PRJ,说明了该工程包含了ADDC.C和ADDM.OBJ两个程序模块。

③对工程文件编译连接。在TC环境中利用Compile—Make EXE file命令,可将该文件编译连接为ADDCM.EXE。

运行ADDCM.EXE,结果如下:

6

二、系统时间的获取和显示 (一)时间的获取 调用系统日期和时间,并将调用的日期和时间数转换成ASCII码存在系统内存区的字符串中。将存在系统内存区的日期和时间用字符串存入显存区(显存的起始地址:B800:0000)并在合适的位置显示出来。由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式(如利用定时器中断,中断类型号为1CH)来不断获取系统的时间,这样就形成了会跳动的电子钟。流程图如图1、图2所示。 开 始 获取原1CH中断向量 保存原中断向量保存原中断类型 保护现场 设置新1CH的中断向量 读取系统日期、时间 开定时器中断 分别将时间的时、分、秒转换为ASCII码 执行中断处理程序断 在指定位置显示日期和时间 恢复原1CH的中断向量 恢复现场 结束 中断返回 图1 主程序流程图 图2 中断处理程序流程图 (二)屏幕特定位置显示字符 阅读教材P.324-335页内容。 对应屏幕上的每个字符位置,显存空间都有相应的存储单元与之对应。对应显示在屏幕上的每个字符,在存储器中由连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。属性字节对单色显示和彩色显示都是有效的。相应的值与属性关系参考教材P.325图9.5以及P.326图9.6以及表9.7。 7 我们可以使用BOIS显示中断10H的各项功能来进行显示字符的编程。 首先,利用0号功能设置屏幕显示方式:

MOV AX,0003H ;设置80×25彩色文本方式 INT

10H

设置光标位置: MOV AH,02H MOV BH,显示的页号 MOV DX,显示的行、列

INT

10H

在光标位置显示字符: MOV AH,09H MOV BH,显示的页号 MOV BL,字符属性值 MOV AL,显示的字符 MOV CX,显示次数 INT

10H

8

三、使PC发出音符声音

8253定时器内部有三个独立的计数器:Counter0、Counter1、Counter2(端口地址为40H、41H、42H)和一个控制寄存器(端口地址为43H)。三个计数器是分别编程的,对任一个计数器编程时,首先要将控制字节写入控制寄存器。控制字节各位含义如图1所示.

图1 控制字节各位含义

PC中,通过初始化控制寄存器(43H端口值为0B6H),使通道2用于扬声器发声。使扬声器发声的驱动电路如图2所示。

图2 微机扬声器发声电路原理图

通过使8255的PB端口的第1位输出高电平打开与门,利用8253的2通道发出不同频率的脉冲信号,经过放大器放大后,便可驱动扬声器发声。通过改变计数值的方法,使其产生不同频率音调的声音。音符与频率值的对应关系如表1所示。

表1 音符与频率值对应关系表

9

编程提示:音频频率的产生,可通过设置8253通道2的计数器值来确定。 计数值=1.19318MHz/给定音符频率=1234DCH/给定音符频率

可用以下程序求计数值。 MOV DI,给定频率值 MOV DX,12H MOV AX,34DCH DIV

DI

得到的计数值,按低8位、高8位分别送通道2,程序如下: OUT 42H,AL MOV AL,AH OUT 42H,AL

乐曲是按照一定的高低、长短和强弱关系组成的音调,组成乐曲的每个音符的频率值和持续时间是乐曲程序发声所需要的两个数据。音符的频率可以从表1中获得,音符的持续时间根据乐曲每个音符的节拍数来确定。在4/4(四四拍)中,四分音符为一拍,每小节4拍,全音符持续4拍,二分音符持续2拍,四分音符持续1拍,八音符持续半拍等。如果我们给全音符分配1秒的时间,则二分音符的持续时间为0.5秒。

10ms的延迟时间可以简单地通过执行循环指令取得: WAIT1: DELAY:

MOV CX,2801 LOOP DELAY

如果要产生与10ms成倍数的延迟时间,可执行该倍数次延迟10ms的指令。 知道了音调与频率和时间的关系,我们就可以按照乐曲的曲谱将每个音符的频率和持续时间定义成两个数据表,然后编写程序依次取出表中的频率值送通道2并用持续时间进行延时。

两只老虎

10


汇编语言课程设计任务书(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2019最新九年级英语10月月考试题(无答案) 人教新目标版

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: