- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编程序 读入一个文本文件并以DEBUG中的D命令格式显示
PAGE
目 录
TOC \o 1-2 \h \z \u HYPERLINK \l _Toc32046 1. 题目 PAGEREF _Toc32046 1
HYPERLINK \l _Toc26277 2. 程序总体设计方案、思路 PAGEREF _Toc26277 1
HYPERLINK \l _Toc3452 3. 程序设计框图 PAGEREF _Toc3452 3
HYPERLINK \l _Toc9653 4. 源程序清单 PAGEREF _Toc9653 11
HYPERLINK \l _Toc21372 5. 程序调试结果及分析 PAGEREF _Toc21372 18
HYPERLINK \l _Toc20675 6. 设计总结 PAGEREF _Toc20675 21
HYPERLINK \l _Toc18252 6.1问题 PAGEREF _Toc18252 21
HYPERLINK \l _Toc20994 6.2心得 PAGEREF _Toc20994 21
湖南工程学院课程设计报告
PAGE 19
题目
读入一个文本文件并以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,说明
您可能关注的文档
最近下载
- 2024年广东省深圳市八年级下学期数学期中试卷【范围:1-4章】及答案.pdf VIP
- 中考人教版英语教材同步复习题型2 第3节 阅读理解.ppt
- 脑电图检验技术在神经疾病中的应用.pptx VIP
- 《电气一次部分》课程设计报告---发电厂设计.docx VIP
- 颅脑损伤的重症监护.ppt VIP
- 《CAR-T细胞治疗技术》课件.ppt VIP
- 第二单元第二课精彩瞬间第二课时课件2024-2025学年人教版七年级美术下册.pptx VIP
- HG∕T 21515-2014 常压人孔(可复制版).pdf
- 四年级道德与法治下册第三单元大单元教学设计 .pdf
- 2025年广东省广州市越秀区白云街道招聘社区工作者考前自测高频考点模拟试题精选.docx
文档评论(0)