《2022年系统时钟汇编语言程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年系统时钟汇编语言程序设计 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、武汉理工大学微机原理与接口技术课程设计说明书1 目录摘要 . 21 设计方案论证及比较. 31.1 方案一:以数字时钟显示. 31.2 方案二:以图形时钟显示. 41.3 方案比较 . 52 程序设计流程图. 62.1 主程序流程图. 62.2 子程序流程图. 73 部分程序设计及功能解说. 10 4 程序运行结果及分析. 12 4.1 程序运行结果. 12 4.2 运行结果及问题分析. 13 5 小结 . 14 参考文献 . 15 附录:程序清单. 16 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
2、 - - - - 第 1 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书2 摘要本设计采用 16 位微型处理器 8086CPU 以及 86 系列微型计算机的指令系统,利用汇编语言编写, 设计一个界面实现系统日期及时间显示功能,软件设计平台为多功能计算机实验软件MFS 中的微机原理实验集成环境MF2KP 。在本设计中,通过读取键盘输入的相关内容, 如:若输入 D,则设计程序代码依次读取系统日期年、月、日,并转换成ASCII 码调用 10 号中断予以显示 ;若在键盘输入 T,则设计程序代码依次读取系统时间时、分、秒,并转换成 ASCII码并调用
3、10 号中断予以显示 ; 若单击 Esc,则退出当前状态 ; 若不是相关字符,则不于任何响应,并不显示任何信息。关键词: 系统时钟、汇编语言、 8086 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书3 系统时钟汇编语言程序设计1 设计方案论证及比较1.1 方案一:以数字时钟显示通过读取键盘输入的相关内容, 如:若输入 D,则设计程序代码依次读取系统日期年、月、日,并转换成 ASC
4、II 码调用 10号中断予以显示 ; 若在键盘输入 T,则设计程序代码依次读取系统时间时、分、秒,并转换成ASCII 码并调用 10 号中断予以显示 ; 若单击 Esc, 则退出当前状态 ; 若不是相关字符, 则不于任何响应,并不显示任何信息。图 1 方案一程序流程图开始显示屏幕提示信息输 入 字 母读取系统日期读取系统时间退出当前文件结束YES YES 转换为 ASCII码显示转换为 ASCII码显示输入为D输入为T输入为Esc YES NO NO NO 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
5、 - - - - 第 3 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书4 1.2 方案二:以图形时钟显示先画出一个圆, 采用 Bresenham算法,运用显示器输出中断的调用,设置显示方式和光标位置后, 用写像素的方法按一定的算法打点来画出;其次,用同样的方法在已画的圆上标60 根分钟线,在圆心处画秒钟、分钟、时钟指针;最后,实现指针的走动,表示本机时间。图 2 方案二程序流程图开始设置图形显示方式显示屏幕提示信息读取系统时钟绘制钟表图形和刻度绘 制 时 钟 的 指针,动态显示结束返回 DOS环境有键盘输入输入 Esc ?YES YES N
6、O 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书5 1.3 方案比较以上两种方案均是可行的, 方案一采用数字时钟显示, 界面直观明了, 编程相对比较容易; 方案二采用图形时钟显示, 界面精致生动, 但是编程相对比较复杂。 两种方案均是采用16 位微型处理器 8086CPU 以及 86 系列微型计算机的指令系统,利用汇编语言编写,均能实现设计要求,但是相比较,方案二编程中算法较复杂
7、,编程难度较高, 而方案一编程相对比较简单, 综上所述,故采用方案一。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书6 2 程序设计流程图2.1 主程序流程图扫描键盘输入,读取键盘输入状态,执行相应命令。若输入D,则设计程序代码依次读取系统日期年、月、日,并转换成ASCII码调用 10号中断予以显示 ;若在键盘输入 T,则设计程序代码依次读取系统时间时、分、秒,并转换成ASCII码
8、并调用 10号中断予以显示 ; 若单击 Esc,则退出当前状态 ; 若不是相关字符,则不于任何响应,并不显示任何信息。图3 程序设计主流程图开始显示屏幕提示信息输 入 字 母读取系统日期读取系统时间退出当前文件结束YES YES 转换为ASCII码显示转换为ASCII码显示输入为D输入为T输入为Esc YES NO NO NO 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书7 2.
9、2 子程序流程图(1) DATE PROC NEAR子程序本子程序是当键盘输入字母 “D ”时所调用执行的子程序; 由于读取的日期项是十进制代码,因此需调用 BCDASC1 PROC NEAR 子程序转换为 ASCII码并予以显示 ;执行完 BCDASC1 PROC NEAR子程序后调用 10号中断显示一个分隔符,完成一个日期项的显示,然后再循环去读取其他日期项; 最后返回主程序执行主程序。图4 显示日期子程序流程图(2) TIME PROC NEAR 子程序本子程序是当键盘输入字母 “T”时所调用执行的子程序; 由于读取的日期项调用系统日期MOV AH ,2AH INT 21H CX-年号D
10、H-月份DL-日期BX- DBUFFER1的偏移地址AL- CH AH -00H 显示年,调用转换子程序将年份数值转换成相应的ASCII码字符显示月,调用转换子程序将月份数值转换成相应的ASCII码字符显示日,调用转换子程序将日期数值转换成相应的ASCII码字符调用 10 号功能显示开始结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书8 是十进制代码,因此需调用BCDASC PR
11、OC NEAR 子程序转换为 ASCII码并予以显示 ;执行完 BCDASC PROC NEAR 子程序后调用 10号中断显示一个分隔符,完成一个时间项的显示,然后再循环去读取其他时间项; 最后返回主程序执行主程序。其执行过程与执行 DSPD PROC子程序相似。图5 显示时间子程序流程图(3) BCDASC PROC NEAR子程序即日期数值转换为ASCII 程序,以日期显示程序为例, 通过读取系统的日期项如“年”, 由于读取的日期项是十进制代码,所以调用BCDASC,把读取的系统日期项存为 ASCII 码,然后再循环以同样方法读取月,日。调用系统日期MOV AH ,2CH INT 21H
12、CH-小时 CL-分钟DH-秒数BX- DBUFFER的偏移地址显示时,调用转换子程序将小时数值转换成相应的ASCII码字符显示分,调用转换子程序将分数值转换成相应的ASCII码字符显示秒,调用转换子程序将秒数数值转换成相应的ASCII码字符调用 10 号功能显示开始结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书9 图6 转换为 ASCII码子程序流程图(4) BCDASC1
13、PROC NEAR子程序即日期数值转换为ASCII 程序,和 BCDASC PROC NEAR方法类似。AL加0 (即 30H)转换为ASCII 保存到 DBUFFER1 SI+1 BX出栈,除以 10,取商数和余数AH 加 0 (即 30H)转换为ASCII 保存到 DBUFFER1 出栈,返回开始结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书10 3 部分程序设计及功能解说
14、本程序设计中主要有以下 4个小程序,在程序设计中起到关键作用,也是本程序设计中的难点,其功能解说如下所示:(1)设置界面界面采用 40*25 彩色文本方式显示,通过BIOS 10H功能调用,部分关键语句如下所示:MOV AX,0001H ;设置显示方式为40*25 彩色文本方式INT 10H ;通过 BIOS 10H 功能调用设置存储区位置及界面背景、前景色:MOV DX,0B00H ;存储区起始 +偏移MOV CX,1000 MOV BX,0020H ;设置前景、背景颜色MOV AX,1300H INT 10H (2)键盘输入根据键盘输入,执行相应命令:MOV AH,1 ;从键盘输入单个字符
15、INT 21H CMP AL,44H ;AL=D ?JNE A CALL DATE ;显示系统日期A: CMP AL,54H ;AL=T ?JNE B CALL TIME ;显示系统时间B: CMP AL,1BH ;AL=Esc ?JNE START MOV AH,4CH ;返回 dos状态名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书11 INT 21H (3)读取系统日期及时
16、间通过查阅相关指令,读取系统日期及时间关键语句如下所示:MOV AH,2CH ;取时间INT 21H MOV AH,2AH ;取日期INT 21H (4)时间数值转换成ASCII 码字符子程序因为读取的系统时间是十进制的数值,故需要将其转换为ASCII 码显示出来。BCDASC PROC NEAR ;时间数值转换成ASCII 码字符子程序PUSH BX CBW ;byte拓展为 word MOV BL,10 DIV BL ADD AL,0 MOV DBUFFERSI,AL INC SI ADD AH,0 MOV DBUFFERSI,AH INC SI POP BX RET BCDASC END
17、P名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书12 4 程序运行结果及分析4.1 程序运行结果图7 无键盘输入时的运行界面图8 键盘输入 D时行界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - 武汉理工大学
18、微机原理与接口技术课程设计说明书13 图9 键盘输入 T时的运行界面4.2 运行结果及问题分析通过以上的运行结果显示可以看出本程序成功完成本次课程设计的任务,本次课程设计严格按照课程设计任务的要求:在 MF2KP 环境下,运行程序, 在出现的提示信息中输入大写字母“D”, 可显示系统当前日期 ; 输入大写字母“ T”, 可显示系统当前时间 ; 输入 “Esc” ,可结束程序 ; 若不是相关字符,则不于任何响应,并不显示任何信息。运行过程中出现的问题:在单击“ESC ”退出时,在显示区会瞬间出现乱码再退出。但是此乱码不造成任何影响,仅是在退出时才会出现, 故不需要对其进行相关操作。名师资料总结
19、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书14 5 小结经过不懈的努力,终于完成了此次课程设计。本次程序设计中遇到了很多问题, 在设计每个子程序模块时都遇到了或大或小的难题。首先是如何获取当前系统的时间及日期,由于在微机原理课上没有进行相关知识的介绍, 于是通过查阅了相关书籍才得知取系统日期及时间的调用指令。不过利用系统返回的日期及时间都是BCD码格式的,使用时还需要转换为ASCII 码才
20、能进行显示。 然而显示界面的设置又是我们平时课程中所没有涉及到的知识,通过上网查询之后, 决定采用 40*25 的彩色文本形式将调用的系统时间及日期显示在屏幕上。通过对程序不停地修改、测试,终于将程序调试成功,能够满足设计要求。虽然本次课程设计中所需要的知识在平时课程中没有涉及到,但是汇编的根基还是我们在课堂上所掌握的基本知识,这使我认识到平时基础知识的重要性,只有能够熟练的掌握才能在实验过程中得心应手,否则一步错则整个试验都会陷入困境,因而,严谨的态度是试验成功的重要保障;其次,通过这次课程设计,我对各个函数以及语句有了进一步的了解,对各个语句的功能有了更深刻的认识和体会,特别是掌握了大量的
21、DOS 调用及程序设计的基本方法;最后,在课程设计过程中,同组人员之间相互合作,共同研究使我更加坚信了团体的力量。感谢老师和学长的支持和帮助!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书15 参考文献1 彭虎等编著 . 微机原理与接口技术(第二版). 北京:电子工业出版社, 2008 2 程学先等编著 . 汇编语言程序设计 . 北京:机械工业出版社, 2009 3 杨季文等编著
22、 .80X86 汇编语言程序设计教程 . 北京:清华大学出版社,2002 4 李兆先 .8086/8088 和 ARM核汇编语言程序设计 . 北京:中国科学技术大学出版社, 2006名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书16 附录:程序清单STACK SEGMENT STACK DW 200 DUP (?) STACK ENDS DATA SEGMENT SPACE DB
23、 1000 DUP ( ) PATTERN DB 6 DUP ( ),0C9H,26 DUP (0CDH),0BBH,6 DUP ( ) DB 6 DUP ( ),0BAH,26 DUP (20H),0BAH,6 DUP ( ) DB 6 DUP ( ),0C8H,26 DUP (0CDH),0BCH,6 DUP ( ) DBUFFER DB 8 DUP (:),12 DUP ( ) DBUFFER1 DB 20 DUP ( ) STR DB 0DH,0AH, PLEASE $ ;设置命令键STR1 DB 0DH,0AH, INPUT DATE(D) OR TIME(T) OR QUIT(Es
24、c): $ STR2 DB 0DH,0AH,MADE BY FANJIUJIU ID:0120811360514 $ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,0001H ;设置显示方式为40*25彩色文本方式INT 10H ;通过 BIOS 10H 功能调用MOV AX,DATA MOV DS,AX MOV ES,AX MOV BP,OFFSET SPACE MOV DX,0B00H ;存储区起始 +偏移MOV CX,1000 MOV BX,0020H ;设置前景、背景颜色MOV
25、AX,1300H INT 10H LEA DX,STR2 ;显示提示信息MOV AH,9 INT 21H MOV BP,OFFSET PATTERN ;显示矩形条MOV DX,0B00H MOV CX,120 MOV BX,004EH MOV AX,1301H INT 10H LEA DX,STR ;显示提示信息MOV AH,9 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书17
26、 INT 21H LEA DX,STR1 ;显示提示信息MOV AH,9 INT 21H MOV AH,1 ;从键盘输入单个字符INT 21H CMP AL,44H ;AL=D ?JNE A CALL DATE ;显示系统日期A: CMP AL,54H ;AL=T ?JNE B CALL TIME ;显示系统时间B: CMP AL,1BH ;AL=Esc ?JNE C MOV AH,4CH ;返回 dos状态INT 21H C: LEA DX ,STR3 MOV AH,9 INT 21H CALL TIME DATE PROC NEAR ;显示日期子程序DISPLAY: MOV AH,2AH
27、;取日期INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL BCDASC1 ;日期数值转换成相应的ASCII 码字符MOV AL,BL CALL BCDASC1 INC SI MOV AL,DH CALL BCDASC1 INC SI MOV AL,DL CALL BCDASC1 MOV BP,OFFSET DBUFFER1 MOV DX,0C0DH ;日期显示的位置MOV CX,20 MOV BX,004EH ;显示颜色MOV AX,1301H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
28、 - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书18 INT 10H MOV AH,02H ;设置光标位置MOV DX,0300H ;置光标于行列数MOV BH,0 ;页号INT 10H MOV BX,0018H REPEA: MOV CX,0FFFFH ;延时REPEAT: LOOP REPEAT DEC BX JNZ REPEA MOV AH,01H ;读键盘缓冲区字符到AL 寄存器INT 16H JE DISPLAY JMP START MOV AX,4
29、C00H INT 21H RET DATE ENDP TIME PROC NEAR ;显示时间子程序DISPLAY1: MOV SI,0 MOV BX,100 DIV BL MOV AH,2CH ;取时间INT 21H MOV AL,CH CALL BCDASC ;将时间数值转换成ASCII 码字符INC SI MOV AL,CL CALL BCDASC INC SI MOV AL,DH CALL BCDASC MOV BP,OFFSET DBUFFER MOV DX,0C0DH MOV CX,20 MOV BX,004EH MOV AX,1301H INT 10H MOV AH,02H MO
30、V DX,0300H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书19 MOV BH,0 INT 10H MOV BX,0018H RE: MOV CX,0FFFFH REA: LOOP REA DEC BX JNZ RE MOV AH,01H INT 16H JE DISPLAY1 JMP START MOV AX,4C00H INT 21H RET TIME ENDP BC
31、DASC PROC NEAR ;时间数值转换成ASCII 码字符子程序PUSH BX CBW ;byty转换为 word MOV BL,10 DIV BL ADD AL,0 ;加30H,将十进制转换为ASCCI MOV DBUFFERSI,AL INC SI ADD AH,0 MOV DBUFFERSI,AH INC SI POP BX RET BCDASC ENDP BCDASC1 PROC NEAR ;日期数值转换成ASCII 码字符子程序PUSH BX CBW MOV BL,10 DIV BL ADD AL,0 MOV DBUFFER1SI,AL INC SI ADD AH,0 MOV
32、DBUFFER1SI,AH INC SI POP BX 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 20 页 - - - - - - - - - 武汉理工大学微机原理与接口技术课程设计说明书20 RET BCDASC1 ENDP CODE ENDS END START 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 20 页 - - - - - - - - -