微机原理课程设计显示时间日期.docx

上传人:b****5 文档编号:4382153 上传时间:2022-12-01 格式:DOCX 页数:9 大小:48.65KB
下载 相关 举报
微机原理课程设计显示时间日期.docx_第1页
第1页 / 共9页
微机原理课程设计显示时间日期.docx_第2页
第2页 / 共9页
微机原理课程设计显示时间日期.docx_第3页
第3页 / 共9页
微机原理课程设计显示时间日期.docx_第4页
第4页 / 共9页
微机原理课程设计显示时间日期.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

微机原理课程设计显示时间日期.docx

《微机原理课程设计显示时间日期.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计显示时间日期.docx(9页珍藏版)》请在冰豆网上搜索。

微机原理课程设计显示时间日期.docx

微机原理课程设计显示时间日期

PleasureGroupOffice【T985AB-B866SYT-B182C-BS682T-STT18】

 

微机原理课程设计显示时间日期

万方科技学院

《微机原理与接口技术》课程设计

万方科技学院

通信工程

07通信2班

一、课程设计目标…………………………………………………………………2

二、课程设计任务…………………………………………………………………2

三、总体设计方案……………………………………………………………………2

四、部分程序设计及功能解说………………………………………………………2

扫描键盘输入…………………………………………………………………………2

.BCD码转换……………………………………………………………………………3

4-3显示部分……………………………………………………………………3

五、程序设计流程图…………………………………………………………………4

六.程序段功能汇总…………………………………………………………………5

、MAIN程序……………………………………………………………………………5

、DSPBCDPROC子程序…………………………………………………………………6

、DSPDPROC子程序…………………………………………………………………6

、DSPTPROC子程序…………………………………………………………………6

七、程序设计流程图…………………………………………………………………6

八、课程设计总结和体会…………………………………………………………7

九、参考文献…………………………………………………………………………8

十、附录………………………………………………………………………………9

一.课程设计目的

用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的。

(1)学习分支、中断、和逻辑表达。

(2)熟悉汇编语言程序的编译、链接过程。

二.课程设计任务

设计一个显示日期或时间的汇编程序间且满足以下要求:

基本功能:

运行可执行程序,在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序。

三、总体设计方案

通过调用bios16H中断的1号功能,读取键盘的状态扫描键盘输入,根据键盘输入的相关内容,如:

若输入D,则设计程序代码依次读取系统日期年、月、日,并转换成BCD码调用10号中断予以显示;若在键盘输入T,则设计程序代码依次读取系统时间时、分、秒,并转换成BCD码并调用10号中断予以显示;若输入大写字母Q,则退出当前状态;若不是相关字符,则不于任何响应,并不显示任何信息。

四、部分程序设计及功能解说

1、扫描键盘输入

用SCANK:

;扫描键盘输入,根据键盘输入调用bios16H中断的1号功能,读取键盘的状态,根据输入的字母,与字母“D"进行比较,若值为1则去执行CHKT,并响应按键D……

扫描键盘输入部分程序如下:

XORAX,AX

INT16H;调用bios16H中断的1号功能,读取键盘的状态.

CMPAL,'D'

JNECHKT;如果输入的是字母“D”则跳转执行CHKT子程序

CALLDSPD;响应按键'D'

JMPSCANK

2、BCD码转换

将读取的二进制代码循环右移4位,相当于将二进制转换成16进制;将AX寄存器内容与3030进行或运算,把AH单元传递于CH寄存器;程序代码如下:

RORAX,CL

SHRAH,CL

ORAX,3030H

MOVCH,AH

3、显示部分

调用10号中断的0E功能显示AL寄存器的内容,即BCD码将显示在屏幕上。

注意:

BL=前景色;AL=字符。

BCD码显示代码如下所示:

MOVAH,0EH

INT10H;调用10号中断的0E功能显示

MOVAL,CH

INT10H

五、程序设计流程图

六.程序段功能汇总

1、MAIN程序

用SCANK:

;扫描键盘输入,根据键盘输入调用bios16H中断的1号功能,读取键盘的状态,根据输入的字母,与字母“D"进行比较疑惑,若异或值为1则去执行CHKT,并响应按键D。

其他如输入“T”和“Q”时同理。

2、DSPBCDPROC子程序

即日期时间显示程序,以日期显示程序为例,通过读取系统的日期项如“年”,由于读取的日期项是二进制代码,所以调用DSPBCD,把读取的系统日期项存为BCD码,然后将其显示出来,然后再循环以同样方法读取月,日。

3、DSPDPROC子程序

本子程序是当键盘输入字母“D”时所调用执行的子程序;首先定义堆栈寄存器,按循环要求读取系统日期项,由于读取的日期项是二进制代码,因此需调用DSPBCDPROC子程序转换为BCD码并予以显示;执行完DSPBCDPROC子程序后调用10号中断显示一个分隔符,完成一个日期项的显示,然后再循环去读取其他日期项;最后返回主程序执行主程序。

4、DSPTPROC子程序

本子程序是当键盘输入字母“T”时所调用执行的子程序;首先定义堆栈寄存器,按循环要求读取系统时间项,由于读取的日期项是二进制代码,因此需调用DSPBCDPROC子程序转换为BCD码并予以显示;执行完DSPBCDPROC子程序后调用10号中断显示一个分隔符,完成一个日期项的显示,然后再循环去读取其他日期项;最后返回主程序执行主程序。

