微机原理字符串动画显示.doc_第1页
微机原理字符串动画显示.doc_第2页
微机原理字符串动画显示.doc_第3页
微机原理字符串动画显示.doc_第4页
微机原理字符串动画显示.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理课设报告 学生姓名 常卫洪 学号 130704101 专业班级 电子科学与技术 131 班 课程名称 微型计算机原理及应用技术 学年学期 2015 2016 学年第 1 学期 指导教师 赵艳 2 015 年 12 月 课程设计成绩评定表课程设计成绩评定表 学生姓名常卫洪学 号130704101成绩 专业班级电科 131起止时间2015 12 20 至 2015 12 29 设计题目字符串动画显示 指 导 教 师 评 语 课程设计态度 端正 较端正 一般 较差 课程设计纪律 好 较好 一般 较差 课程设计出勤情况 好 较好 一般 较差 课程设计任务完成情况 优秀 好 一般 较差 课程设计报告完成情况 优秀 好 一般 较差 动手能力 强 较强 一般 较差 团队精神 好 较好 一般 较差 创新意识 强 较强 一般 较差 指导教师 年 月 日 目录目录 一 设计目的 4 二 设计任务与要求 4 三 小组分工 4 四 实现方法 4 五 功能效果展示 11 六 改进以及及建意 13 七 心得体会 14 八 参考资料 14 九 附源程序 14 一 设计目的 一 设计目的 1 掌握汇编语言 会利用汇编语言编写一定功能的程序 2 熟悉 DOS 环境以及在 DOS 下会调试编写好的汇编程序 3 熟悉常用的 DOS 功能 4 小组合作完成设计题目 二 设计任务与要求设计任务与要求 设计内容要求 1 菜单 内容包括 输入字符串 字符串动画显示 退出 2 输入字符串 选择该项后 可以输入一个字符串 该字符串即为动画显示时所显示的字 符串 3 字符串动画显示 所示字符串在一矩形框内一半从左另一半从右向中间移动 当两半相遇时 又分别向两边移动 直至遇到两侧的边框双重新向中间移动 重复上述过程直 至按任意键 则停止字符串动画显示返回到主菜单 4 在主菜单中选择退出项 则结束程序返回 DOS 3 3 进度及分工安排进度及分工安排 1 1 进度安排进度安排 序号设计内容时间 1 查阅资料 确定设计思路3 天 2 设计实现 编写程序3 天 3 调试1 天 4 考核设计 写设计报告2 天 2 2 分工安排分工安排 序号工作内容 成员 1 确定设计思路 画流程图 陈继贤 2 编写字符串移动程序段 张恒 刘阳 3 编写菜单项 矩形框程序段 常卫洪 陈继贤 4 程序汇总 调试张恒 田淑乾 4 4 实现方法实现方法 4 1 MASM 编译开发环境实现编译开发环境实现 MASM 是微软公司开发的汇编开发环境 拥有可视化的开发界面 使开发人 员不必再使用 DOS 环境进行汇编的开发 编译速度快 支持 80 x86 汇编以及 Win32Asm 是 Windows 下开发汇编的利器 它与 windows 平台的磨合程度非常好 但是在其他平台上就有所限制 使用 MASM 的开发人员必须在 windows 下进行开 发 MASM 版本至今在不断的更新 目前的最新版本为 10 0 推荐使用新版本进 行开发 MASM 5 0 是最常用的汇编连接软件 其简单操作为 输入 asm 文件将其 连接为 obj 文件 用 link 得到 exe 文件 4 2 算法实现算法实现 软中断 DOS 功能调用编写的程序中 INT 10H 和 INT 21H 软中断的应用 如下表 INT 10H 功能号功能入口参数出口参数 00H 设置显示模式AL 03 80 25 彩色文本方 式 无 0EH 显示字符AL 字符字符显示在屏 幕上 INT 21H 功能号功能入口参数出口参数 09H 显示字符串DS DX 缓冲区 0AH 输入字符串DS DX 缓冲区 01H 键盘输入字符AL 输入字符 INT 16H 功能号功能入口参数出口参数 00H 从键盘读字符AL 字符码 AH 扫描码 矩形框代码 竖框编写 右上角编写 右下角编写 左下角编写 左上角编写 横框编写 总体流程 设置三个选项分别对应选项标号 将键盘输入的标号与 1 2 3 相比较以 确定不同的程序块调用接口 1 输入字符串 即进入过程一 2 动画显示 所要求的字符串 即调用过程二 3 返回 DOS 系统 即调用 EXIT 标号 4 3 流程图流程图 4 4 部分程序部分程序 1 菜单程序菜单程序 MENU DB 5 DUP 0AH DB 31 DUP MAIN MENU 0DH 0AH DB 25 DUP 201 21 DUP 205 187 0DH 0AH DB 25 DUP 186 1 INPUT A STRING 186 0DH 0AH DB 25 DUP 186 2 DISPLAY MODEL 186 0DH 0AH DB 25 DUP 186 3 RETURN TO DOS 186 0DH 0AH DB 25 DUP 200 21 DUP 205 188 0DH 0AH DB 28 DUP CHOICE 1 2 3 MESG DB 0DH 0AH 0DH 0AH 9 PRESS ANY KEY TO EXIT CNT1 DW 0 前导空格长度 AL 2 AL 3 输出提示 符 输入字符 串以回车 结束 输出矩形 框并保持 框内无字 符数秒 输出提示 符 输入字 符 输出提示 符 返回 DOS R Q 开始 输出主菜单 输入字符 数 字 1 2 3 存 AL AL 1 Y NN YY Y N Y N 延时几秒 直到判 断出矩形框完全出 现 CNT2 DW 0 左半字符串长度 CNT3 DW 0 中间空格长度 CNT4 DW 0 右半字符串长度 CNT5 DW 0 末尾空格长度 LEFT DW 0 STR DB 21 DB 0 BUF DB 0DH 20 DUP 0 2 矩形框程序矩形框程序 LINE 矩形框 MOV DI 18 80 10 2 MOV AL 201 左上角 MOV AH 3 矩形框颜色 STOSW MOV CX 60 2 MOV AL 横框 REP STOSW MOV AL 187 右上角 STOSW ADD DI 20 2 MOV AL 竖框 STOSW MOV LEFT DI MOV CX 60 2 MOV AL 20H 空格 REP STOSW MOV AL 竖框 STOSW ADD DI 20 2 MOV AL 200 左下角 STOSW MOV CX 60 2 MOV AL 横框 REP STOSW MOV AL 188 右下角 STOSW RET 3 字符串移动程序字符串移动程序 LEA DX MENU MENU 文件的主菜单 将 MENU 的首地址给 DX MOV AH 9 INT 21H 显示字符串 DS DX 串地址 即 MENU 画出方框图 INPUT MOV AH 0 INT 16H 从键盘读一字符 CMP AL 1 召唤第一步 输入一个字符串 JNZ CP2 结果不为零跳转 及 ZF 0 CALL SUB01 输入一个字符串 JMP INPUT CP2 CMP AL 2 召唤第二步 字符串左右移动 JNZ CP3 CALL SUB02 字符串左右移动 JMP AGAIN 返回到主菜单 CP3 CMP AL 3 返回 DOS JNZ INPUT LEA DX MESG MOV AH 9 INT 21H MOV AH 1 INT 21H 接受字符 MOV AH 4CH INT 21H 结束 DELAY PROC PUSH CX PUSH DX 保护现场 MOV DX 1000 第二轮循环次数 D1 MOV CX 0FFFFH 第一轮循环次数 LOOP 若 CX 不等于零 跳转至当前代码地址的指令 该指令在该代码段的偏 移地址 DEC DX JNZ D1 POP DX POP CX 现场还原 RET DELAY ENDP SUB01 MOV AX 0E0DH 0DH 为本行开头 0EH 输出 INT 10H MOV AL 0AH 0AH 为下一行输出 INT 10H LEA DX STR DX 输入字符缓冲区首地址 MOV AH 0AH INT 21H 输入一个字符串中断 MOV AX 0E0AH 换行 INT 10H RET SUB02 CMP STR 1 2 系统键入的字符个数 JNB Y2 JMP QUIT Y2 CALL LINE 画矩形框 MOV DL 60 2 框内长度 MOV AL STR 1 字符长度 SUB DL AL MOV DH 0 DH 清零 MOV CNT3 DX MOV BL AL INC AL SHR AL 1 AL 1 2 CBW MOV CNT2 AX 左半边 SUB BL AL MOV BH 0 MOV CNT4 BX 右半边 MOV BL 41 Y3 MOV BP ES PUSH DS POP ES MOV DI 1000H MOV CX CNT1 JCXZ U1 MOV AL 20H REP STOSB U1 LEA SI BUF MOV CX CNT2 REP MOVSB MOV CX CNT3 JCXZ U2 MOV AL 20H REP STOSB U2 MOV CX CNT4 REP MOVSB MOV CX CNT5 JCXZ U3 MOV AL 20H REP STOSB U3 SHOW MOV ES BP INC BL MOV AH BL 设置形式白底黑字 MOV SI 1000H MOV DI LEFT MOV CX 60 2 PPP LODSB STOSW LOOP PPP MOV AH 1 INT 16H JNZ SSS 按任意键 返回主菜单 CALL DELAY CMP CNT3 0 JNZ KK1 HERE MOV AL 1000B XOR BYTE PTR KK1 1 AL XOR BYTE PTR KK1 5 AL XOR BYTE PTR KK1 9 AL XOR BYTE PTR KK2 3 AL KK1 INC CNT1 INC CNT5 DEC CNT3 CMP CNT3 0 JZ KK2 DEC CNT3 KK2 CMP CNT1 0 JZ HERE JMP Y3 SSS MOV STR 1 0 QUIT LEA SI CNT1 XOR AX AX MOV CX 5 KK3 MOV SI AX INC SI INC SI LOOP KK3 XOR DI DI MOV CX 80 25 MOV AX 720H REP STOSW 清全屏 RET 5 功能效果展示功能效果展示 1 1 调试调试 程序调试 是将编制的程序投入实际运行前 用手工或编译程序等方法进行 测试 修正语法错误和逻辑错误的过程 Debug 是调试汇编语言程序的工具 它不仅能跟踪程序的运行 还可以显示修改内存与寄存器内容 以便在调试程 序中检查程序 找错 改错 2 2 编译成功编译成功 3 3 连接成功连接成功 4 4 进入程序主界面进入程序主界面 5 5 开始校验开始校验 6 6 退出程序退出程序 六 改进意见及建议六 改进意见及建议 本程序虽然已经完成了课程设计的全部要求 但是仍有不足之处 因为时 间紧张和知识缺乏 所以程序不是很好 例如 有些程序可以很简单的完成 但是由于知识的问题只能很繁琐 有很多限制 比如 限制字符串长度 应 该不能限制字符串长度 七 心得体会七 心得体会 经过一周的课程设计练习 对计算机的语言和编程有了一定的了解和掌 握 和一定的动手能力 特别明白了凡事要注重细节 细节很重要 稍有不慎 程序就会出现错误 比如 少打一个空格或一个逗号或打错一个字母就不能运 行 本次课程设计使用了汇编语言中的 INT10H INT21H 和 INT1CH 三个软中断 服务程序 INT10H 是 BIOS 对屏幕及显示器所提供的服务程序 INT21H 是 DOSX 系统功能的调用 在本次课程设计是 我编写菜单程序和矩形框程序段 从图书管理找了一 本书 看了 DOS 和 BIOS 的很多指令 也让我收益匪浅 通过本次课程设计 我将我以前学过的一些指令的运用更加的深刻 还有 一些以前没学过的指令 对于如何运用 masm 软件 比在微机原理实验时有了 更深的理解 就算一个字母输入错误都会导致最后程序运行不出来 更加锻炼 了我的细心和认真 遇到问题时 通过自己上网查资料 查课本 锻炼了自己 动手的能力 这也让我越来越深的认识到 不管以后工作还是学习都要仔细认 真 查阅资料 学习的过程大体就是 先大体弄懂要学的那些知识 然后是自 己进行练习 通过练习发现问题 然后是解决问题 这个自学的过程如此反复 每进行一次锻炼 自己的能力得到一次提升 进而一次次提高自己 实践与理论相结合 才能更好的理解所学知识 今后我将努力将基础知识 掌握牢固 争取在下一次课程设计中能够改善这次的不足 做出更好的设计 提高自己的能力 多多动手 多多练习 理论联系实际 才能真正学会 学懂 学通 融会贯通 最后 感谢指导老师和同组同学 他们在我完成这项课程设计中起到关键 的作用 对微机原理这门课程有了更深刻的认识 也正是全组同学的分工合作 全心配合 才能完成这项任务 这次学习的过程也将对我今后的工作和学习起 到指导作用 八 参考资料八 参考资料 微型计算机原理及应用技术 第 2 版 机械工业出版社 九 附源程序九 附源程序 初始化程序 CODE SEGMENT ASSUME CS CODE DS CODE START MOV AX CODE MOV DS AX MOV AX 0B800H 0B800H 是文本模式下显存起始地址 0A000H 是图形模式下显存起始地址 起始地址之后的一段内存数据决定了界面上显示的文字 图形 前背景色 MOV ES AX CLD AGAIN MOV AX 3 INT 10H 设置显示器模式为 80 25 16 色 LEA DX MENU MENU 文件的主菜单 将 MENU 的首地址给 DX MOV AH 9 INT 21H 显示字符串 DS DX 串地址 即 MENU 画出方框图 INPUT MOV AH 1 INT 21H 从键盘读一字符 CMP AL 1 召唤第一步 输入一个字符串 JNE CP2 结果不为零跳转 及 ZF 0 CALL SUB01 输入一个字符串 JMP INPUT CP2 CMP AL 2 召唤第二步 字符串左右移动 JNZ CP3 CALL SUB02 字符串左右移动 JMP AGAIN 返回到主菜单 CP3 CMP AL 3 返回 DOS JNZ INPUT LEA DX MESG MOV AH 9 INT 21H MOV AH 1 INT 21H 接受字符 MOV AH 4CH INT 21H 结束 DELAY PROC PUSH CX PUSH DX 保护现场 MOV DX 0100H 第二轮循环次数 D1 MOV CX 08FFH 第一轮循环次数 LOOP 若 CX 不等于零 跳转至当前代码地址的指令 该指令在该代码段的偏 移地址 DEC DX JNZ D1 POP DX POP CX 现场还原 RET DELAY ENDP SUB01 MOV AX 02H 0DH 为本行开头 02H 输出 INT 21H MOV DL 0AH 0AH 为下一行输出 INT 21H LEA DX STR1 DX 输入字符缓冲区首地址 MOV AH 0AH INT 21H 输入一个字符串中断 MOV AH 02H 0DH 为本行开头 02H 输出 MOV DL 0DH INT 21H MOV DL 0AH 0AH 为下一行输出 INT 21H RET SUB02 CMP STR 1 2 系统键入的字符个数 JNB Y2 JMP QUIT Y2 CALL LINE 画矩形框 MOV DL 60 2 框内长度 MOV AL STR1 1 字符长度 SUB DL AL MOV DH 0 DH 清零 MOV CNT3 DX MOV BL AL INC AL SHR AL 1 AL 1 2 CBW MOV CNT2 AX 左半边 SUB BL AL MOV BH 0 MOV CNT4 BX 右半边 MOV BL 41 Y3 MOV BP ES PUSH DS POP ES MOV DI 1000H MOV CX CNT1 JCXZ U1 MOV AL 20H REP STOSB U1 LEA SI BUF MOV CX CNT2 REP MOVSB MOV CX CNT3 JCXZ U2 MOV AL 20H REP STOSB U2 MOV CX CNT4 REP MOVSB MOV CX CNT5 JCXZ U3 MOV AL 20H REP STOSB U3 SHOW MOV ES BP INC BL MOV AH BL 设置形式白底黑字 MOV SI 1000H MOV DI LEFT MOV CX 60 2 PPP LODSB STOSW LOOP PPP MOV AH 1 INT 16H JNZ SSS 按任意键 返回主菜单 CALL DELAY CMP CNT3 0 JNZ KK1 HERE MOV AL 1000B XOR BYTE PTR KK1 1 AL XOR BYTE PTR KK1 5 AL XOR BYTE PTR KK1 9 AL XOR BYTE PTR KK2 3 AL KK1 INC CNT1 INC CNT5 DEC CNT3 CMP CNT3 0 JZ KK2 DEC CNT3 KK2 CMP CNT1 0 JZ HERE JMP Y3 SSS MOV STR 1 0 QUIT LEA SI CNT1 XOR AX AX MOV CX 5 KK3 MOV SI AX INC SI INC SI LOOP KK3 XOR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论