




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言 课程设计报告 题 目 判断闰年程序 院 系 计算机与信息工程学院 班 级 姓 名 学 号 指导教师 1 设计主要任务 通过完成闰年判别程序设计掌握字符输入及 调试过程 1 1 设计任务与目标 软件所实现的任务与目标主要包括 1 由键盘输入任意年份 判断输入年份是否在限制区间 2000 9999 内 2 若程序判别输入年份为闰年 显示 不是闰年显示 3 根据要求确定解决问题的编程方法 4 画出程序框图 设计源程序 5 在计算机上汇编 链接所设计的程序 6 按照要求调试程序 记录程序运行结果 7 写出设计总结报告 2 设计方案 判断某年是否为闰年具体算法为如果该年份的数值正整数若能被 400 整 除 或者不能被 100 整除 却能被 4 整除 则该数值代表的年份为闰年 判 断结果的显示符号可用 值来实现 流程图如下 开始 显示提示信息 输入年份到 BUF 缓冲区 CX BUF 1 即输入年份的实际长度 将年份数值转换为 ASCII 字符 判断是否为闰年 CF 1 显示是闰年的信息 结束 输出范围出错 判断输入范围 显示非闰年信息 4 子程序设计 4 1 输入判断子程序 该模块是对输入的年份的范围的判断 若是输入不在2000 9999 之内 则显示错误 Error 若是输入在范围内 则进行下面的操作 4 2 数字转换子程序 将数字字符串转换成数字 以便进行下面的程序操作 4 3 判断闰年子程序 判断输入的年份是否为闰年 若是则输出 若不是则输出 然后退 出 5 调试 程序调试主要使用宏汇编程序 MASM EXE 连接程序 LINK EXE 系统操作界面当输出年份时显示结果 当输入为闰年时显示笑脸并返回操作界面 6 设计总结 通过这几天的汇编课程设计 基本掌握闰年判别程序设计 首先是根据 题目要求确定思路 然后根据思路按照题目要求编写相应汇编程序 最后用 软件调试结果是否正确 在此次课程设计中 虽然课本上也讲过年份的判别 但是比较分散 所 以刚开始设计时思路不是太清 通过查阅相关资料 清楚了程序设计的基本 框架 进而能编写出相应程序 设计中又一个难题是最后屏幕显示的问题 通过查阅相应 ASCII 值 使最后显示出结果 一周的课程设计让我收获颇多 虽然调试中遇到不少问题 但通过调试 明白程序中存在的问题并改正 通过本次实验 以后的学习奠定了良好的基 础 是对自己综合能力的一种提高 7 程序清单 data segment infon db 0dh 0ah input a year E db 0dh 0ah Error w dw 0 保存年份的数值 因年份是字符串 需要转换数 buf db 8 定义输入缓冲区 db db 8 dup data ends stack segment stack db 200 dup 0 stack ends code segment assume ds data ss stack cs code start mov ax data mov ds ax lea dx infon 在屏幕上显示提示信息 mov ah 9 显示字符串 int 21h lea dx buf 从键盘输入年份字符串 mov ah 0Ah 0AH 功能调用从键盘接受字符串到内存的输 入缓存区 int 21h mov cl buf 1 把输入的字符的个数保存在 cl 中 lea di buf 2 把从键盘输入字符的首地址存放到 di 中 push ax a0 mov al di cmp al 0dh jz a1 cmp al 9 jg a3 cmp al 2 jl a3 inc di a00 mov al di cmp al 0dh jz a1 cmp al 9 jg a3 cmp al 0 jl a3 inc di jmp a00 a1 pop ax call datacate 调用 datacate 子程序 call ifyears 调用 ifyears 子程序 jc a2 如果进位则跳转 sub AX AX 输出不是闰年 显示三角形 push AX mov AH 0FH int 10h mov AH 0 mov AL 2 int 10h mov CX 1 mov DX 0 MOV AH 2 int 10H mov AL 30 mov AH 0AH int 10H mov ah 9 int 21h jmp exit a2 sub AX AX 输出是闰年显示笑脸 push AX mov AH 0FH int 10h mov AH 0 mov AL 2 int 10h mov CX 1 mov DX 0 MOV AH 2 int 10H mov AL 2 mov AH 0AH int 10H mov ah 9 int 21h call exit a3 lea dx e mov ah 9 int 21h exit mov ah 0 int 16h mov ah 4ch 返回操作系统 int 21h datacate proc near 用于把表示年份的字符串转换为数值 push cx dec cx 让 cx 寄存器自减 1 lea si buf 2 把字符串的首地址保存在源地址寄存器 SI 中 让 si 指向字符串的最低位 p1 inc si loop p1 pop cx mov dh 30h mov bl 10 mov ax 1 p2 push ax sub byte ptr si dh ASCII 码字符 减去 30H 后转换十六进制 数 mul byte ptr si 计算 ax 乘以字符数字 add w ax 把计算结果累加 并保存在 w 中 pop ax 出栈操作 去除上一次操作后的倍数 mul bl 乘以 bl 计算当前的倍数 dec si 修改源地址寄存器 si 的值 使得 si 指向 下一个字符 即高位 loop p2 循环直到所有字符处理完毕 ret 子程序返回指令 datacate endp ifyears proc near 此子程序用来判断年份是否为闰年 push bx push cx push dx mov ax w 把转换后的年份的数值存入 AX mov cx ax mov dx 0 将 dx 清零 mov bx 4 把 4 存放到寄存器 bx 中 除数 div bx 除法指令 cmp dx 0 将 dx 的余数与 0 进行比较 看似否整 除 jnz lab1 若不相等跳转 mov ax cx 判断年份是否位 400 的整数倍 mov bx 100 将 100 赋给 bx 寄存器 做 div 的源操作 数 mov dx 0 div bx cmp dx 0 将 dx 中的余数与 0 比较 看似否整除 jnz lab2 mov ax cx 判断年份是否位 400 的整数倍 mov bx 400 mov
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中医学专业基础考试试题及答案
- 2025年数据科学与技术考试试题及答案
- 2025年数据库管理考试试题及答案
- 2025年企业管理师证书考试试题及答案
- 成人本科学位英语模拟试卷1(共901题)
- 商店欠账转让合同协议书
- 七级美育试题及答案
- 七级中考测试题及答案
- 劳务合同协议书范本矿山
- 2025年全科医生三基三严理论知识考核试题
- 脂肪肝介绍课件
- 2025 年上海社区工作人员招聘考试模拟卷
- 2024年市场营销师品牌宣传技巧试题及答案
- 应急物资、设备检查维护保养制度
- 2025年医疗器械全国总策划代理协议书
- 《数据网组建与维护》课件-8.1任务1 WLAN基本配置
- 2025解题觉醒邓诚数学(名师大招册)
- 第四单元第一课 多姿多彩的乐音世界-《唱脸谱》 课件 2024-2025学年湘艺版(2024)初中音乐七年级下册
- 给小朋友科普化学小知识
- 中医专科护士进修汇报
- 9.2 法律保障生活课件(共13张)-2024-2025学年统编版道德与法治七年级下册
评论
0/150
提交评论