- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编程序 读入一个文本文件并以DEBUG中D命令格式显示
目 录
1. 题目 1
2. 程序总体设计方案、思路 1
3. 程序设计框图 3
4. 源程序清单 11
5. 程序调试结果及分析 18
6. 设计总结 21
6.1问题 21
6.2心得 21
题目
读入一个文本文件并以DEBUG中的D命令格式显示
程序总体设计方案、思路
本程序是读入一个文本文件并以DEBUG中的D命令格式显示。 操作环境是32位的windows XP系统,使用CmasmW软件(本人使用Masm软件,操作环境是64位WINDOWS 7)进行汇编。本程序要求以DEBUG中的D命令格式显示一个文本文件,文件名从键盘键入,大体思路为打开相应文件,读文件至程序缓冲区,并按照要求显示,以下是我本次课程设计的详细方案、思路:
本程序要求用D命令格式显示内容,使用DEBUG中的D命令格式显示一个文本文件时,显示寄存器中的内容大致为:段地址、偏移地址、ASCII码部分(每个字节的值都用ASCII码表示)和字符显示部分(将ASCII码转化为字符显示),每个非打印字符(无效的字符)在显示时用“.”表示,每行显示16个字节的内容,第8个字节和第9个字节之间有一个连接字符“-”。每个显示行从16字节的边界上开始。
程序主要由两大块组成,第一块是文件的获取,包括键入、打开、读取和关闭,其中主要涉及基本DOS系统功能调用指令的使用。第二块是文件的显示,包括段地址、偏移地址、以及读取的文件内容(ASCII码及对应的符号),其中就涉及到多次转移和循环,需要多个子程序的支持才能实现(注意子程序要进行存储保护和恢复)。
程序开始之前,首先在DATA SEGMENT数据段中定义BUF1用来存储读取的文件,用BUF来存储文件名的最大字符缓冲以及实际输入的字符个数,通过相连的FILE来保存实际输入的文件名,HANDLE的作用是在成功打开文件后保存文件代号,ERROR_MESSAGE和MESSAGE分别是提示语句,用来提示错误和键入值。
第一大块(文件的获取)的内容主要依靠基本的键盘键入以及文件存储实现:
首先要键盘输入需要显示内容的文件名,通过0A号功能键入一个文件名到缓冲区,用BUF来存放缓冲区最大字符数和实际输入的文件名的长度,其中并不存放文件名,真正的文件名用FILE来存放,输入完以后在FILE末给“0”(MOV指令)以结束并确认输入,文件名键入完成;
键入完成后,打开文件,通过3D号功能打开文件,需要先将AL置0以选择读功能(AL=1为写,2为读/写),将FILE文件名首地址给DX以读取文件名,如果打开失败则显示错误,AX=错误码,如果成功则AX=文件代号,文件代号需要通过第三方保存,因为在后续操作需要使用,进入下一步;
通过3F号功能读取文件,调用参数BX=文件代号,CX=读取字节数,用BUF1读取文件的内容,如果读取文件失败,则显示错误,AX=错误码,如果成功读取文件,则文件保存在BUF1中,AX=实际读入的字节数;
将HANDLE中所存的文件代号给BX,通过3E号功能完成文件关闭功能,如果程序到此都没有发生错误,则运行成功,进入下一个阶段,如失败,则提示错误,AX=错误码。
第二大块功能主要是通过循环、转移、比较等来实现最终显示:
由于D命令格式显示有其特殊的要求(上文已经提及),所以在设计时也应该考虑在内,本程序设置256个字符,每行显示16个字节,共16行,这里可以用到loop循环16次,每一次显示一行内容;
显示段地址,调用子程序显示段地址,将DATA段的地址给BX,通过4次循环(一次左移4位)依次读出4个4位二进制数,用4位16进制表示,具体规则是,将每次循环到低位的数和0FH相与,只留下最低4位,让其与30H相加,如果小于3AH,说明是0-9之间的数,由16进制的规则可知他们都可以直接显示,如果大于等于3A,则要将其加7(如A 对应10,加30H后为3A,加7后为41H,为A对应的ASCII码),经过循环后,可以将段地址显示,段地址和偏移地址间要加“:”号;
显示偏移地址,用DI作为偏移量,初始化为0,将BUF[DI]的地址给BX,以显示段地址的方式将偏移地址显示出,然后显示一个空格;
前8个对应字符ASCII码的显示,因为D命令格式要求8个字符中间要加一个“-”号,所以在程序编写时要分两次进行,中间加上“-”号。通过8次循环来依次显示前8个字节,通过BUF1[DI]依次读取BUF1中的内容,DI初始为0;
后8个对应字符ASCII码的显示原理与第4步相同,在此不进行过多阐述;
显示ASCII码对应的字符,由于之前DI已经增到16,但我们需要重新开始读取BUF1,以此来显示改行最开始的字符,所以要先将DI减16,回到每一行的最初位置,再通过16次循环将每行16个字节显示出来,这里要注意D命令格式的要求,每个非打印字符在
您可能关注的文档
- 水族箱基础设施.ppt
- 水油混合深层油炸及真空油炸.ppt
- 水泥中含量测定报告.doc
- 水利工程及水工建筑物2(简).ppt
- 水泥厂机械设备及计量设备安装要求及试运转规定.doc
- 水泥厂设备预知维修与润滑管理.ppt
- 水泥取样标准及检测.doc
- 水泥厂密闭空间危险.ppt
- 水泥助磨剂的性能及应用.ppt
- 水泥浆及集料界面.pptx
- 《现代海上通信与信息技术》课件_S4 海上卫星通信与导航.PPT
- 《新编大学语文》课件_第4章.pptx
- 《移动电子商务及应用》课件_14. 移动商务应用动态网页设计.pptx
- 《幼儿教师综合素养》课件_第四章 文化素养(上)第一二节.pptx
- 《现代海上通信与信息技术》课件_S2 海上无线电通信技术基础.ppt
- 《天线与电波传播》课件_5静电场的基本方程、边界条件.pptx
- 《天线与电波传播》课件_13天线的概念和参数.pptx
- 《现代海上通信与信息技术》课件_S5 海上宽带网络通信.PPT
- 《信息安全基础》课件_6.2 网络安全法.pptx
- 《移动电子商务及应用》课件_5. 移动银行与移动支付.pptx
最近下载
- QMS现场审核过程的风险及应对 - 第六章 审核过程的其他风险及应对考试答案.doc
- 一例脑卒中气管切开合并吞咽障碍患者护理个案汇报.pptx
- 2024年常州工业职业技术学院单招职业技能测试题库(考试直接用).docx VIP
- C#程序设计基础入门教程(第2版)PPT完整全套教学课件.pptx
- 2022年江苏省南京师大苏州实验学校自主招生物理试卷附答案解析.pdf
- 《哪吒之魔童闹海》开学第一课收心哪吒2主题班会课件课件(图文).pptx VIP
- 小学体育开学第一课.ppt VIP
- 2021年小学数学第一单元《除法》—三年级下册章节复习精编讲义(思维导图+知识讲解+达标训练)北师大版,含解析.pdf VIP
- 党支部“三会一课”台账.docx VIP
- 2024年常州工业职业技术学院单招职业技能测试题库精选答案.docx VIP
文档评论(0)