万方科技学院
微机原理与接口技术课程设计
万 方 科 技 学 院
通信工程
07通信2班
一、课程设计目标…………………………………………………………………2
二、课程设计任务…………………………………………………………………2
三、 总体设计方案……………………………………………………………………2
四、部分程序设计及功能解说………………………………………………………2
扫描键盘输入…………………………………………………………………………2
. BCD码转换……………………………………………………………………………3
4-3显示部分……………………………………………………………………3
五、程序设计流程图…………………………………………………………………4
六.程序段功能汇总…………………………………………………………………5
、MAIN程序……………………………………………………………………………5
、DSPBCD PROC子程序…………………………………………………………………6
、DSPD PROC子程序…………………………………………………………………6
、DSPT PROC子程序…………………………………………………………………6
七、程序设计流程图…………………………………………………………………6
八、课程设计总结和体会…………………………………………………………7
九、参考文献…………………………………………………………………………8
十、附录………………………………………………………………………………9
一.课程设计目的
用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的;
1学习分支、中断、和逻辑表达;
2熟悉汇编语言程序的编译、链接过程;
二.课程设计任务
设计一个显示日期或时间的汇编程序间且满足以下要求:
基本功能:运行可执行程序,在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序;
三、总体设计方案
通过调用bios 16H 中断的1号功能,读取键盘的状态扫描键盘输入,根据键盘输入的相关内容,如:若输入D,则设计程序代码依次读取系统日期年、月、日,并转换成BCD码调用10号中断予以显示;若在键盘输入T,则设计程序代码依次读取系统时间时、分、秒,并转换成BCD码并调用10号中断予以显示;若输入大写字母Q,则退出当前状态;若不是相关字符,则不于任何响应,并不显示任何信息;
四、部分程序设计及功能解说
1、扫描键盘输入
用SCANK:;扫描键盘输入,根据键盘输入调用bios 16H 中断的1号功能,读取键盘的状态,根据输入的字母,与字母“D"进行比较,若值为1则去执行CHKT,并响应按键D……
扫描键盘输入部分程序如下:
XOR AX,AX
INT 16H;调用bios 16H 中断的1号功能,读取键盘的状态.
CMP AL,'D'
JNE CHKT;如果输入的是字母“D”则跳转执行CHKT子程序
CALL DSPD;响应按键'D'
JMP SCANK
2、BCD码转换
将读取的二进制代码循环右移4位,相当于将二进制转换成16进制;将AX寄存器内容与3
030进行或运算,把AH单元传递于CH寄存器;程序代码如下:
ROR AX,CL
SHR AH,CL
OR AX,3030H
MOV CH,AH
3、显示部分
调用10号中断的0E功能显示AL寄存器的内容,即BCD码将显示在屏幕上;注意:BL=前景;AL=字符;BCD码显示代码如下所示:
汇编语言大小写字母转换MOV AH,0EH
INT 10H;调用10号中断的0E功能显示
MOV AL,CH
INT 10H
五、程序设计流程图
六.程序段功能汇总
1、MAIN程序
用SCANK:;扫描键盘输入,根据键盘输入调用bios 16H 中断的1号功能,读取键盘的状态,根据输入的字母,与字母“D"进行比较疑惑,若异或值为1则去执行CHKT,并响应按键D;其他如输入“T”和“Q”时同理;
2、DSPBCD PROC子程序
即日期时间显示程序,以日期显示程序为例,通过读取系统的日期项如“年”, 由于读取的日期项是二进制代码,所以调用DSPBCD,把读取的系统日期项存为BCD码,然后将其显示出来,然后再循环以同样方法读取月,日;
3、DSPD PROC子程序
本子程序是当键盘输入字母“D”时所调用执行的子程序;首先定义堆栈寄存器,按循环要求读取系统日期项,由于读取的日期项是二进制代码,因此需调用DSPBCD PROC子程序转换为B
CD码并予以显示;执行完DSPBCD PROC子程序后调用10号中断显示一个分隔符,完成一个日期项的显示,然后再循环去读取其他日期项;最后返回主程序执行主程序;
4、DSPT PROC子程序
本子程序是当键盘输入字母“T”时所调用执行的子程序;首先定义堆栈寄存器,按循环要求读取系统时间项,由于读取的日期项是二进制代码,因此需调用DSPBCD PROC子程序转换为BCD码并予以显示;执行完DSPBCD PROC子程序后调用10号中断显示一个分隔符,完成一个日期项的显示,然后再循环去读取其他日期项;最后返回主程序执行主程序;其执行过程与执行DSPD PROC子程序相似;
七.试验结果及分析
1、实验结果
双击,程序初始运行界面:
如果按错了键,会出现如下界面,没任何反应,也不显示任何信息:
如果输入正确如“D”将出现如下界面每输入一次就显示一次系统日期:
如果输入正确如“T”将出现如下界面每输入一次就显示一次系统时间:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论