




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学 微机原理与接口技术 课程设计说明书 0 摘 要 1 数制转换 2 1 DOS 功能调用介绍 2 2 设计方案 5 3 总程序 6 4 程序流程图及程序设计分析 13 4 1 主程序流程图 13 4 2 主程序流程图分析 14 4 3 大小写转换子程序 ABC 14 4 3 1 子程序 ABC 14 4 3 2 子程序 ABC 的流程图 16 4 3 3 子程序 ABC 流程图分析 16 4 4 ASCII 码转换子程序 CBA 17 4 4 1 子程序 CBA 17 4 4 2 子程序 CBA 的流程图 18 4 4 3 子程序 ABC 流程图分析 18 5 程序运行实例 19 5 1 大小写转换 20 5 2 ASCII 码转换 20 5 3 输入非字符 21 5 4 调试中出现的错误 21 6 心得体会 23 参考文献 24 武汉理工大学 微机原理与接口技术 课程设计说明书 1 摘 要 汇编语言是直接面向处理器 Processor 的程序设计语言 处理器是在指令的 控制下工作的 处理器可以识别的每一条指令称为机器指令 每一种处理器都 有自己可以识别的一整套指令 称为指令集 处理器执行指令时 根据不同的 指令采取不同的动作 完成不同的功能 既可以改变自己内部的工作状态 也 能控制其它外围电路的工作状态 汇编语言的主要特点是可以使用助记符来表 示机器指令的操作码和操作数 可以用标号和符号来代替地址 常量和变量 这次课程设计的任务是用汇编语言进行一个数制转换 从键盘输入一串字符 非 字符则不接受 通过屏幕提示菜单选择转换成 ASCII 码 或者进行大小写转换 原来是大写转换成小写 小写则转换为大写 并显示 先输入要转换的数据 再对数据进行检验判断其合法性 对不合法的数据进行警报并重新输入数据 对合法的数据按照要求进行大小写转换或者转换成 ASCII 码 最后显示转换后 的字符串 关键词 DOS 功能调用 ASCII 码 大小写转换 武汉理工大学 微机原理与接口技术 课程设计说明书 2 数制转换 1 DOS 功能调用介绍 DOS 是一个磁盘操作系统 也称为 IBM DOS 或者 MS DOS DOS 不仅为用户 提供了许多使用命令 而且还有用户可以直接调用的上百个子程序 对这些子 程序的调用 称为系统功能调用 这些子程序主要完成一系列的管理功能 在 使用时 用户不需要了解各种 I O 接口硬件的详细情况 就能完成对 I O 接口 的控制和管理 为了使用方便 将所有子程序从 1 号开始顺序编号 这些编号 称为 DOS 功能调用号 所以在进行设计之前 先要弄清楚 DOS 功能调用 常用的 DOS 功能调用 1 键盘输入并显示 1 号功能调用 格式 INT 21H 功能 按下任何键 将其对应字符的 ASCII 码送入 AL 中 并在屏幕上显示该字 符 如果按下的是 Ctrl Break 组合键 则终止程序执行 1 号功能调用无须 入口参数 出口参数在 AL 中 2 键盘输入但不显示 格式 MOV AH 08H INT 21H 功能 同 1 号功能调用 但字符不在屏幕上显示 3 屏幕显示一个字符 2 号功能调用 格式 MOV DL 字符 MOV AH 02H INT 21H 功能 将置入 DL 寄存器中的字符在屏幕上显示输出 4 打印输出 5 号功能调用 武汉理工大学 微机原理与接口技术 课程设计说明书 3 格式 MOV DL 字符 MOV AH 05H INT 21H 功能 将置入 DL 寄存器中的字符送打印机接口 打印输出 5 屏幕显示 格式 LEA DX 字符串的偏移地址 MOV AH 09H INT 21H 功能 在屏幕上显示字符串 在使用 9 号功能调用时 应当注意以下问题 1 待显示的字符串必须先放在内存一数据区 DS 段 中 且以 符号作为结束标志 2 应当将字符串首地址的段基址和偏移地址分别存入 DS 和 DX 寄存器中 6 字符串输入功能调用 0AH 号功能调用 格式 LEA DX 已定义缓冲区的偏移地址 MOV AH 0AH INT 21H 功能 从键盘接收字符 并存放到内存缓冲区 在使用 0AH 号功能调用时 应当注意以下问题 1 执行前先定义一个输入缓冲区 缓冲区内第一个字节定义为允许最 多输入的字符个数 字符个数应包括回车符 0DH 在内 不能为 0 值 第二个 字节保留 在执 行程序完毕后存入输入的实际字符个数 从第三个字节开始存 入从键盘上接收字符的 ASCII 码 若实际输入的字符个数少于定义的 2 应当将缓冲区首地址的段基址和偏移地址分别存入 DS 和 DX 寄存器 中 7 返回 DOS 操作系统 4CH 号功能调用 格式 MOV AH 4CH INT 21H 武汉理工大学 微机原理与接口技术 课程设计说明书 4 功能 终止当前程序的运行 并把控制权交给调用的程序 即返回 DOS 系 统 屏幕出现 DOS 提示符 如 C 等待 DOS 命令 8 直接输入 输出单字符 6 号功能调用 格式 MOV DL 输入 输出标志 MOV AH 06H INT 21H 功能 执行键盘输入操作或屏幕显示输出操作 但不检查 Ctrl Break 组 合键是否按下 执行这两种操作的选择由 DL 寄存器中的内容决定 1 当 DL 0FFH 时 执行键盘输入操作 若标志 ZF 0 AL 中放入字 符的 ASCII 码 若标志 ZF 1 表示无键按下 这种调用用来检测键盘是否有 键按下 但不等待键盘输入 2 当 DL 0FFH 时 表示将 DL 中内容送屏幕显示输出 9 检查键盘的工作状态 0BH 号功能调用 格式 MOV AH 0BH INT 21H 功能 检查是否有键盘输入 若有键按下 则使 AL 0FFH 若无键按下 则 AL 00H 对于利用键盘操作退出循环或使程序结束之类的操作来说 这种 调用是很方便实用的 武汉理工大学 微机原理与接口技术 课程设计说明书 5 2 设计方案 本次课程设计的要求是 从键盘输入一串字符 通过屏幕提示菜单选择转 换成 ASCII 码 或者进行大小写转换并显示 设计的基本思路 首先要先完成字符串的输入并存在 buf1 中 然后输入一个字符通过检验 字符来选择跳转到相应的子程序中去进行 ASCII 码转换或者进行大小写转换 将转换后的字符串存放到 buf2 中 转换完成后跳转到输出部分即可完成程序功 能 为了程序能重复运行 在代码段末尾加一条强制跳转语句跳到开头部分 武汉理工大学 微机原理与接口技术 课程设计说明书 6 3 总程序 输入一串字符 非字符则不接受 原字符存放在 buf1 中 转换后的字符存放在 buf2 中 按照屏幕菜单选择进行 ASCII 码转换 或者进行大小写转换 DATA SEGMENT 数据段 input db 0ah 0dh if you want to quit please press Q q db 0ah 0dh press other key to zhuanhuan 0ah 0dh 输入提示 inputmess db 0ah 0dh please input buf1 0ah 0dh buf db 100 db db 100 dup 0 字符缓冲 区 ZHUANHUAN db 0ah 0dh if you want to change case press A a db 0ah 0dh if you want to transform to ascii press B b 0ah 0dh 转换提示 outputmess db 0ah 0dh after transform Character String BUF2 db 0ah 0dh BUF1 输出提示 BUF1 DB 100 dup 0 chgline db 0ah 0dh BUF2 BUF2 DB 100 DUP 0 BUF3 db 0ah 武汉理工大学 微机原理与接口技术 课程设计说明书 7 DATA ENDS STACK1 SEGMENT STACK DB 20 DUP STACK1 ENDS CODE SEGMENT 代码段 ASSUME DS DATA SS STACK1 CS CODE START MOV AX DATA MOV DS AX AP LEA DX input 输入提示 MOV AH 9 INT 21h MOV AH 08h INT 21h CMP AL Q JE exit CMP AL q JE exit PA LEA DX inputmess MOV AH 9 INT 21h LEA DX buf MOV AH 10 输入字符 INT 21h LEA di buf 2 将字符存入缓冲区 buf 中 LEA si buf1 MOV CX 0 next MOV DL di INC di 武汉理工大学 微机原理与接口技术 课程设计说明书 8 CMP DL 0dh 判断是否传送完毕 JNE aa JMP end0 aa MOV si DL 将缓冲区 buf 中的内容存入 buf1 中 INC si INC CX JMP next exit MOV AH 4CH INT 21H end0 MOV byte ptr si INC CX MOV BP CX MOV SI OFFSET BUF1 建立源地址指针 MOV DI OFFSET BUF2 建立目标地址指针 MOV CX BP 字节数送入 CX 寄存器 LEA DX ZHUANHUAN 输出转换信息 进行转换选择 MOV AH 9 INT 21H MOV AH 08 INT 21H CMP AL A 检验输入的字符 输入 A a 跳到 AB 进行大 小 写转换 是 B b 跳到 BA 进行 ASCII 转换 JE AB CMP AL a JE AB CMP AL B JE BA CMP AL b 武汉理工大学 微机原理与接口技术 课程设计说明书 9 JE BA AB CALL ABC 调用子程序 ABC JMP L1 BA CALL CBA 调用子程序 CBA JMP L1 ABC PROC 子程序 ABC AC PUSH SI 进栈 PUSH DI PUSH CX PUSH AX MOV AL SI CMP AL JE L1 判断大小写并进行大小写转换 CMP AL a JL DBA CMP AL z JL JK JMP PA JK SUB AL 20H MOV DI AL JMP AA0 DBA CMP AL Z JL KK JMP PA KK CMP AL A JG LL JMP PA LL ADD AL 20H MOV DI AL 武汉理工大学 微机原理与接口技术 课程设计说明书 10 AA0 INC SI INC DI DEC CX JNZ AC POP CX 出栈 POP DI POP SI POP AX RET ABC ENDP CBA PROC 完成字符转换成 ASCII 的子程序 AD PUSH SI 进栈 PUSH DI PUSH CX PUSH AX MOV AL SI CMP AL JE L1 CMP AL a JL ABD CMP AL z JLE HW JMP PA HW CBW MOV BL 10H 将小写字母转换成 ASCII DIV BL ADD AL 30H MOV DI AL INC DI 武汉理工大学 微机原理与接口技术 课程设计说明书 11 ADD AH 30H MOV DI AH JMP BB0 ABD CMP AL Z JLE HO JMP PA HO CMP AL A JGE MO JMP PA MO CBW MOV BL 10H 将大写字母转换成 ASCII 码 DIV BL ADD AL 30H MOV DI AL INC DI ADD AH 30H MOV DI AH BB0 INC SI SI 1 DI 1 INC DI DEC CX JNZ AD POP CX 出栈 POP DI POP SI POP AX RET CBA ENDP L1 LEA DX OUTPUTMESS 实现输出 武汉理工大学 微机原理与接口技术 课程设计说明书 12 MOV AH 9 INT 21H LEA DX buf1 MOV AH 9 INT 21h LEA DX chgline MOV AH 9 INT 21h LEA dx BUF3 MOV ah 9 INT 21h JMP AP CODE ENDS END START 武汉理工大学 微机原理与接口技术 课程设计说明书 13 4 程序流程图及程序设计分析 4 1 主程序流程图 N Y N Y Y 开始 输出字符串输入提示符 将字符输入缓冲区 再传入 buf1 LEA DI buf 2 LEA SI buf1 CX 置 0 将 di 赋给 DL DI 加 1 建立目标 源地址指针 输出信息进行转换选择 输入字符 调用子程序 CBA 进行 ASCII 转换 输出 输出 调用子程序 ABC mov si dl si cx 加 1 传送完成 判断是否为 A a 判断是否为 B b 武汉理工大学 微机原理与接口技术 课程设计说明书 14 4 2 主程序流程图分析 首先在屏幕上输出显示字符串输入提示符 再进行字符串的输入 输入字 符串完成后在屏幕上输出转换信息 选择输入 A a 进行大小写转换或者输入 B b 进行 ASCII 转换 接着输入一个字符 判断输入字符 A a 还是 B b 跳转到 进行相应的转换 在子程序中判断是否有非字符 若有非字符则重新输入 没 有则进行转换 转换完成后跳转到输出部分进行输出 程序结束 4 3 大小写转换子程序 ABC 4 3 1 子程序 ABC ABC PROC 子程序 ABC AC PUSH SI PUSH DI PUSH CX PUSH AX MOV AL SI CMP AL JE L1 判断大小写并进行大小写转换 CMP AL a JL DBA CMP AL z JL JK JMP PA JK SUB AL 20H MOV DI AL JMP AA0 DBA CMP AL Z JL KK JMP PA KK CMP AL A JG LL JMP PA LL ADD AL 20H MOV DI AL AA0 INC SI INC DI DEC CX 武汉理工大学 微机原理与接口技术 课程设计说明书 15 AX CX SI DI 出栈 JNZ AC POP CX POP DI POP SI POP AX RET ABC ENDP 4 3 2 子程序 ABC 的流程图 N Y 开始 AX CX SI DI 入栈 取 buf1 中的字符 是否为字符 进行大小写转换 SI DI 加 1 CX 减 1 CX 是否为 0 结束 跳转到 PA 重新输入 武汉理工大学 微机原理与接口技术 课程设计说明书 16 4 3 3 子程序 ABC 流程图分析 程序开始先取 buf1 中的字符 判断是否为字符 如果不是字符则不符合要 求就不进行转换直接跳转到 PA 重新输入字符 buf1 如果是字符则进行大小写 转换 转换后的字符存储在字符串 buf2 中 之后 SI DI 加 1 CX 减 1 判断 CX 是否为零 如果 CX 为零说明完成转换 此时可以将 SI DI CX AX 出栈 子程序结束 跳转到 L1 进行输出 否则继续取下一个字符进行转换 直至转换 完成 4 4 ASCII 码转换子程序 CBA 4 4 1 子程序 CBA CBA PROC 完成字符转换成 ASCII 的子程序 AD PUSH SI PUSH DI PUSH CX MOV AL SI CMP AL JE L1 CMP AL a JL ABD CMP AL z JLE HW JMP PA HW CBW MOV BL 10H 将小写字母转换成 ASCII 码 DIV BL ADD AL 30H MOV DI AL INC DI ADD AH 30H MOV DI AH JMP BB0 ABD CMP AL Z JLE HO JMP PA HO CMP AL A JGE MO JMP PA MO CBW MOV BL 10H 将大写字母转换成 ASCII 码 武汉理工大学 微机原理与接口技术 课程设计说明书 17 ADD AL 30H INC DI ADD AH 30H MOV DI AH BB0 INC SI INC DI DEC CX JNZ AD POP CX POP DI POP SI RET CBA ENDP 4 4 2 子程序 CBA 的流程图 N Y N Y SI DI CX AX 入栈 取 buf1 中的字符 判断是否为字符 将字符转换成 ASCII 码 SI 加 1 DI 加 1 CX 减 1 CX 是否为 0 SI DI AX CX 出栈 开始 跳转到 PA 重新输入 开始 武汉理工大学 微机原理与接口技术 课程设计说明书 18 4 4 3 子程序 ABC 流程图分析 程序开始先取 buf1 中的字符 判断是否为字符 如果不是字符则不符合要求就 不进行转换直接跳转到 PA 重新输入字符 buf1 如果是字符则进行 ASCII 码转 换 转换后的字符存储在字符串 buf2 中 之后 SI DI 加 1 CX 减 1 判断 CX 是否为零 如果 CX 为零说明完成转换 此时可以将 SI DI CX AX 出栈 子 程序结束 跳转到 L1 进行输出 否则继续取下一个字符进行转换 直至转换完 成 武汉理工大学 微机原理与接口技术 课程设计说明书 19 5 程序运行实例 根据题目要求 键盘输入一串字符 非字符则不接受 通过屏幕提示菜单选择转换成 ASCII 码 或者进行大小写转换 原来是大写转换成小写 小写则转换为大写 并显 示 所以可能有三种处理结果 1 输入字符串后进行大小写转换后输出显示在屏幕上 2 输入字符串后将字符串转换成 ASCII 码输出显示在屏幕上 3 输入的串中含有非字符 则不进行转换输出 跳到程序 PA 处重新输入字 符 5 1 大小写转换 当输入字符串为 ahsghfgGGGGGhhhh 并且输入字符 A a 进行大小写转 换时得出结果如下 武汉理工大学 微机原理与接口技术 课程设计说明书 20 图 5 1 5 2 ASCII 码转换 当输入字符串为 agdfhdAAASS 并且在下一步输入 B b 将输入的字符 转换成 ASCII 码输出得到的结果如下 武汉理工大学 微机原理与接口技术 课程设计说明书 21 图 5 2 5 3 输入非字符 当输入的字符串为 dddgg3325fdgagh66 含有非字符时 字符串不进行转 换 直接跳转到程序 PA 处 提示重新输入字符 buf1 结果如下 图 5 3 5 4 调试中出现的错误 1 当判断字符串含有非字符时 直接跳转到重新输入的 PA 处 程序会发生如 武汉理工大学 微机原理与接口技术 课程设计说明书 22 下错误 跳转时相对跳出范围 N 字节 所以要使用无条件转移指令 JMP 来解决 这个问题 在其他处发生此类错误也是用同样的的解决方法 错误程序 ABD CMP AL Z JG PA CMP AL A 图 5 1 修改后的程序 ABD CMP AL Z JLE HO JMP PA HO CMP AL A 2 在实现输出 L1 部分处 输出 buf1 和转换后的 buf2 后 程序会输出处会有一 小段乱码 解决的办法是 在输出结尾处增加输出换行 buf3 即可解决 错误程序 L1 LEA DX OUTPUTMESS 实现输出 MOV AH 9 INT 21H LEA DX buf1 MOV AH 9 INT 21h LEA DX chgline MOV AH 9 INT 21h 武汉理工大学 微机原理与接口技术 课程设计说明书 23 图 5 2 修改后的程序 L1 LEA DX OUTPUTMESS 实现输出 MOV AH 9 INT 21H LEA DX buf1 MOV AH 9 INT 21h LEA DX chgline MOV AH 9 INT 21h LEA dx BUF3 MOV ah 9 INT 21h 3 调用子程序 ABC 或者 CBA 后已经完成了一种转换 需要跳转到
温馨提示
- 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年标准板材市场推广与销售代理合同
- 2025版公共设施消防栓系统更换与维护服务合同
- 言语语言障碍康复护理
- 统编语文五年级上册第一单元作业设计
- 2024重庆机场集团公开招聘57人(高频重点提升专题训练)共500题附带答案详解
- 介入科护理常规最终版
- DL∕T 1608-2016 电能质量数据交换格式规范
- 马克思主义与社会科学方法论课后思考题答案全
- 医院口腔科服务管理制度
- 《军事理论》教案第七章 射击与战术训练
- 药事管理手册
- 电子产品原理分析与故障检修(第2版)高职全套教学课件
- 护士重症监护室护理的进修
评论
0/150
提交评论