汇编_判断闰年_课程设计报告
广东工业大学华立学院课程设计(论文)课程名称汇编语言程序设计题目名称判断闰年程序学生学部(系)艺术设计与计算机学部专业班级 09网络1班学号 11020901023 学生姓名指导教师卢清秀2011 年 12 月 18 日广东工业大学华立学院课程设计(论文)任务书一、课程设计(论文)的内容闰年计算这是一个非常经典的问题,在学习各种语言时都会遇到这个问题,汇编语言的课程设计也要解决这个问题。
解决本问题的关键是找到判断闰年的方法。
判断闰年的规则是:如果某一年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。
二、课程设计(论文)的要求与数据①对系统进行功能模块分析、控制模块分析正确②系统设计要实用③编程简练,可用,功能全面④说明书、流程图要清楚软件设计(包括主要模块流程图,源程序清单与注释);结果分析;调试过程(包括实验步骤、出现的问题、解决的方法、使用的实验数据等);小结(在整个课程设计过程中的总结和体会)。
三、课程设计(论文)应完成的工作(1)根据上述要求完成一个功能完善的判断闰年程序设计;(2)采用模块化的程序设计方法,程序书写符合规范,程序设计应完善;(3)对系统进行初步的错误和漏洞检测;(4)根据设计规范撰写报告并按时提交;(5)设计内容用A4纸打印并按要求装订。
四、课程设计(论文)进程安排五、应收集的资料及主要参考文献[1] 王爽.汇编语言(第2版).北京:清华大学出版社[2] 陈够喜等著,微机原理应用实验教程. 北京:人民邮电出版社[3] 刘全忠,汇编语言实用程序.天津:天津大学出版社[4] 刘乐善,微型计算机接口技术及应用.武汉:华中科技大学出版社[5]谭硫安张雪兰windows汇编语言程序设计教程:电子工业大学出版社[6] 张光长,汇编言程序设计:北京大学出版社[7] 沈美明,温冬婵编著IBM—PC汇编语言程序设计(第二版)清华大学出版社发出任务书日期: 2011 年 11 月 20 日计划完成日期: 2011 年 12 月 25 日摘要本程序是用汇编语言编写的简单的判断闰年的小程序。
在运行后,屏幕会提示输入年份,输入后程序会自动判断输入的年份是否为闰年。
判断某年为闰年的汇编语言表达式为:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)其中,(AX)中存放的是从键盘输入的年份值。
在本程序运行后,只要输入年份就能判断是否为闰年。
完成的主要功能:1、在屏幕上显示提示信息,输入年份。
2、判断输入的年份是否为闰年。
3、判断完后返回。
关键词:AX,BUF,CALL,DATACATE目录1 设计思想 (5)2 概要设计 (5)2.1 系统总体分析 (5)2.2 主模块框图及说明 (5)3 详细设计 (6)3.1 主模块及子模块说明 (6)3.2 各模块详细设计 (6)4 程序调试 (10)4.1 运行界面分析 (10)4.2 算法的分析 (10)4.3 调试过程及分析 (10)5 心得体会 (11)5.1 设计体会 (11)5.2 系统改进 (11)1 设计思想本次课程设计是关于判断闰年的程序,既输入具体的年份,输出本年是否为闰年的提示信息,然后退出此程序。
本次课程设计的目的主要是将课堂上所学的知识学以致用,通过程序的制作过程学习课外的新知识,并加强加深对旧知识的理解与掌握。
2 概要设计2.1 系统总体分析总体设计思想本程序是用汇编语言编写的简单的判断闰年的小程序。
在运行后,屏幕会提示输入年份,输入后程序会自动判断输入的年份是否为闰年。
判断某年为闰年的汇编语言表达式为:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)其中,(AX)中存放的是从键盘输入的年份值。
在本程序运行后,只要输入年份就能判断是否为闰年。
完成的主要功能:1、在屏幕上显示提示信息,输入年份。
2、判断输入的年份是否为闰年。
3、判断完后返回。
2.2主模块框图及说明结束主模块框图如图2-1本框图列出了此次课程设计的总流程,显示信息,输入数据,判断格式,判断闰年和结束程序。
客观显示了设计的顺序结构,循环结构及分支结构。
3、详细设计3.1 主模块及子模块说明判断输入模块:模块是对输入的年份的格式的判断,若是错误则退出本程序,正确则进行下面的操作。
inx:push cxmov ah,1 ;输入字符int 21hcmp al,'0'jb err ;小于'0',不是数字.cmp al,3ahjb sub1 ;'0'~'9'.err:mov dx,offset m ;提示 Input error.mov ah,9int 21h字符串转换格式模块:此模块是将数字字符串转换成数字,以便进行下面的模块。
判断闰年模块:此模块是判断输入的年份是否为闰年,若是则输出“This is a leap year!”,若不是则输出“This is not a leap year!”,然后退出。
3.2 各模块详细设计data segment ;定义数据段T db 0dh,0ah,'Please input a year: $'Y db 0dh,0ah,'This is a leap year! $'N db 0dh,0ah,'This is not a leap year! $'M db 0dh,0ah, 'Input error. $'x DW ? ;年份:0~65535B DW 4G DW 400F DW 100data endsstack segment stackdb 200 dup(?)stack endscode segmentassume ds:data,ss:stack,cs:codestart:mov ax,datamov ds,axmov dx,offset T ;在屏幕上显示提示信息 mov ah,9int 21hin_loop:mov x,0 ;数据清零.mov cx,4inx:push cxmov ah,1 ;输入字符int 21hcmp al,'0'jb err ;小于'0',不是数字. cmp al,3ahjb sub1 ;'0'~'9'.err:mov dx,offset m ;提示 Input error. mov ah,9int 21hjmp exitsub1:sub al,'0'mov ah,0mov cx,axmov ax,xmov bx,10 ;老数据乘以10mul bxadd ax,cx ;加上新数据.mov x,ax ;保存.pop cxloop inx ;继续输入.mov ax,xdiv Bcmp dx,0jnz L1mov ax,xdiv Gcmp dx,0jnz L2mov ax,xdiv Fcmp dx,0jnz L2L1:mov dx,offset N ;输出显示jmp str ;直接跳转到str L2:mov dx,offset Ystr:mov ah,09hint 21hexit:mov ah,4chint 21hcode endsend start4 程序调试4.1 运行界面分析初始界面:如图4-1图4-1按照提示输入年份如2012按回车执行程序,界面如图4-2图4-2显示“This is a leap year!”若不是闰年则显示,如图4-3图4-3若输入错误则显示如图4-4图4-4最后按提示输入“q”退出本程序。
4.2算法的分析本程序主要是将各个模块组合来完成一个目标及判断闰年。
通过主程序的调集子程序,将各个子程序的功能整合起来,完成实验目的。
4.3 调试过程及分析(1)此程序中队buf的地址地存放了解不够,它是从第二位开始的,在编译过程中,使显示总是错误。
(2)本程序用了很多的跳转,如:jz、jg、jl等,使用时要注意防止它们跳转的格式,使用范围,如:jg、jl它们是带符号位比较转移指令。
5 心得体会5.1 设计体会将近一周的课程设计,使我了解了汇编语言的基本的编程,虽然这次设计的只是一个小程序,但是这其间我还是学到了不少东西。
在这次课程设计的过程,我得到来自老师以及同学们的帮助和鼓励,致使最后圆满完成预期任务。
在设计过程中在做这个课程设计过程中,我深深感受到自己所掌握知识还是不足,已掌握也不牢固是遇到的一些棘手的问题不能解决,比如,buf地址的移动,年份的字符串转换为数值,判断闰年的语法实现等问题,但是,我通过询问同学,以及查询资料最终获得了解决,由此我们深刻体会到,只有在实际编程我们才能认识到自己的不足,才能进而进行弥补来使自己的编程水平有所提高。
这次课程设计也加深了对汇编语言这门课的认识,汇编语言课程主要是研究软件到硬件的程序设计问题,它是计算机能够提供给用户使用的最快而又最有效的用语言,也是能够利用计算机所有硬件特性并直接控制硬件的唯一语言。
并且通过本次课程设计,我的思维能力、综合应用能力和专业素质得到提高。
本程序虽然已经完成了课程设计的需求,但是就应用上来说还是不完整的。
由于时间仓促,故只提出一些改进的思想。
最后,感谢老师,以及同学们对我的帮助。
5.2 系统改进由于时间比较紧,对程序的设计还不够完美,只是设计出了程序的大体功能。
对于界面还有待继续设计。
在以后完善程序的过程中,可以加上运行一次程序多次判断闰年等功能,此功能可通过利用选择语句来判断程序是否继续执行跳转来重新进行本程序,并且系统还有很多地方需要去改善,使其更为简洁易懂。
1汇编判断闰年实习报告
1.实验题目编写一个判断闰年的汇编语言程序,判断某个年份是否是闰年,如果是,输出‚yes!‛;如果不是,则输出‚No!‛。
2.实验目的1)学习汇编基本程序结构(顺序、分支、循环)编程;2)学习int 21h的01h,09h,0ah号功能;3)学习如何用堆栈方法解决实际问题。
3.实验步骤1)根据题意,程序启动运行之后,用户在键盘上输入判断的年份,输出判断的结果。
所以,程序主要结构应如下:接收在键盘上输入的年份字符串,存储在缓冲区year;将缓冲区中的年份转换成10进制数赋给变量yeard;判断变量yeard是否满足闰年的条件;输出判断的结果。
2)首先,定义数据段。
数据段包括输入判断闰年年份提示,判断是否结束程序的提示,输入字符串的缓冲区(其中定义了允许输入的最大字节数,实际输入的个数,实际字符串存储的缓冲区大小),闰年和非闰年的判断提示,缓冲区的偏移量,十进制形式存储的变量yeard;3)定义堆栈段,由于判断闰年时会改变yeard的数值,所以定义200个字节的堆栈空间供程序使用;4)接下来进入代码段的实现,从程序结构上看,用INT 21H的09号功能输出输入判断闰年年份的提示,用INT 21H的10号功能输入年份字符串,将字符串存储在缓冲区year中;5)定义最大输入的字符个数为5(包括回车),用循环again1将year转化为十进制数存入变量yeard中;a)设置最大循环次数为4,初始字符串偏移量i为2,年份变量yeard为0;b)首先将ax寄存器置0,然后将year的首地址赋给si,再将si加上偏移量i用寄存器间接寻址方式将si存储的字符赋给al;c)将ax中存放的字符减去30h转化为十进制数值,把该数值加到年份变量yeard中,然后bx清0,将实际输入的个数存入bl中,将偏移量i与bx+1作比较(判断是否读到year的最后一个有效字符),是,跳出循环again1,否,继续下一步;d)将ax中的数值乘以10再赋给yeard,然后i自增1,回到b。
汇编_判断闰年_课程设计报告
广东工业大学华立学院课程设计(论文)课程名称汇编语言程序设计题目名称判断闰年程序学生学部(系)艺术设计与计算机学部专业班级 09网络1班学号 11020901023 学生姓名指导教师卢清秀2011 年 12 月 18 日广东工业大学华立学院课程设计(论文)任务书一、课程设计(论文)的内容闰年计算这是一个非常经典的问题,在学习各种语言时都会遇到这个问题,汇编语言的课程设计也要解决这个问题。
解决本问题的关键是找到判断闰年的方法。
判断闰年的规则是:如果某一年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。
二、课程设计(论文)的要求与数据①对系统进行功能模块分析、控制模块分析正确②系统设计要实用③编程简练,可用,功能全面④说明书、流程图要清楚软件设计(包括主要模块流程图,源程序清单与注释);结果分析;调试过程(包括实验步骤、出现的问题、解决的方法、使用的实验数据等);小结(在整个课程设计过程中的总结和体会)。
三、课程设计(论文)应完成的工作(1)根据上述要求完成一个功能完善的判断闰年程序设计;(2)采用模块化的程序设计方法,程序书写符合规范,程序设计应完善;(3)对系统进行初步的错误和漏洞检测;(4)根据设计规范撰写报告并按时提交;(5)设计内容用A4纸打印并按要求装订。
四、课程设计(论文)进程安排五、应收集的资料及主要参考文献[1] 王爽.汇编语言(第2版).北京:清华大学出版社[2] 陈够喜等著,微机原理应用实验教程. 北京:人民邮电出版社[3] 刘全忠,汇编语言实用程序.天津:天津大学出版社[4] 刘乐善,微型计算机接口技术及应用.武汉:华中科技大学出版社[5]谭硫安张雪兰windows汇编语言程序设计教程:电子工业大学出版社[6] 张光长,汇编言程序设计:北京大学出版社[7] 沈美明,温冬婵编著IBM—PC汇编语言程序设计(第二版)清华大学出版社发出任务书日期: 2011 年 11 月 20 日计划完成日期: 2011 年 12 月 25 日摘要本程序是用汇编语言编写的简单的判断闰年的小程序。
微机课设题目
1.闰年计算这是一个非常经典的问题,在学习各种语言时都会遇到这个问题,汇编语言的课程设计也要解决这个问题。
【设计内容】判断某年是否为闰年。
【设计目的】1)学习分支、中断和逻辑表达。
2)熟悉汇编语言程序的编译、链接过程。
【设计要求】从键盘输入年份,通过计算后,输出该年份是否为闰年的信息。
【设计思路】利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0-9这10个数的ASCll码值比其本身大30H的关系),利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。
解决本问题的关键是找到判断闰年的方法。
判断闰年的规则是:如果某一年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。
判断某年是否为闰年的汇编语言的表达式为:(((AX)MOD 4 EQ 0)AND((AX)MOD 100 NE 0))OR((AX)MOD 400 EQ 0)2.代码转换(大小写字母转换)【设计内容】编程实现大小写字母。
【设计目的】1)学习写字的相互转换方法。
2)多文件的链接方法。
3)过程间的互相调用。
【设计要求】按屏幕提示要求输入,从屏幕上获得正确结果。
【设计思路】在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCll码和七段显示码等。
这些数制和编码根据其作用的不同,在存储形式上也有差异。
在实际应用中,它们也因使用的要求不同而有所差异。
在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。
还有些代码转换需要根据使用要求通过编程完成。
因此,代码转换是非数据处理中最常见的情况。
模块1实现小写字母向大写字母的转换,主要利用小写字母比大写字母大20H的关系。
模块2实现大写字母向小写字母的转换,与模块2类似,将大写字母的ASCll值加上20H就可以转换成小写字母。
基于汇编语言的闰年判断程序设计
基于汇编语言的闰年判断程序设计第一章设计方案一、设计内容根据提示信息输入任意年份,编写判断闰年的程序,如果是闰年,则在屏幕上显示“Y”,否则显示“N”。
二、设计分析利用DOS 21H中断类型的10号键盘功能调用,将键盘接受到的年份数值的字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0-9这10个数的ASCⅡ码值比其本身大30H的关系),利用判断某年是否为闰年的表达式,输入该年是否为闰年的信息。
三、算法分析闰年计算是一个非常经典的问题,在学习各种语言时都会遇到这个问题,用来判断某年是否为闰年。
具体算法为如果该年份的数值正整数若能被100整除,又能被400整除,或者不能被100整除,却能被4整除,则该数值代表的年份为闰年。
四、程序流程图本框图列出了此次课程设计的总流程,显示信息,输入数据,判断格式,判断闰年和结束程序。
客观显示了设计的顺序结构,循环结构及分支结构。
图2-1 程序流程图第二章程序设计一、程序分析主程序:显示提示输入年份以及输入的字符内容,和最后输出的判断。
子程序:1.判断输入:该模块是对输入的年份的格式的判断,若是错误则显示错误Error,正确则进行下面的操作。
2.字符串转换格式:将数字字符串转换成数字,以便进行下面的程序操作。
3.判断闰年:判断输入的年份是否为闰年,若是则输出“This is a leapyear!”,若不是则输出“This is not a leap year!”,然后退出。
二、汇编程序data segmentinbuff db5,?,5dup(?)prompt db 'Please input the year:','$'errmsg db 'Input illegal!','$'yes db ' is a leap year','$'no db ' is not a leap year','$'mess db 'Continue?(y/n):','$'newline db13,10,'$' ;回车换行data endscode segmentmain proc farassume cs:code,ds:datastart:push dssub ax,axpush axmov ax,datamov ds,axlop0:call inputcall judgelea dx,messmov ah,09hint21h;是否继续输入年份的判断mov ah,01hint21hcmp al,'n'je exitcontinue:lea dx,newlinemov ah,09hint21hjmp lop0exit:retmain endp;输入一个具体的年份,并转换成10进制;返回:;(ax)=输入的年份input proc nearpush bxpush cxpush dxs1:lea dx,promptmov ah,09hint21h;提示输出lea dx,inbuffmov ah,0ahint21h;键盘输入mov dl,byte ptr inbuff[1] ;把有效地址为inbuff的字节送给dl cmp dl,4;输入的值判断是否为4位数jne error ;调用输入不合条件时的错误处理mov cx,4lea bx,inbuffadd bx,2mov ax,0mov dx,0lop1: ;检查输入有效性mov dl,10mul dlmov dl,byte ptr [bx]sub dl,30h;将字符转化为数值cmp dl,0jb errorcmp dl,9ja erroradd ax,dxinc bx;循环体中字符在字符串中的位置bx+1 loop lop1jmp s2error: ;错误处理lea dx,newlinemov ah,09hint21hlea dx,errmsgmov ah,09hint21hlea dx,newlineint21hjmp s1s2:mov cx,axlea dx,newlinemov ah,09hint21hmov ax,cxpop dxpop cxpop bx;现场恢复retinput endp;判断一个年份是否闰年;输入:;(ax)=年份judge proc nearpush bxpush cxpush dxpush ax;保存ax;输出要判断的年份mov cx,4lea bx,inbuffadd bx,2lop2:mov dl,byte ptr [bx]mov ah,02hint21hinc bxloop lop2 ;循环输出年份正确时结果中的年份lop3:pop axmov dx,0mov cx,ax;保存ax到cx中mov bx,4;判断是否能被4整除div bxcmp dx,0jne notleapmov ax,cxmov bx,100;判断是否能被100整除div bxcmp dx,0jne isleapmov bx,400;判断是否能被400整除div bxcmp dx,0jne notleapisleap:lea dx,yesmov ah,09hint21hjmp s3notleap:lea dx,nomov ah,09hint21hs3:;换行lea dx,newlinemov ah,09hint21h;输出年份正确时结果的剩余部分pop dxpop cxpop bxretjudge endpcode endsend start第三章程序调试在MF2KI软件中调试,运行上面的程序,初始界面:如图4-1图4-1输入年份2008执行程序,回车换行,则显示2008 is leap year;并给出是否继续的提示,输入y,屏幕继续显示提示输入语句;如果输入错误,如abcd 则显示Input illegal !并提示用户继续输入年份,知道输入正确年份为止;输入2010,回车换行,则显示2001 is not leap year;并给出是否继续的提示,输入n,则显示屏幕关闭,程序结束。
闰年查询系统设计报告
2014-2015学年第二学期《高级语言程序设计》课程设计报告题目:闰年查询系统的设计专业:计算机科学与技术班级:13级(3)班姓名:刘云鹏指导教师:陈茅成绩:计算机学院二0一五年四月二十四日目录1 设计内容及要求 (2)1.1设计内容 (2)1.2设计任务及具体要求 (2)2 概要设计 (2)2.1系统的功能简介 (2)2.2系统功能模块图 (2)2.3各个模块之间的主要关系 (2)3 详细设计 (3)3.1 C语言程序 (3)3.2 工作流程图 (4)4 测试数据及其结果分析 (5)4.1 测试 (5)5 用户手册 (6)6 课程设计总结与感想 (6)参考文献 (6)源程序代码 (7)1 设计内容及要求1.1设计内容(1)根据要求确定解决问题的编程方法;(2)画出程序框图、设计源程序;(3)在计算机上汇编、链接所设计的程序;(4)按照要求调试程序,记录程序运行结果;(5)写出设计总结报告。
1.2设计任务及具体要求(1)由键盘输入任意年份,限制范围:2000-9999;(2)若程序判别输入年份为闰年,显示“是闰年”,否则显示“不是闰年”2 概要设计2.1系统的功能简介判断某年是否为闰年具体算法为如果该年份的数值正整数若能被400整除,或者不能被100整除,却能被4整除,则该数值代表的年份为闰年。
便于我们大家查询此年份是否是闰年。
2.2系统功能模块图输入:输入查询的年份,系统自动判断是否为闰年输出:闰年输出“是闰年”,不是闰年,输出“不是闰年”2.3各个模块之间的主要关系该系统的功能主要是实现闰年信息的查询,输入的判断最后输出结果,两者之间是因果的关系。
3 详细设计3.1 C语言程序代码:#include <stdio.h>void main(){int year;printf(“请输入年份:\n”);scanf(“%d”,&year);if(((year%4 == 0)&&(year%100 != 0)) || (year%400 == 0)) printf(“%d是闰年\n”,year);elseprintf(“%d不是闰年\n”,year);}3.2工作流程图:(如下图3.1)(图3.1)4 测试数据及其结果分析4.1 测试(1)输入程序(如下图4.1)(图4.1) (2)运行程序(如下图4.2和4.3)(图4.2)(图4.3)5 用户手册(1)输入相应指令数字后,按enter键。
闰年课程设计内容
闰年课程设计内容一、教学目标本课程的学习目标包括:知识目标:学生能够理解闰年的概念,掌握判断闰年的方法,了解闰年产生的原因及其在现实生活中的应用。
技能目标:学生能够运用判断闰年的方法解决实际问题,提高运用数学知识解决生活问题的能力。
情感态度价值观目标:学生通过学习闰年知识,培养对数学的兴趣,增强探索自然规律的欲望,培养合作、交流、创新的能力。
二、教学内容本课程的教学内容主要包括:1.闰年的概念:介绍闰年的定义,让学生理解闰年与平年的区别。
2.判断闰年的方法:教授判断闰年的四种方法,让学生学会如何判断一个年份是闰年还是平年。
3.闰年的产生原因:讲解闰年产生的原因,让学生了解闰年的合理安排对于保持日历与地球公转周期一致的重要性。
4.闰年在生活中的应用:举例说明闰年在时间计算、农业种植等方面的应用,让学生体会闰年知识在生活中的实际意义。
三、教学方法本课程的教学方法包括:1.讲授法:教师通过讲解闰年的概念、判断方法及应用,让学生掌握基本知识。
2.讨论法:教师学生分组讨论闰年的特点,引导学生思考闰年在生活中的作用。
3.案例分析法:教师给出实例,让学生分析并解答相关问题,提高学生运用知识解决实际问题的能力。
4.实验法:教师指导学生进行闰年判断的实验,让学生在实践中巩固所学知识。
四、教学资源本课程的教学资源包括:1.教材:采用《数学》课本作为主教材,辅助学生学习闰年知识。
2.参考书:推荐《闰年揭秘》等书籍,供学生拓展阅读,了解闰年的更多内容。
3.多媒体资料:制作PPT、flash动画等多媒体资料,生动展示闰年的概念、判断方法及应用。
4.实验设备:准备计算器、日历等设备,让学生在实验环节进行实际操作。
五、教学评估本课程的评估方式包括:1.平时表现:评估学生在课堂上的参与度、提问回答等情况,以考察学生的学习态度和积极性。
2.作业:布置有关闰年的练习题,评估学生对知识点的掌握程度。
3.考试:定期进行闰年知识的小测验,全面考察学生的学习成果。
闰年_汇编语言
内容摘要闰年计算这是一个非常经典的问题,在学习各种语言时都会遇到这个问题,汇编语言的课程设计也要解决这个问题。
解决本问题的关键是找到判断闰年的方法。
判断闰年的规则是:如果某一年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。
索引关键词:闰年中断字符串的输入、输出目录一概述 (1)二程序设计 (1)1.程序设计流程图 (1)2.程序 (1)3.运行结果及分析 (3)三心得体会 (4)四参考文献 (5)一、概述利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0-9这10个数的ASCll码值比其本身大30H的关系),利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。
解决本问题的关键是找到判断闰年的方法。
判断闰年的规则是:如果某一年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。
二、程序设计1.程序设计流程图2.程序STACKS SEGMENT STACK ;堆栈段DW 128 DUP(?) ;注意这里只有128个字节STACKS ENDSdata segmentinbuff db 5,?,5 dup(?)prompt db 'Please input the year:','$'errmsg db 'Input illegal!','$'yes db ' is leap year','$'no db ' is not leap year','$'mess db 'Continue?(y/n):','$'newline db 13,10,'$'data endscode segmentmain proc farassume cs:code,ds:datastart:push dssub ax,axpush axmov ax,datamov ds,axlop0:call inputcall judgelea dx,messmov ah,09hint 21h ; 是否继续输入年份的判断mov ah,01hint 21hcmp al,'n'je exitcontinue:lea dx,newlinemov ah,09hint 21hjmp lop0exit:retmain endpinput proc near 输入一个年份并转换成10进制push bxpush cx (ax)=输入的年份push dxs1:lea dx,promptmov ah,09hint 21h 提示输出lea dx,inbuffmov ah,0ahint 21h 键盘输入mov dl,byte ptr inbuff[1]cmp dl,4 输入的值判断是否为4位数jne error 调用输入不合条件时的错误处理mov cx,4lea bx,inbuffadd bx,2mov ax,0mov dx,0lop1: 检查输入有效性mov dl,10mul dlmov dl,byte ptr [bx]sub dl,30h 将字符转化为数值cmp dl,0jb errorcmp dl,9ja erroradd ax,dxinc bx 循环体中字符在字符串中的位置bx+1 loop lop1jmp s2error: 错误处理lea dx,newlinemov ah,09hint 21hlea dx,errmsgmov ah,09hint 21hlea dx,newlinemov ah,09hint 21hjmp s1s2: mov cx,axlea dx,newlinemov ah,09hint 21hmov ax,cxpop dxpop cxpop bx 现场恢复retinput endpjudge proc near 判断一个年份是否闰年push bx 输入push cx(ax)=年份push dxpush ax 保存ax;输出要判断的年份mov cx,4lea bx,inbuffadd bx,2lop2:mov dl,byte ptr [bx]mov ah,02hint 21hinc bxloop lop2 循环输出年份正确时结果中的年份lop3:pop axmov dx,0mov cx,ax 保存ax到cx中;判断是否能被4整除mov bx,4div bxcmp dx,0lop4:jne notleap 判断是否能被100整除mov ax,cxmov bx,100div bxcmp dx,0lop5:jne isleap 判断是否能被400整除mov ax,cxmov bx,400div bxcmp dx,0jne notleapisleap:lea dx,yesmov ah,09hint 21hjmp s3notleap:lea dx,nomov ah,09hint 21hs3:lea dx,newline 换行mov ah,09hint 21h 输出年份正确时结果的剩余部分pop dxpop cxpop bxretjudge endpcode endsend start3.运行结果及分析当输入为闰年时输出It is a leap year!例如,输入为2000时当输入不是闰年时输出It is not a leap year! 例如,输入为2100时三、心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
判断某一年是否为闰年课程设计
郑州航空工业管理学院微机原理课程设计说明书2012级电气工程及其自动化专业 1206972 班级题目判断某一年是否为闰年姓名贾新亮学号120697211指导教师王义琴职称教授二О一二年十二月十二日摘要随着科学技术的迅速发展,微机的应用越来越普遍,在此设计中利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0-9这10个数的ASCll码值比其本身大30H的关系),利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。
解决本问题的关键是找到判断闰年的方法。
判断闰年的规则是:如果某一年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。
判断某年是否为闰年的汇编语言的表达式为:(((AX)MOD 4 EQ 0)AND((AX)MOD 100 NE 0))OR((AX)MOD 400 EQ 0)关键词:判断闰年中断字符串输入输出一、判断某一年是否为闰年的基本原理本设计是根据闰年的计算方法,利用汇编语言编写的一个简单的判断闰年的程序。
根据判断闰年规则:如果某年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年,否则不是闰年。
在本程序运行后,只要从键盘输入年份,通过计算后,就能输出该年份是否为闰年的信息。
二、设计方案2.1设计程序流程图否 是否是是闰年计算设计程序流程图2.2设计说明如图1闰年计算程序流程图所示,程序开始运行以后,首先屏幕输出提示语,提示用户输入一个年份。
用户输入年份后,程序将输入的字符转换为数值。
设计利用乘法的操作,实现字符之间的10倍数值转换关系。
将年份字符转换成数值开始 输入年份年份除以4是否整除 年份除以100 是否整除除以400是否整不是闰年是闰年退出退出继续? 继续?后,则进行是否是闰年的判断。
首先将年份除以4,若不能整除,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,如果用户输入‘n’则表示不需要继续,程序将退出,否则继续下一个年份的判断;若能整除4,则该年份将继续除以100,若不能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;若能整除100,则该年份将继续除以400,若能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;若不能整除400,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断。
微机-闰年判断程序设计
学号:微机原理及接口技术课程设计题目闰年判断程序设计学院自动化学院专业电气工程及其自动化班级姓名指导教师2015 年12 月18 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目: 闰年判断程序设计初始条件:该程序实现通过键盘输入一年份,然后判断该年份是否为闰年,如果是闰年,则在屏幕上显示:该年是闰年。
如果不是,则显示:该年不是闰年。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录摘要 01.设计任务及要求分析 (1)1.1课程设计的目的 (1)1.2闰年判断程序设计 (1)2.方案比较及认证说明 (2)2.1方案比较 (2)2.1.1采用汇编语言设计 (2)2.1.2采用C语言设计 (2)2.2方案论证 (2)3.系统原理阐述 (3)3.1软件思想 (3)3.2程序设计原理 (3)3.3程序设计流程图 (3)3.4汇编源程序 (4)3.4.1主模块程序 (4)3.4.2子模块程序设计 (4)4.调试记录及结果分析 (6)4.1运行界面记录 (6)4.2算法分析 (7)4.3调试过程及结果分析 (7)心得体会 (8)参考文献 (9)附录 (10)摘要本次微机原理与接口技术课程设计是要设计一个判断年份是否为闰年的显示程序。
本次课程设计用的是8086最小系统,在emu8086汇编集成环境下完成。
首先,根据课设题目要求进行分析,并选择适合要求的方案,在选定方案下设计整个设计要求的程序框架,画出流程框图,然后运用模块化的设计思想,将题设要求分成几个小的模块,一段一段的设计程序。
闰年判别任务书
附件2:
课程设计任务书
学生姓名:专业班级:电气1007
指导教师:刘劲松工作单位:自动化学院
题目: 闰年判别汇编语言程序设计
初始条件:
采用16位微处理器 8086 CPU以及86系列微型计算机的指令系统;
软件设计平台为多功能微型计算机实验软件MFS中的微机原理实验集成环境MF2KP。
要求完成的主要任务:
1、设计汇编语言程序,实现判断闰年的功能,具体功能要求如下:
(1)屏幕提示输入具体的年份(4位);
(2)输入完成后单击回车键即输出该年是否为闰年的提示信息;
(3)可连续输入年份进行判断,直至单击“Q”或“q”键退出程序。
2、根据功能要求绘制程序流程图、编写完整的汇编语言程序并上机调试:
3、撰写课程设计说明书。
课程设计说明书的撰写格式如下:
(1)设计说明书包括封面、任务书(指导老师提供)、正文、参考文献(3~5篇)、附录(程序清单,要求有注释)、成绩评定表(指导老师提供)。
(2)说明书正文包含总体方案论证(算法说明);程序流程图设计及其说明;软件设计关键问题或程序段落的说明;程序调试说明、结果记录及分析;课程设计收获及心得体会。
(3)同一选题若为合作完成,设计说明书中需注明本人承担的设计部分。
时间安排:
本次课程设计时间:2013年1月7日-16日
具体时间安排见微机原理课设大纲
指导教师签名:年月日
系主任(或责任教师)签名:年月日。
