ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:42.11KB ,
资源ID:699196      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-699196.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编毕业课程设计月历显示程序.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

汇编毕业课程设计月历显示程序.docx

1、汇编毕业课程设计月历显示程序华 北 科 技 学 院课程设计说明书课程名称: 汇编语言 班级: 计算机B08-1 姓名:_蒋良 _设计题目:_ 月历显示程序 设计时间:_ 12月13号 至 12月24号 指导教师:_ 李冬艳 _ _ 评 语:_ _评阅成绩: 评阅教师: 1 课程设计目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。二、课程设计要求 1要求编写并调试通过一个小型软件,实现对软件或硬件的操作。 2遵循模块化、结构化的程序设计方法

2、。3.要求程序必须正确。4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。5.要求程序结构合理,语句使用得当。6.适当追求编程技巧和程序运行效率。三、课程设计题目: 月历显示程序四、课题分析本程序主要实现了从键盘获取正确的年份月份后,在屏幕上以月历的形式显示出当月。本次课题设计主要通过克服一下问题实现了目的功能:1 年份月份的获取与输出(小于10与大于等于10两种情况);2 闰年的判断,遵循四年而闰,百年不闰,四百再闰的规则;3 不同月份所含日数并不相同,分为四种情况:30、31、28、29;4 计算出输入月份第一天为星期几,并依照此进行排列日期与计算显示出的空格数目5、输入错误后的

3、提示以及从新输入五、流程图1、主流程图六、实现过程1. 提示输入年月a) 输入格式:yyyymmb) 合法性检查:1980yyyy2099,c) 1mm12d) 年份字符串转换成二进制数保存到变量year,e) month中f) 其他需要定义的变量:KBUF键盘输入缓冲区 MSG2 DB Please input the month(01-12):$ CR DB 10,13,$ YEAR DW ? MONTH DB ? WEEK DB ? DAY DW ?2. 显示月历g) 可采用成批显示的方法:先填充, Mon Tue Wed Thu Fri Sat , 0DH, 0AHLine1 db ,

4、 0DH, 0AHLine2 db , 0DH, 0AHLine3 db , 0DH, 0AHLine4 db , 0DH, 0AHLine5 db , 0DH, 0AH, $ii. 往Line到Line5中填充当月日期(Fill_date)iii. 用9号DOS功能调用显示字符串YMweeks db mon tue wed thu fri sau sun,0dh,0ah,$3、每月有几天? 这涉及到填充多少个日期数字1. 计算出来后用一个变量保存:days2. 计算方法:a) 1,b) 3,c) 5,d) 7,e) 8,f) 10,g) 12月: 31天: push ax mov ax,20

5、h ;输出空格 and ax,00ffh mov dl,al mov ah,2 int 21h loop qian mov AX,NUM mov ah,0 mov bx,ax pop cx mov cx,DAY mov ax,1 ;mov bx,5 s: ;输出日期 cmp ax,10 jl gewei call upten jmp db 0dh,0ah,$;回车换行 weeks db mon tue wed thu fri sau sun,0dh,0ah,$data endsSHOW MACRO STR LEA DX,STR MOV AH,09H INT 21H ENDMINPUTYEAR

6、MACRO X MOV AH,01H INT 21H SUB AL,30H MOV AH,00H MOV BX,X MUL BX ADD CX,AXENDMstack segment stack db 1024 dup(?)stack endscode segment assume cs:code,ds:data,ss:stack main proc far start: push ds xor ax,ax push ax mov ax,data mov ds,ax mov ax,stack mov ss,ax MOV AH,0 MOV AL,03H INT 10H MOV AH,06h ;6

7、号功能:屏幕初始化或上卷 MOV AL,0 ;全屏幕为空白 MOV BH,1FH ;卷入行属性 (前景色、背景色之类的) MOV CX,0 ;左上角行号左上角列号 MOV DH,24 ;右下角行号 MOV DL,79 ;右下角列号 INT 10h ;调用BIOS l: SHOW MSG1 MOV CX,0 INPUTYEAR 1000 INPUTYEAR 100 INPUTYEAR 10 INPUTYEAR 1 MOV YEAR,CX SHOW CR SHOW MSG2 MOV CL,0 MOV AH,01H INT 21H SUB AL,30H MOV BL,10 MUL BL MOV CL

8、,AL MOV AH,01H INT 21H SUB AL,30H ADD CL,AL MOV MONTH,CL SHOW CR MOV CX,YEAR MOV DH,MONTH MOV DL,1 MOV AH,2BH INT 21H CMP AL,0FFH JE NEXT1 MOV AH,2AH INT 21H MOV WEEK,AL SHOW CR JMP NEXT2 NEXT1: SHOW ERROR1 show CR JMP L NEXT2: CALL RUNNIAN CALL DAYS SHOW MSG0 SHOW CR lea dx,weeks mov ah,9 int 21h p

