




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实践教学实践教学 兰州理工大学兰州理工大学 2010 年春季学期 微型计算机原理及应用微型计算机原理及应用课程设计课程设计 题题 目 目 闰年计算闰年计算 专业班级 专业班级 姓姓 名 名 学学 号 号 指导教师 指导教师 成成 绩 绩 目目 录录 一 一 摘摘 要要 1 二 二 前前 言言 2 三 三 正正 文文 3 1 设计目的 3 2 设计内容 3 3 问题描述 3 4 设计思路 3 5 设计方案 4 四 四 设设 计计 总总 结结 6 五 五 参考文献参考文献 7 六 六 致致 谢谢 8 七 七 附件附件 程序代码程序代码 9 0 一 摘一 摘 要要 汇编语言是微机原理和接口设计的基础 微机主机和接口所要实现的功能都 要通过汇编语言来实现 尽管汇编语言设计程序有编程效率低的缺点 但其运行 效率高 速度快 并且特别适合很多特殊应用的场合 如加密解密 病毒分析和 防治 软件破解等 这些在应用方面的优点是其他语言不可比拟的 面对硬件的 直接控制更是其特长 因此 在很多高级语言 如 C 中都可嵌入用汇编语言 编写的程序段 以实现优势互补 发挥各自的长处 1 二 前二 前 言言 随着计算机技术的飞速发展 计算机改变了世界 也改变了人类的生活 作 为现代科学技术的主流 新世纪的大学生 应当站在时代发展的前列 掌握现代 科学技术知识 调整自己的知识结构和能力结构 以适应社会发展的要求 本课 设就是以闰年计算为题材 让我们掌握汇编语言和微机原理和接口的关系 2 三 正三 正 文文 1 设计目的设计目的 1 学习分支 中断和逻辑表达 2 熟悉汇编语言程序的编译 链接过程 2 设计内容设计内容 1 从键盘输入年份 通过计算后 输出该年份是否为闰年的信息 3 问题描述问题描述 汇编语言是微型计算机原理及应用的基础 微机主机和接口所要实现的功能 都要通过汇编语言来实现 尽管汇编语言程序设计编程效率低 但其运行效率高 速度快 因此掌握汇编语言是学好微机原理和接口设计的第一步 闰年计算是一个非常经典的问题 在学习各种语言时都会遇到这个问题 用 来判断某年是否为闰年 4 设计思路设计思路 利用 DOS 21H 中断类型的 10 号键盘功能调用 将从键盘接收的表示年 份数值的字符串按字节存入缓冲区 将字符串中的每个字符转换为对应的十 进制数值 利用 0 9 这 10 个数的 ASCII 码值比其本身大 30H 的关系 利用 判断某年是否为闰年的表达式 输出该年是否为闰年的信息 解决本问题的关键是找到判断某年时否为闰年的方法 要判别某一年 year 是 否闰年 闰年的条件是符合下面二者之一 能被 4 整除 但不能被 100 整除 3 能被 4 整除 又能被 400 整除 本设计中 我们利用 DOS 21H 中断类型的 10 号键盘功能调用 将从键 盘接收的年份数值型字符串按字节存入缓冲区 将字符串中的每个字符转 换为对应的十进制数值 利用 0 9 这 10 个数的 ASCll 码值比其本身大 30H 的关系 通过判断某年是否为闰年的表达式 判断输出是否为闰年 的信息 5 设计方案设计方案 判断某年是否为闰年的汇编语言的表达式为 AX MOD 4 EQ 0 AND AX MOD 100 NE 0 OR AX MOD 400 EQ 0 其中 AX 中存放的是从键盘输入的年份值 以下程序是判断是否为闰年的汇编程序 cmp dx 0 将 dx 中的余数与 0 进行比较 看似否整除 jnz lab1 JNZ 用来判断比较的结果 如果有不 等的数据则跳转 zf 1 则转移 判断年份是否为 100 的整数倍 mov ax cx 将前面复制到 cx 寄存器中的年份的 数值传给 ax mov bx 100 将 100 赋给 bx 寄存器 做 div 的源 操作数 除数 mov dx 0 div bx 本例中 被除数为 ax 整型数据占两 个字节 16 位 除数 即源操作数 为整型数据 100 也占两个字节 16 位 所以按照第 3 中方式存储 cmp dx 0 将 dx 中的余数与 0 进行比较 看似 否整除 jnz lab2 JNZ 用来判断比较的结果 如果有不 4 等的数据则跳转 zf 1 则转移 判断年份是否位 400 的整数倍 mov ax cx mov bx 400 如下图 为判断闰年的流程图 开始 显示提示信息 输入年份到 BUF 缓冲区 CX BUF 1 即输入年份的实际长度 将年份数值转换为 ASCII 字符 判断是否为闰年 CF 1 显示是闰年的信息 结束 显示非闰年的信息 5 四 设四 设 计计 总总 结结 一转眼一周的微机原理课程设计在在紧张而又忙碌的氛围中度过了 在本次 课程设计中 我的设计题目是闰年计算 经过一周的课程设计 我们不但对课本 上的知识有了更深的了解和巩固 而且我还学到了平时在课堂上都学习不到的知 识 使我对系统的开发过程有了更加完整的认识 在设计过程中虽然遇到了不少困难 但当我通过自己查资料 或是向指导老 师请教以及向同学请教在网上询问 使得设计方案中发现的问题得到解决并成功 实现系统所需功能时 那种成就感和满足感足以让我忘记了这些天来的辛苦 一周的微机原理课程设计在忙碌 紧张 而又充实氛围中度过了 在这短暂 的两周时间里 我学到了很多知识 熟悉了好多程序代码 也认识到自己很多不 足的地方 时间虽短 我却收获颇丰 不单单是对于知识的收获 还夹杂着同学 们之间的友谊与团队合作精神 总之 这次课程设计给了我们一次应用自己所学 知识的机会 使我微机原理这门课程有更深层次的理解 让我们深刻体会到了互 相协作的好处 也为我今后的工作学习带来了重大的帮助 总感觉 一个人的力 量是有限的 多请教别人 虚心求问是我在以后学习中多多发扬的 6 五 参考文献五 参考文献 1 宋杰 汪志宏 江敏 微机原理与接口技术课程设计 机械工业出版社 2005 4 2 周明德 微型计算机系统原理及应用习题集 习题解答与实验指导 清华大 学出版社 2005 7 3 张开成 微型计算机原理 西南师范大学出版社 2006 8 4 沈美明 温冬婵 IBM PC 汇编语言程序设计第 2 版 清华大学出版社 2006 5 5 戴梅萼 史嘉权 微型机原理与技术 习题 实验和综合训练题集 清华大学 出版社 2009 4 7 六 致六 致 谢谢 为期一周的微机原理课程设计在紧张而又忙碌的氛围中度过了 回忆这短短 的一周时间 我从无知到熟练掌握知识这一过程出现了许多问题 但是经过老师 帮助和我们组的共同努力才克服了重重问题和困难 在这里我们要感谢很多人 因为如果没有他们 我们还只停留在最初阶段 无法顺利完成 在我们课程设计完善过程中 我也遇到了这样或那样的技术问题 但经过自 己的不懈努力及查阅大量的资料 最终都得到了基本满意的答案 同时 其他同 学也给了我许多有益的启示 促动和帮助 使我能够顺利的完成课题 感谢所有给予我帮助的老师 他们辛勤耕作 传道授业 不仅使我们开阔了 视野 拓宽了思路 增长了学识 而且为我们今后的工作和学习打下了牢固的基 础 也使增强我们对计算机的兴趣 是老师给予我无限的创造力和奋斗力 使我 有无限的信心和希望来完成本次的实训内容 其次 我要感谢我的同学 他们在我们遇到不懂的问题时也会尽量帮助我们 虽然他们也许看上去没帮我们什么忙 可是也许他们偶然的一名话都对我们起到 了很大的作用 最后我要感谢我们学校 兰州理工大学给了我们这次机会 让我们得到了锻 炼 让我们在我们的人生路上又添加了美好的一笔 我们会永生难忘 我们很感 激我们的学校 感谢他培育了这么多的优秀学生 8 七 附件七 附件 程序代码程序代码 data segment 定义数据段 infon 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 w dw 0 用于保存输入的年份的数值 因为输入的年份是 字符串 因此需要转换为数值 定义输入缓冲区 buf db 8 第一个字节指出能容纳的最大字符个数 由用户 给出 这里 定义了 8 个字节的缓存区 db 第二个字节存放实际输入的字符个数 由系统最 后填入 db 8 dup 从第三个字节开始存放键盘接受的字符 ASCII 码 值 直到 enter 结束键 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 在屏幕上显示提示信息 就是目标地址传送指 令 将一个近地址指针写入到 9 指定的寄存器 格式 LEA reg16 mem16 其中 reg16 必须是一个 16 位通用寄存 器 mem16 必须是一个存储器 执行这个指令后 就将 mem16 所指的 16 位偏移地 传送到 reg16 中 mov ah 9 显示字符串 int 21h lea dx buf 从键盘输入年份字符串 mov ah 0Ah 0AH 功能调用从键盘接受字符串到内存的输入缓 存区 int 21h mov cl buf 1 把输入的字符的个数保存在 cl 中 第二个字节 存放实际输入的字符个数 lea di buf 2 把从键盘输入字符的首地址存放到 di 中 call datacate 调用 datacate 子程序 call ifyears 调用 ifyears 子程序 jc a1 jump if carry 如果进位则跳转 lea dx n 输出不是闰年 mov ah 9 int 21h jmp exit 无条件跳转 跳转到退出返回操作系统 a1 lea dx y 输出是闰年 mov ah 9 int 21h exit mov ah 4ch 返回操作系统 int 21h 10 datacate proc near 用于把表示年份的字符串转换为数值 push cx 进栈操作 保存 cx 即字符个数 dec cx 让 cx 寄存器自减 1 lea si buf 2 把字符串的首地址保存在源地址寄存器 SI 中 让 si 指向字符串的最低位 tt1 inc si si 寄存器中内容增 1 inc 是增量指令 dec 是 减量指令 loop tt1 loop 是循环语句 pop cx 出栈操作 与 55 行进栈操作相呼应 mov dh 30h mov bl 10 mov ax 1 l1 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 l1 循环直到所有字符处理完毕 本程序 中定义 buf 为 8 个字节 所以最多八个字符 11 ret 子程序返回指令 datacate endp ifyears proc near 此子程序用来判断年份是否为闰年 push bx 将寄存器实行入栈操作是为了保存寄 存器状态 push cx push dx mov ax w 把转换后的年份的数值存入 AX mov cx ax 把 AX 中存储的年份的数值存入 CX 作用是复制一个年份数值 留作计算年份是否为 100 的整数倍用 计算年份是否为 4 的整数倍 mov dx 0 把 0 存放到寄存器 dx 中 预先将 dx 清零 为后来除法指令第 3 种存储方 法 坐下铺垫 mov bx 4 把 4 存放到寄存器 bx 中 除数 div bx 除法指令 1 被除数 16 位 除数 8 位 被除数 必须放在 AX 中 相除之后 商放在 AL 中 余数放在 AH 中 2 被除数 8 位 除数 8 位 被除数 必须放在 AL 中 AH 清零 相除之后 商放在 AL 中 余数放在 AH 中 3 被除数 32 位 除数 16 位 被除 12 数必须放在 DX AX 中 DX 为高高字 节 商放在 AX 中 余数放在 DX 中 4 被除数 16 位 除数 16 位 被除 数必须放在 AX 中 DX 清零 相除之后 上放在 AX 中 余数放在 DX 中 本例中 被除数为 ax 整型数据占两 个字节 16 位 除数 即源操作数 为整型数据 4 也占两个字节 16 位 所以按照第 3 中方式存储 余数放在 dx 中 cmp dx 0 将 dx 中的余数与 0 进行比较 看似 否整除 jnz lab1 JNZ 用来判断比较的结果 如果有不 等的数据则跳转 zf 1 则转移 判断年份是否为 100 的整数倍 mov ax cx 将前面复制到 cx 寄存器中的年份的 数值传给 ax mov bx 100 将 100 赋给 bx 寄存器 做 div 的源 操作数 除数 mov dx 0 div bx 本例中 被除数为 ax 整型数据占两 个字节 16 位 除数 即源操作数 为整型数据 100 也占两个字节 16 位 所以按照第 3 中方式存储 cmp dx 0 将 dx 中的余数与 0 进行比较 看似 否整除
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 历史●安徽卷丨2024年安徽省普通高中学业水平选择性考试历史试卷及答案
- 《ERP原理与应用(微课版)》陈承欢成明山课后思考参考答案
- 高中生英语课堂学习投入现状及其影响因素研究
- 西部志愿者试题及答案
- 北京八中2024-2025学年度第二学期第三次模拟答案
- 生物●全国甲卷丨2023年普通高等学校招生全国统一考试生物试卷及答案
- 建材公司风险管理与应急预案制定
- 2025版无限期劳动合同协议书模板
- 2025年中国台式封口机行业市场前景预测及投资价值评估分析报告
- 2025餐厅转让合同简易模板
- (高清正版)JJF 1908-2021 双金属温度计校准规范
- 硬式内窥镜项目计划书_模板范本
- 皮内注射--ppt课件
- 最新防雷设施检测报告范本
- 机械原理课程设计半自动钻床郭
- 雨林木风壁纸
- 上海初中科学会考知识点汇总——七年级第一学期牛津
- 计算机办公软件应用培训教学计划
- 专业技术人员年度情况考核登记表
- 从DOPPS 研究得到的启示
- 上海交通大学教职工奖励办法
评论
0/150
提交评论