其执行过程与执行DSPDPROC子程序相似。

七.试验结果及分析

1、实验结果

双击,程序初始运行界面:

如果按错了键,会出现如下界面,没任何反应,也不显示任何信息:

如果输入正确如“D”将出现如下界面(每输入一次就显示一次系统日期):

如果输入正确如“T”将出现如下界面(每输入一次就显示一次系统时间):

如果输入“Q”,则退出以上界面。

2、实验结果分析:

通过以上的结果显示可以看出结果成功完成本次课程设计的目的和任务,本次课程设计严格按照课程设计任务的要求:

运行可执行程序,在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序;若不是相关字符,则不于任何响应,并不显示任何信息。

但还有缺陷的是不能实时刷新时间,由于这点在课程设计任务中没有相关要求,因此这次课程设计可以认为是成功的。

八.课程设计总结和体会

1.在完成课程设计过程中,我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障!

2.通过这次课程设计,我们对各个函数以及语句有了进一步的了解,对各个语句的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识真正运用到了实践中去。

在课程设计过程中,同组人员之间相互合作,共同研究使我更加坚信了团体的力量。

在团体的共同协作和努力下,任何的难题都可以被解决!

3.在本次课程设计过程中,李宝平老师以及相关同学给予我相当大的支持和帮助,在此表示诚挚的感谢!

九.参考文献

1、《微型计算机原理与接口技术》中国矿业大学出版社李长青主编

2、《汇编语言程序设计》科学出版社卢中华等主编

3、《微型计算机汇编语言程序设计》电子科学技术出版社龙尚福主编

4、《微机原理与汇编语言实用教程》清华大学出版社王富荣主编

5、《微机原理与接口技术课程设计》中南大学出版社王南兰主编

6、《微机原理及应用》西南交通大学出版社晏寄夫主编

7、《32位微机原理与接口技术》化学工业出版社马兴录主编

8、《微机原理与接口技术》电子科技大学出版社倪继烈主编

9、《微处理器与微型计算机》清华大学出版社李三立主编

10、《微机原理与接口实验指导》国防工业出版社黄海萍主编

附录

程序清单

STACKSEGMENTSTACK;定义堆栈段

STACKHDB20HDUP()

STSIZEEQU$-STACKH

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK;,DS:

DATA

START:

;程序执行的起始地址

MOVAX,STACK;堆栈段经AX寄存器转移到SS寄存器

MOVSS,AX

MOVSP,STSIZE

SCANK:

;扫描键盘输入

XORAX,AX

INT16H;调用bios16H中断的1号功能,读取键盘的状态.

CMPAL,'D';AL=D

JNECHKT;如果不相等跳转到子程序CHKT

CALLDSPD;响应按键'D'

JMPSCANK

CHKT:

CMPAL,'T';与字母“T”进行比较

JNECHKQ;如果不相等跳转到子程序CHKQ执行

CALLDSPT;响应按键'T'

JMPSCANK;跳转到SCANK

CHKQ:

;可以添加代码以响应其他按键

;否则,它们将被忽略

CMPAL,'Q'

JEEXIT;响应按键'Q'

JMPSCANK;跳转执行到子程序SCANK

EXIT:

MOVAX,4C00H;退出当前系统

INT21H

;功能:

显示一个压缩BCD码

;入口:

BH=页号

;BL=前景色

;AL=压缩BCD码

DSPBCDPROC

PUSHAX

PUSHCX

MOVCL,4;串长度为4

MOVAH,0

;把读取的二进位数转为BCD码

RORAX,CL

SHRAH,CL

ORAX,3030H

MOVCH,AH

;显示BCD码

MOVAH,0EH

INT10H;调用10号中断的0E功能显示

MOVAL,CH

INT10H

POPCX;退出当前堆栈段

POPAX

RET

DSPBCDENDP

;功能:

显示系统日期

;入口:

BH=页号,BL=前景色

;DSPD直接传给DSPBCD

DSPDPROC

PUSHAX;定义堆栈段地址

PUSHCX

MOVAL,9

MOVCX,3;定义循环次数3次

GETD:

;子程序定义

PUSHAX

;读取系统日期项

OUT70H,AL

INAL,71H

CALLDSPBCD;显示一个日期项,如:

MOVAX,0E2EH;'.'的ASCII码为2E

INT10H;显示一个分隔符'.'

POPAX

DECAL

LOOPGETD;继续循环GETD

POPCX

POPAX

RET

DSPDENDP

;功能:

显示系统时间

;入口:

BH=页号,BL=前景色

;DSPT直接传给DSPBCD

DSPTPROC

PUSHAX

PUSHCX

MOVAL,04H;定义串长度

MOVCX,3;定义循环次数3次,分别读取时、分、秒

GETT:

;子程序GETT

PUSHAX;读取一个系统时间项

OUT70H,AL

INAL,71H

CALLDSPBCD;显示一个日期项,如:

MOVAX,0E3AH;':

'的ASCII码为3A

INT10H;显示一个分隔符':

'

POPAX

SUBAL,2

LOOPGETT;条件下继续循环GETT

POPCX;退出堆栈段

POPAX

RET;返回主程序执行

DSPTENDP

CODEENDS

ENDSTART  ;程序结束

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1