9、ush cx MOV AL,WEEK CMP AL,0 JE NEXT3 DEC AL JMP NEXT4 NEXT3: MOV AL,6 NEXT4: MOV NUM,AX MOV BL,5 MUL BL mov cx,AXqian: push ax mov ax,20h ;输出空格 and ax,00ffh mov dl,al mov ah,2 int 21h loop qian mov AX,NUM mov ah,0 mov bx,ax pop cx mov cx,DAY mov ax,1 ;mov bx,5 s: ;输出日期 cmp ax,10 jl gewei call upten

10、jmp mov ah,9 int 21h mov bx,0 pop ax ret proc near ;当输出的数为两位数时push axpush cx push bxmov cl,10div cladd ax,3030hmov bx,axmov dl,blmov ah,02hint 21hmov dl,bhmov ah,02hint 21hpop bxpop cxpush cxmov cx,3kong: mov ax,20h and ax,00ffh mov dl,ah mov ah,2 int 21h loop kongpop cx pop axretupten endpmain endp

11、code endsend start八、结果显示初始界面:键入正确的年份后:键入正确年份和月份后:输入年份月份出错:八、感想、收获及体会 在本次课程设计中遇到的一些问题:1、对于文件的打开中存在一些问题:因为本次课程设计中显示的大概模式是一个记事本,所以窗口中有人为的“画”上一个边框,但是在打开一个文件,读取并显示在屏幕上时就出现了问题。因为本次课设的DOS窗口使用的是80x25的16色文本,每一行除却左右两边的边框只有78列,而对于所要打开的文件如果一次读取的字节数超过78的话,则文件中的内容在在屏幕上显示的时候会将边框覆盖。如果每次限制读取的字节数在78以内,然后每次光标定位的每一行的行首

12、,这样的话,又会出现这样的问题:如果第一次读的78个字节中有回车换行的话,在屏幕中显示的时候它会自动回车换到第二行,同样将边框覆盖,而且在第二次读的时候重新定位到第二行的行首,这样将上次所读出的字符给覆盖了。对此,由于时间以及个人能力的限制,这个问题被暂时解决了而不是完美的解决:所读取的文件中不适用回车Enter,所需要的间隔用空格来填充。2、多次使用BIOS功能,其中感触最深的一点是使用16H 的0号功能从键盘获得字符,这个与DOS功能中的21H 中的1号功能从键盘输入字符最大的区别就是21H 中1号功能是返回的是输入字符的ASCII码,是区分大小写的,这给输入字符时造成了极大的不方便 ;当

13、然16H 的0号功能返回的是字符的扫描码和字符码。3、程序中本来对于选中所有的子菜单(除edit外)的响应是一致的,但是后来将新建和打开的功能修改了一下,加了两个子程序结果有时候Help菜单的子菜单的显示和选择就会出现问题,但是这个问题还是时有时无,因此让人很是苦恼;对于保存功能也稍修改了一下,但是对于保存功能,只要修改Help菜单的子菜单的选择就必出现问题,但碍于找不到原因,只好把这个功能不做修改。4、程序中输入向下的方向键(即)时,本来功能设置的是打开子菜单(子菜单未打开时)或向下移动选中子菜单(子菜单已打开时),但是这个功能却不能用,对此我研究思考了许久,还是未能找出原因,只好先将这个问

14、题放置到了一边,还望老师见谅。当然了,实际上这个程序做的并不是很尽善尽美,程序中还存在着一些问题,但是毕竟世界上没有十全十美的东西,所以我们只能尽可能的做到最好。收获以及体会: 通过此次课程设计,我更加体会到了使用DEBUG调试程序的好处。以前程序短,差不多就一百多行,我可以一句一句的分析、找错,但是课程设计动辄几百行,甚至这次课设我的程序达到了一千多行,对于这样大的一个程序一句一句分析显然是不太显示的事情,这就体现了DEBUG的好处,也更显示了DEBUG的重要性。通过此次课程设计,我学到了很多,因为很多东西在学习课本时是不做要求的,但是课程设计中却要用到。比如说文件的打开、新建、写、读和移动

15、指针,我们在学习课本时这一章根本就没有讲到但是这里却要用到,这就需要我们自学。再比如BIOS的一些功能,我们平常用的汇编基本上全是只有黑白版本的,但是通过使用BIOS中的10H的0号功能,通过设置AL的值设置DOS窗口的显示方式,通过设置BH的值可以设置字符属性等等。再比如说结构体,当然了本次课程设计中并没有用到结构体但是在查找资料时也稍微学习了解了一下。当然了,在本次程序中我体会最深的还是与同学的互相帮助,虽然说我们要独立完成自己的课设,但是这并不代表我们遇到问题解决不了的时候就还要自己一个在在那苦思冥想,可能你只是钻到了死胡同里出不来,那样的话你想一个小时、一天、一个星期也许都想不出来,而旁观者清当局者迷,可能别人的一句话就解决了你的问题。而且在帮助别人的时候我们自己也能学到很多东西,搞清楚很多可能以前自己也不是很清楚的知识点。所以说独立虽好,但若光是闭门造车的话也不行,我们要多与同学交流。总而言之,这次课程设计告诉我们学习不要只是局限于课本,局限于老师课堂上讲的知识,我们要学会利用身边一切的资源学习这门语言,这样才能学好一门语言。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2