课程设计报告--汇编语言_第1页
课程设计报告--汇编语言_第2页
课程设计报告--汇编语言_第3页
课程设计报告--汇编语言_第4页
课程设计报告--汇编语言_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.课程设计报告(本科)课程:汇编语言学号:1210461030 1210461016姓名:豆建华 钱爱萍班级:12级计算机科学与技术系(2)班教师:吴昊时间:2013.6.12013.6.27计算机科学与技术系;设计名称:系统时间程序设计设计内容、目的与要求:设计内容:编写系统时间程序设计实验目的:是在显示系统下显示的当前日期和时间。实验要求:按照界面提示信息显示。例如:可设计界面提示信从键盘输入“D”可显示系统的日期。利用DOS系统调用的2AH和2CH 功能调用。读取系统的日期和时间。将日期和时间值转换为相应的ASCII码字符,显示在屏幕上。双击可执行程序.exe文件,在出现的提示信息中输入

2、大写字“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母“Q”,可结束程序。计划与进度安排:6月1日-6月15日: 进行构思与查阅资料。与本实验的合作者讨论此次试验学习到了哪些知识点,同时对这些知识点进行全面系统的复习。6月16日-6月20日:开始编写程序分析程序,进行程序设计并进行调试与运行对所编写的程序进行修改使之达到最好. 完成对基本功能的修改并运行无误;增加对开始的源程序的功能6月21日-6月27日:完成汇编语言课程设计实验报告。设计过程、步骤(可加页):程序设计分析:l 在DOS环境下完成,先利用BIOS功能调用中显示器驱动程序的00H类型调用,设置显示

3、器的显示模式为80*25彩色。l 在屏幕中央显示提示信息(提示用户输入“D”或“T”或“Q”)。l 然后对用户输入的字母进行判断,利用分支程序分别调用不同的子程序。两个子程序的功能分别是显示当前日期(用2AH的DOS功能调用来取日期),显示当前时间(用2CH的DOS功能调用来取时间)。 必须用到的DOS功能调用:取当前系统日期:功能号为2AH,返回值送入CX,DX寄存器中。取当前系统时间:功能号为2CH,返回值送入CX,DX寄存器中。主程序流程图开始显示输入选择数据D(date)/T(time)/Q(quit)转换为相应的ASCII字符显示日期/时间结束图1实验主流程图结果与分析(可以加页):

4、 1.程序运行界面(1) 提示界面 进入提示界面“WELCOME TO TIMEMASTER”根据提示请输入“D” 或“T”或“Q”。 图2 提示界面图(2)显示日期输入“D”显示当前日期图3显示日期图(3)显示时间输入“T”显示当前时间图4显示时间图(4)退出程序输入“Q”退出程序图5退出程序图说明:以上截图为此次实验运行出来时的主要截图,其中图1为本实验的主流程图,分为三个部分,分别是日期的显示,时间的显示以及程序的退出。图2是在屏幕中央显示提示信息(提示用户输入“D”或“T”或“Q”)。图3是取当前系统日期:功能号为2AH,返回值送入CX,DX寄存器中。图4是取当前系统时间:功能号为2C

5、H,返回值送入CX,DX寄存器中。设计体会与建议:通过对这一系统时间程序的制作,让我们掌握在 语言中使用计算机简单的图形显示程序显示系统日期和时间的方法,以便在以后的其他各种程序中能够更加熟练的运用这种方法来显示计算机系统的日期和时间。同时也让我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。     这不是第一次用汇编语言来设计一个小程序,平时做了很多实验,写了很多小程序。但这次是一个综合的程序,平

6、时的很多程序都用到了,例如在程序中用到了不少的子程序,宏,这些子程序的设计是固定的,因此可以直接从指导资料中调用,大多只需要修改几个参数就可以,这大大方便了我们的设计,为我们节省了很多的时间。在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,这是去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。从资料中,我们可以看出这个时钟程序的基本流程,修改一些程序就可以实现这个程序的基本功能,添加一些程序就可以实现这个时钟的附加功能。不可否认,本程序存在不少缺点和不足,但通过这次作业的却找出了自己在学习上的不足,对以后的工作也有指导作用。我相信在以

