首页 汇编课程设计

汇编课程设计

举报
开通vip

汇编课程设计 日期与时间的显示 1. 设计目的及内容 查看日期和时间是每个人都经常做的事,所以用汇编语言编制一个能查看日期与时间的实用小软件。该软件可以方便的查看日期和时间,按字母D则显示日期,按字母T则显示时间,按字母E退出。 2. 开发环境 2.1软件环境 使用的软件环境为MASM开发环境,在这个开发环境中共包TE.EXE编辑程序、MASM.EXE汇编程序、LINK.EXE连接程序和DEBUG.EXE调试程序。首先用TE.EXE编辑程序编辑源程序代码,之后用MASM.EXE汇编程序将编辑好的源程序代码进行汇编,若...

汇编课程设计
日期与时间的显示 1. 设计目的及内容 查看日期和时间是每个人都经常做的事,所以用汇编语言编制一个能查看日期与时间的实用小软件。该软件可以方便的查看日期和时间,按字母D则显示日期,按字母T则显示时间,按字母E退出。 2. 开发环境 2.1软件环境 使用的软件环境为MASM开发环境,在这个开发环境中共包TE.EXE编辑程序、MASM.EXE汇编程序、LINK.EXE连接程序和DEBUG.EXE调试程序。首先用TE.EXE编辑程序编辑源程序代码,之后用MASM.EXE汇编程序将编辑好的源程序代码进行汇编,若无语法、词法错误,则可以成功汇编成obj目标文件。然后用LINK.EXE连接程序将已生成的目标文件连接在一起,成功连接后生成exe可执行文件,用DEBUG.EXE调试程序对程序进行调试,检查各个功能及子功能的实现情况。通过用DEBUG的G命令设置断点,可以快速定位出现错误的范围,纠正出现错误的地方,直至得到预期的结果。调试完毕后,即可执行已调试成功的程序。 2.2硬件环境 惠普CQ40PC机,CPU:酷睿双核,内存1G,硬盘250G。 3. 功能 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 3.1总体设计功能 显示提示主界面,包括提示信息“INPUT DATE(D) OR TIME(T) OR EXIT(E)”,其中文含义是输入大写字母D或T或E。 若按下键盘上的大写字母D,则显示当前系统日期。 若按下键盘上的大写字母T,则显示当前系统时间。 若按下键盘上的大写字母E,则推出该程序。 3.2详细设计功能 3.2.1主程序功能 (1)主程序完成的功能 对于用户来说,它需要一个具有提示信息的界面,这就需要预先设置一个文本显示方式,这个设置可以用BIOS调用中00号功能的设置显示方式功能,其入口参数为:AL=显示方式,出口参数:无。显示方式设置好之后,就要显示提示用户信息的字符串,可预先将要显示的字符串放在内存中,显示字符串要用DOS调用中的I/O设备功能调用,其入口参数为DS:DX=字符串首址,字符串需要以$结束,其出口参数无。这样一个具有提示信息的界面就产生了,接着就需要其要具有可以输入一个字符的功能,由此确立了主程序要有使用户进行键盘输入的指令,这条指令要用到设备I/O的功能调用,使用21H的01H号功能的键盘输入字符功能,其入口参数:无,出口参数为AL=输入字符;完成以上的汇编语言程序设计的前期工作之后就要进行对输入的字符进行判断了,而主程序只能判断出大写字母D、T、E这三个字符,判断用户输入的字符是什么字符可以根据其ASCII值来判定,故可将其输入的字符的ASCII值分别于D、T、E相减来判断,若用户按下的是键盘上的大写字母D,则主程序就调用一个显示当前系统日期的子程序来完成显示日期的功能;若用户按下键盘上的大写字母T,则主程序调用显示时间子程序,完成显示当前系统时间的功能;若用户按下键盘上的大写字母E,则主程序调用退出子程序,退出程序:若用户按下出了这三个按键之外的其他按键,则主程序只显示用户提示信息,等待用户的继续输入,直至用户输入大写字母E,程序才能正常结束。这个按输入字符而执行相应程序的功能决定了其判断字符的程序段结构为分支结构或循环结构。 (2)主程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图 由主程序完成的功能及实现方式可确定其流程图的结构,主程序的流程图如图1所示。 Y N N Y N N Y 图1 主程序流程图 3.2.2子程序功能 (1)显示日期子程序完成的功能 显示日期子程序DATE通过调用DOS下的2AH号功能,将日期值传送进寄存器CX和DX中,然后再调用将日期数值转换成ASCII码字符的子程序,最后调用BIOS下的13H号的显示字符串的功能,将日期显示在矩形框中。 此函数的入口条件是:AL=’D’;出口条件是:要显示的日期字符串在以BP指出的附加段中。 (2)显示时间子程序完成的功能 显示时间子程序TIME调用DOS下的2CH号功能,将时间传送进寄存器CX和DX中,然后调用将时间数值转换成ASCII码字符的子程序,最后调用 BIOS下的13H号的显示字符串的功能,将时间显示在矩形框中。 此子程序的入口条件是:AL=’T’;出口条件是:要显示的时间字符串在由BP指向的附加段中。 (3)日期数值转换ASCII码字符子程序完成的功能 BCDASC子程序将CX和DX中的数值逐个转换成与之相对应的ASCII码,再将其送入以PIN为首地址的附加段中。 此子程序的入口条件是:日期在CX和DX中;出口条件;无。 (4)时间数值转换ASCII码字符子程序完成的功能 BCDASC1子程序将CX和DX中的数值逐个转换成与之相对应的ASCII码,再将其送入PIN2为首地址的附加段中。 此函数的入口条件是:时间在CX和DX中;出口条件:无。 (5)退出子程序完成的功能 退出子程序QUIT的功能是退出程序,返回DOS状态。 入口条件AL=’E’;出口条件:无。 3.2.3子程序流程图 (1)SHOWT的流程图如图2所示 N Y 图2 显示日期SHOWT子程序流程图 (2)SHOWD的流程图如图所示 N Y 图3 显示日期TIME子程序流程图 (4) 时间数值转换成ASCII字符子程序流程图如图4所示 图4 时间转换ASCII码流程图 4.源程序代码 4.1时间转换成ASCII码子程序DTM0.ASM ASC1 PROC NEAR PUSH BX CBW MOV BL,10 DIV BL ADD AL,'0' MOV PIN[ SI],AL INC SI ADD AH,'0' MOV PIN [SI],AH INC SI POP BX RET ASC1 ENDP 4.2日期转换成ASCII码子程序DTM1.ASM ASC2 PROC NEAR PUSH BX CBW MOV BL,10 DIV BL ADD AL,'0' MOV PIN1 [SI],AL INC SI ADD AH,'0' MOV PIN1[SI],AH INC SI POP BX RET ASC2 ENDP 4.3退出功能子程序DTM2.ASM EXIT PROC MOV AH,4CH INT 21H EXIT ENDP 4.4日期与时间的显示主程序DTM3.ASM SSEG SEGMENT SSEG DW 200 DUP (?) SSEG ENDS DSEG SEGMENT BLANK DB 1000 DUP (' ') STP 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 (' ') PIN DB 8 DUP (':'),12 DUP (' ') PIN1 DB 20 DUP (' ') STRING DB 0DH,0AH, 'INPUT DATE[D] @@TIMET[T] @@ EXIT(E): $' DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ES:DSEG,SS:SSEG INCLUDE DTM0.ASM INCLUDE DTM1.ASM INCLUDE DTM2.ASM BEGIN: MOV AX,DSEG ;设置数据段 MOV DS,AX MOV ES,AX MOV AH,00H ;设置文本显示方式 MOV AL,01H INT 10H MOV BP,OFFSET BLANK ;设置字符串的首地址 示字符串功能 MOV CX,SIZE BLANK ;设置字符串长度 MOV DX,0B00H ;设置光标起始位置 MOV BH,00H ;设置当前显示页号 MOV AL,00H MOV BL,3EH MOV AH,13H INT 10H MOV BP,OFFSET STP MOV CX,120 MOV DX,0B00H MOV BH,00H MOV AL,01H MOV BL,4EH MOV AH,13H INT 10H MOV DX,OFFSET STRING ;提示信息字符字符串首址送入DX MOV AH,09H ;调用DOS输入字符串功能 INT 21H MOV AH,01H ;调用DOS输入单个字符功能 INT 21H CMP AL,44H ;判断输入的字符是否是D JNE OK1 CALL SHOWD ;调用显示日期函数 OK1: CMP AL,54H ;判断输入的字符是否是T JNE OK2 CALL SHOWT ;显示系统时间 OK2: CMP AL,45H ;判断输入的字符是否是E JNE BEGIN CALL EXIT SHOWD PROC NEAR ;显示日期子程序 SHOW:MOV AH,2AH ;获取取日期 INT 21H MOV SI,0 MOV AX,CX MOV BX,100 DIV BL MOV BL,AH CALL ASC2 ;转换ASCII码 MOV AL,BL CALL ASC2 INC SI MOV AL,DH CALL ASC2 INC SI MOV AL,DL CALL ASC2 MOV BP,OFFSET PIN1 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,0018H AGAIN1: MOV CX,0FFFFH ;设置计数器的值 AGAIN2:LOOP AGAIN2 DEC BX JNZ AGAIN1 MOV AH,01H ;判断有无键盘键入 INT 16H JE SHOW JMP BEGIN MOV AX,4C00H INT 21H RET SHOWD ENDP SHOWT PROC NEAR ;时间显示子程序 SHOW1:MOV SI,0 MOV BX,100 DIV BL MOV AH,2CH ;获取时间 INT 21H MOV AL,CH CALL ASC1 ;转换成ASCII码 INC SI MOV AL,CL CALL ASC1 INC SI MOV AL,DH CALL ASC1 MOV BP,OFFSET PIN MOV CX,20 MOV DX,0C0DH MOV BH,00H MOV AL,01H MOV BL,4EH MOV AH,13H INT 10H MOV AH,02H MOV DX,0300H MOV BH,0 INT 10H MOV BX,0018H REPEAT1: MOV CX,0FFFFH REPEAT2: LOOP REPEAT2 DEC BX JNZ REPEAT1 MOV AH,01H INT 16H JE SHOW1 JMP BEGIN MOV AX,4C00H INT 21H RET SHOWT ENDP CSEG ENDS END BEGIN 5.调试和运行 5.1调试过程 5.1.1进入调试界面 在DOS环境下的命令提示符中输入命令:DEBUG DTM3.EXE,然后现-横线提示符,之后可以输入DEBUG的多种调试命令,如U反汇编命令,T单步执行命令,D显示内存命令,G执行命令等一系列调试命令,调试界面如图5所示。 图5 调试界面 5.1.2用G命令设置断点 (1)进入主界面 根据U汇编的结果,先从源代码的主程序的起始地址执行到输入字符命令,故将输入字符指令的地址设置为断点。输入-G=0032,006C,按回车后,显示的界面如图6所示。 图6 提示界面 (2)调试显示日期功能 在键盘上键入大写字母D,查看寄存器的变化,其中AL的值为44H,即键入的是大写字母D,然后再进行设置断点,这次将断点设置在调用显示日期的下一条指令处,输入命令G=0070,0077,按回车后,显示的界面如图7所示,可知实现了显示时间的功能。 图7 日期显示界面 (3)调试显示时间功能 键入大写字母T,之后,在输入G=0070,0080,按回车之后,显示的界面如图8所示,可知显示时间的功能以实现。 图8 时间显示界面 (4)退出功能调试 退出功能的代码比较简单,就是DOS的I/O输入输出命令中的程序结束,返回DOS状态的命令,在提示主界面中输入大写字母E后,程序退出。 5.2运行结果 5.2.1运行过程及截图 (1)进入提示界面 在命令提示符界面中,在生成程序所在目录下输入该文件的文件名,DTM3之后,按回车,显示界面如图9所示。 图9 提示界面 (2)显示日期 键入大写字母D,显示日期界面如图10所示。 图10 显示日期界面 (3)显示时间 键入大写字母T,显示时间界面如图11所示。 图11 显示时间界面 (4)退出程序 键入大写字母E,退出后界面如图12所示。 图12 退出程序 6.总结 在本次课程设计中,认识到汇编语言对于显示方面的编程很有用处,而且在显示编程中,用到很多BIOS调用和DOS的相关调用,这是在平时是不经常训练与实践的,这次给补上了。我选择的时间与日期的显示,就用到了显示的相关知识及色彩的设置,还有字符串的输出等。虽然它实现了输入大写字母D显示日期。输入大写字母T和大写字母E退出的功能,但是,在按除了这三个字母之外的键盘上的其他按键时,只是继续显示提示信息而没有提示错误的相关信息。可以在此基础上对这个程序增加个显示出错信息的功能,将提示出错信息的字符串像存储用户提示信息那样写进内存中,然后当用户按下除了大写字母D、T和E之外的其他字符时就调用具有此功能的子程序或宏。在编制程序过程中,曾想过将ASCII码转换功能的代码段编制成宏,但是在显示日期和时间时,要多次调用这个宏,而每一次调用宏,都会在这段代码写在宏名出现的地方,这样会造成代码冗余,降低内存的利用率。考虑到这些之后,就放弃了使用宏,而改用子程序。子程序虽然没有宏那样具有较好的灵活性和较高的执行速度,但是却具有占用较少的内存的特点,故在此次课程设计的源程序编辑中选择了将ASCII代码的转换编写成了具有此功能的子程序。 对本次汇编语言课程设计做一个总结的话,那就是通过本次汇编语言的课程设计,认识到汇编语言不仅可以解决平时上课时经常练习的数学问题,对于编制关于显示方面和键盘控制的程序也是大有用处,相信汇编语言以其可以充分利用硬件资源和较高的运行速度的优势持续的应用于计算机领域中。 参考文献 [1] 叶华.汇编语言程序设计[M].北京:清华大学出社,2007.8:59-64 [2] 王爽.汇编语言[M].北京:清华出版社,2008.4:35-50 [3] 余朝琨.IBM-PC汇编语言程序设计[M].北京:机械工业版社,2008.1:59-66 [4] 蔡启先.汇编语言程序设计实验指导[M].北京,清华大学出版社,20008.3:22-33 [5] 安扬.汇编语言程序设计[M].北京,清华大学出版社,2008.9:44-59 [6] 齐志儒,高福祥.汇编语言程序设计[M].沈阳:东北大学出版社,2007:257-260  
本文档为【汇编课程设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_079973
暂无简介~
格式:doc
大小:192KB
软件:Word
页数:0
分类:工学
上传时间:2019-09-10
浏览量:12