




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计(论文) 课程名称:微机原理与接口技术 题目:基于汇编语言下判断闰年的程序设计 院 (系):机械电子工程系 专业班级: 姓 名: 学 号: 指导教师: 2011年1月12日目 录 一、设计任务3二、系统设计原理及方案3三、程序设计5四、系统功能实现9五、实验总结与心得体会10引言随着科技的发展与进步,计算机日益推广普及,各种计算机语言层出不穷,而汇编语言是一种能充分发挥和利用计算机硬件特征的语言,也是计算机能够提供给用户使用的最快而又最有效的语言,汇编语言是能够使用计算机所有硬件特性并能直接控制硬件的惟一语言,因而对时间和空间要求很高的场合,汇编语言的应用是必不可少的,尤其适用于对时空效率要求较高、与机器硬件密切相关的高性能软件的开发。汇编语言面向机器,能够为程序员提供最直接操纵机器硬件系统的途径,所以,利用汇编语言,就可以编写出最有效率的程序。 基于汇编语言编写的简单的判断闰年的程序,简单便捷易于应用,可应用到日常生活中闰年的判断,也可用在万年历的制作中。根据闰年的计算方法:如果某年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。判断某年为闰年的汇编语言表达式为:(AX) MOD 4 EQ 0) AND (AX) MOD 100 EQ 0) OR (AX) MOD 400 EQ 0)其中,(AX)中存放的是从键盘输入的年份值。在本程序运行后,只要输入年份就能判断是否为闰年,在结果输出后对于用户选择是否继续程序。1、 设计任务1.1 程序简介 本程序是基于汇编语言编写的简单的判断闰年的程序。屏幕上要有提示输入年份,输入年份后在屏幕上输出:XXXX年是否为闰年的提示信息.然后提示是否要继续输入,如果不输入则退出.程序设计中,如遇到字符输入中不符合的情况,还应在程序中设计错误处理以及换行的指令,来满足用户的需求。1.2 软硬件环境要求(1)使用IBM-PC计算机及其兼容机型即可。(2)使用Win2000操作系统。(3)汇编程序使用MF2KP微机原理实验集成开发环境。2、 系统设计原理及方案2.1 系统总体分析根据屏幕提示输入任意年份,输入年份后在屏幕上输出:XXXX年是否为闰年的提示信息.然后提示是否要继续输入,如果不输入则退出。2.2 程序流程图及说明循环调用DOS下一号功能输入的数据串,对于输入串进行判断是否是四位十进制数并进行处理,如果不满足要求则显示输入错误;满足则根据闰年的定义判断输入的十进制数表示的年份是否是闰年。首先是将输入的年份转换为对应的十六进制表示,再将它存入通用寄存器AX,然后根据定义进行判断,并根据之前的条件得到相应的输出,即输入错误,是闰年,不是闰年。若用户继续输入,则换行重新判断,达到可重复输入的目的。 开 始输入年份(十进制)是否为四位数?输入=AX(十六进制)AX%4=0?AX%100=0?AX%400=0?是 闰 年结 束输 入 错 误不 是 闰 年 否 是 否 是 否 是 否 是 三、程序设计 data segment inbuff 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 ends code segment main proc far assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax lop0: call input call judge lea dx,mess mov ah,09h int 21h ;是否继续输入年份的判断 mov ah,01h int 21h cmp al,n je exit continue: lea dx,newline mov ah,09h int 21h jmp lop0 exit: ret main endp input proc near ;输入一个年份并转换成10进制 push bx ;返回: push cx ;(ax)=输入的年份 push dx s1: lea dx,prompt mov ah,09h int 21h ;提示输出 lea dx,inbuff mov ah,0ah int 21h ;键盘输入 mov dl,byte ptr inbuff1 cmp dl,4 ;输入的值判断是否为4位数 jne error ;调用输入不合条件时的错误处理 mov cx,4 lea bx,inbuff add bx,2 mov ax,0 mov dx,0 lop1: ;检查输入有效性 mov dl,10 mul dl mov dl,byte ptr bx sub dl,30h ;将字符转化为数值 cmp dl,0 jb error cmp dl,9 ja error add ax,dx inc bx ;循环体中字符在字符串中的位置bx+1 loop lop1 jmp s2 error: ;错误处理 lea dx,newline mov ah,09h int 21h lea dx,errmsg mov ah,09h int 21h lea dx,newline mov ah,09h int 21h jmp s1 s2: mov cx,ax lea dx,newline mov ah,09h int 21h mov ax,cx pop dx pop cx pop bx ;现场恢复 ret input endp judge proc near ;判断一个年份是否闰年 push bx ;输入 push cx ;(ax)=年份 push dx push ax ;保存ax;输出要判断的年份 mov cx,4 lea bx,inbuff add bx,2 lop2: mov dl,byte ptr bx mov ah,02h int 21h inc bx loop lop2 ;循环输出年份正确时结果中的年份 lop3: pop ax mov dx,0 mov cx,ax ;保存ax到cx中;判断是否能被4整除 mov bx,4 div bx cmp dx,0 lop4: jne notleap ;判断是否能被100整除 mov ax,cx mov bx,100 div bx cmp dx,0 lop5: jne isleap ;判断是否能被400整除 mov ax,cx mov bx,400 div bx cmp dx,0 jne notleap isleap: lea dx,yes mov ah,09h int 21h jmp s3 notleap: lea dx,no mov ah,09h int 21h s3: lea dx,newline ;换行 mov ah,09h int 21h ;输出年份正确时结果的剩余部分 pop dx pop cx pop bx ret judge endp code ends end start 四、系统功能实现4.1 运行界面分析本程序是用汇编语言编写的简单的判断闰年的小程序。其运行界面有以下几点要求(下图是运行所有年份运行后的界面):1.在用户输入年份之前,屏幕上要有相关提示;2.输入年份后在屏幕上输出:XXXX年是否为闰年的结果输出;3.最后提示是否要继续输入,如果不输入则退出。 图4.1 程序运行界面4.2 算法的分析在公历年中,有闰日的年份叫闰年,一般年份365天,闰年为366天。闰年的计算方法:公元年的年数可以被4整除但不被100整除,即为闰年或被100整除且能被400整除为闰年。如2000年是闰年,而1900年不是。也就是俗话说的“四年一闰,百年不闰,四百年再闰”。4.3 调试过程及分析 用户输入年份时出现无法输出和输出错误的情况 ,后来改用在开始时,我们用DOS下09H号功能输出提示,但是在输出循环调用DOS下02H号功能输出组成年份的各位数字符来实现年份的输出。 五、实验总结与心得体会通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。通过这次课程设计,我巩固所了学过的知识,熟悉了汇编语言众多指令及其功能,懂得了用汇编语言运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,并学会了子程序使用调用CALL和返回RET指令,以及合理使用堆栈之灵来达到寄存器的保护和恢复,以及正确地运用DEBUG指令。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握debug命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。,学习在使用子程序时应正确使用调用CALL和返回RET指令,以及合理使用堆栈之灵来达到寄存器的保护和恢复。 没有辛苦的历程就无法感受甜美的收获。此次微机原理与接口技术课程设计让我的身心也得到了改善,自身素质也有所提高。而且通过与组员们的合作,我们对此门课程有了更深的了解。我们此次的合作争吵与交流并存,但是我们都秉着正确的态度来看待此次的课程设计,不仅收获知识还收获快乐。这过程中我们受到了老师的精心指导和帮助,您的思想指引着我们克服了诸多困难,在这里我衷心的感谢张老师!参考文献1李敬兆 8086/8088和arm核汇编语言程序设计 中国科技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年病媒生物防治试题及答案
- 职业暴露处置流程考核试题及答案
- 2025年疟疾防治知识培训考试题及答案
- 教师职业资格考试2025年必考试题(含答案)
- 2025糖医帮认证考试题库(含答案)
- 《煤矿安全规程》知识试题含答案判断题
- 2025年生态环保材料供应与能源消耗降低合同
- 2025年新型城市安防系统设备供应与安装服务合同
- 2025年生物制药产品区域代理权及合规营销合作协议
- 2025年度智能财务系统数据安全保密及隐私维护服务合同
- 老年大学京剧青衣课程教学大纲
- 2025年综合窗口岗位工作人员招聘考试笔试试题(附答案)
- 南昌航空笔试题库及答案
- 医保违规处理制度3
- 中学化学课程中整合地域文化特色的教学实践
- 2025年闸门运行工(高级)职业技能考试题及答案
- 高二年级培优措施及策略
- 2025年中国人寿:养老险上海分公司招聘笔试参考题库含答案解析
- 2025至2031年中国特种工业气体行业投资前景及策略咨询研究报告
- 2025年福建中闽海上风电有限公司招聘笔试参考题库含答案解析
- 中国航空集团有限公司介绍
评论
0/150
提交评论