7、后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!豆建华根据设计要求,这个程序基本实现所要求的功能。但由于短暂的设计时间和过于零散的汇编知识暴露出许多不足之处,如我们显示的时间是静态的,不能动态显示连续的时间,界面太过单调。但是程序也有他相对的特点如冗余低,能判断是否输入错误,和对应的时间和日期的大小写输入。做这个程序的过程中,我加深了对某些指令的理解,如push,pop,jmp指令。本次实验,我觉得最大的收获便是慢慢学会了集体思考问题及解决问题,并且最终合作力量通过程序代码来实现,我感觉这是对自我的一种突破。乍一看到这个题目,感觉挺简单啊,不就是用一个字符和规定的三个字符相比较,分别调用

8、子程序么?可是真正在编写程序的过程中,才发现想的容易,写起来却是另一会事,正如杜甫所说的“书到用时方恨少,事非经过不知难。”其实对于这种情况,我们极容易犯眼高手低的毛病,这就导致我们失去了多次自己动手操作实践的机会,一味的只是看老师演示演示再演示。通过这次试验,我知道了在以后的学习过程中,一定要自己去实践,在实践中能得到更加深刻的认识和体会,对知识能够更好更深刻的掌握。钱爱萍 附录源代码:STACK SEGMENT STACK DW 200 DUP (?)STACK ENDSDATA SEGMENT SPACE DB 1000 DUP (' ') STR1 DB 40 DUP

9、(' '),9 DUP(' '),'WELCOME TO TIMEMASTER!',52 DUP(' ') DUICHU DB 240 DUP (' '),9 DUP(' '),'THANK YOU VERY MUCH!',412 DUP(' ') PATTERN DB 6 DUP (' '),0C9H,26 DUP (0CDH),0BBH,6 DUP (' ') DB 6 DUP (' '),0BAH,26 DUP (

10、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 INPUT DATE(D) OR TIME(T) OR QUIT(Q): $'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES

11、:DATA,SS:STACKSTART: MOV AX,0001H INT 10H ;设置显示方式为40*25彩色文本方式 MOV AX,DATA MOV DS,AX MOV ES,AX MOV BP,OFFSET SPACE MOV DX,0B00H ;0B00 MOV CX,1000 MOV BX,0020H MOV AX,1300H INT 10H MOV BP,OFFSET STR1;显示'WELCOME TO TIMEMASTER!' MOV DX,0600H MOV CX,120 MOV BX,000EH MOV AX,1301H INT 10H MOV BP,OF

12、FSET PATTERN ;显示矩形条 MOV DX,0B00H MOV CX,120 MOV BX,004EH MOV AX,1301H INT 10H LEA DX,STR ;显示提示信息 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,51H ;AL='Q'? JNE START MOV BP,OFFS

13、ET DUICHU;显示'THANK YOU VERY MUCH!' MOV DX,0600H MOV CX,520 MOV BX,004EH MOV AX,1301H INT 10H MOV AX,4C00H ;返回dos状态 INT 21HDATE PROC NEAR ;显示日期子程序DISPLAY:MOV AH,2AH ;取日期 INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH ;AH=12AL=20 CALL BCDASC1 ;日期数值转换成相应的ASCII码字符 MOV AL,BL CALL BCDASC1

14、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 INT 10H MOV AH,02H ;设置光标位置 MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018HREPEA: MOV CX,0FFFFH ;延时REPEAT:LOOP REPEAT DEC BX JNZ REPEA MOV AH,01H ;读键盘缓冲区字符到AL寄存器 INT 16H JE D

15、ISPLAY JMP START MOV AX,4C00H INT 21H RETDATE ENDPTIME 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,1301

16、H INT 10H MOV AH,02H MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018HRE: MOV CX,0FFFFHREA: LOOP REA DEC BX JNZ RE MOV AH,01H INT 16H JE DISPLAY1 JMP START MOV AX,4C00H INT 21H RETTIME ENDPBCDASC PROC NEAR ;时间数值转换成ASCII码字符子程序 PUSH BX CBW MOV BL,10 DIV BL ADD AL,'0' MOV DBUFFERSI,AL INC SI ADD AH,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论