- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编程序读入一个文本文件并以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命令格式的要求,每个非打印字符在
您可能关注的文档
最近下载
- SYT 5547-2000螺杆钻具使用、维修和管理.pdf
- 第三方产品节能环保ccc证书---服务器.docx VIP
- 一种连续酶解制备蛋白肽的系统及工艺.pdf VIP
- (高清版)B-T 40815.2-2021 电气和电子设备机械结构 符合英制系列和公制系列机柜的热管理 第2部分:强迫风冷的确定方法.pdf VIP
- 2025幼儿园园级家委会ppt全新 .pdf VIP
- PEP人教版六年级下册英语全册导学案.pdf VIP
- 鲁科版六年级上生物思维导图.pptx
- 电商运营方案电商运营方案.pptx VIP
- 计数型MSA测量系统分析报告(模板).xls VIP
- 发展低空经济课件.pptx VIP
文档评论(0)