文档详情

《汇编语言程序设计》实验报告 期末大作业.doc

发布:2018-03-01约1.49万字共22页下载文档
文本预览下载声明
汇编语言程序设计实习 大 作 业 报 告 年 级 2008级 班 级 学 号 姓 名 2010 年 6 月 25 日 实验题目 个人档案管理系统 实验要求 设有一个档案文件DOCU,它包含每个人的姓名、年龄、性别、身高和体重。试编写一个管理程序,接受如下命令: L命令:列出DOCU中所有人的情况,每人一行。 I命令:在DOCU文件最后插入一个人的情况(即一个记录)。 Q命令:退出DOCU的管理程序。 S命令:按指定项的值查询。即用户指定5项中一项,并给出要查的值,由程序负责搜索DOCU文件中具有与给定值相同的项的记录,并显示这些记录。 D命令:删去指定记录。操作与S命令类似。 程序设计说明(用来说明程序的功能、结构。包括:程序名、功能、原理及算法说明、程序及数据结构、主要符号名的说明、程序框图等。) 记录的各项字节长度: 项目 姓名 年龄 性别 身高 体重 长度 10 2 1(f/m) 3 2 程序接收的命令采用小写。记录的文件名为DOCU.txt,与程序在同个目录中。 L命令的结果每22个记录一页,用空格键继续显示。 I命令插入到文件的最后。 S命令提供5个搜索项,搜索结果每22个记录一页,用空格键继续显示。 D命令在扫描的时候把结果记录到另外一个临时文件中,略去符合删除条件的记录。最后把原文件删除,把临时文件命名为原文件名。 程序把常用的、代码较短的小功能程序段定义成宏。即减少了代码输入量,避免重复输入时出错,也使程序结构更清晰,代码更紧凑,提高代码复用率。程序中宏名全部用大写表示。 宏名 参数 功能 MOVE_CURSOR row为行坐标,col为列坐标 移动光标 CLEAR 无 清屏 CRLF 无 打印回车换行 PRINT msg为以‘$’结尾字符串 打印字符串 PUTCHAR char为字符 打印字符 PRINT_ITEM addrs为字符串首地址,count1为字符串的长度,count2为随后分隔用的空格数 打印记录中的某一项 GETIN addrs为接收输入的地址,count为字符数 输入记录中的某一项 DEL_FILE fname为文件名 删除文件 RENAME_FILE fname为新名称,fname2为旧名称 重命名文件 程序按照功能组织成以下子程序。子程序功能相对比较独立,这里为了提高效率不对寄存器进行入栈保护。 子程序名 功能 备注 get_record 输入一个记录 print_record 打印一个记录 main 主程序,用于接收、处理命令。 cmpstr 比较字符串 从recd+pos开始,长度为len list_all 打印所有记录 22行一屏,用空格键继续 list_by 打印符合要求的记录 delete_by 删除符合要求的记录 insert 插入新记录 search 搜索记录,获取参数后,调用list_by delete 删除记录,获取参数后,调用delete_by open_file 打开文件 入口参数dx=文件名偏移 出口参数ax=文件句柄 close_file 关闭文件 入口参数bx=文件句柄 命名规则: 程序主体小写。 子程序名一律小写。 宏名一律大学 标号为了防止命名污染,添加 _XX_ 前缀,其中XX为该子程序或宏的名称缩写。 常量用大写,以下划线 _ 开头。 变量命名为name时编译发生错误,只好改为name1 程序流程图 delete_by子程序 list_by子程序 程序调试说明(包括:调试情况,如上机时遇到的问题及解决办法,观察到的寄存器、存储器的内容或状态及其分析.对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会,以及诸如调试日期、文件存放位置等需要记录的信息。) 程序先在debug下简单调试,根据运行的结果推断后,再定位到程序的相应位置进行检查。检查不出再使用Turbo debugger进行单步调试。Turbo debugger无法追踪到宏体内,如有必要可以手工展开代码。本次实验较为顺利,加上定义的宏都比较简单,没有出现问题。 在debug下NULL(ASCII为0)显示为一个方格,不够美观。在文本文档中NULL复制时会被替换为空格,在notepad++中则无法复制,所以程序把字符串的空白部分设置为空格。 程序的各个功能相对独立,所以分开进行调试,降低难度。 程序在调试时发现字符串输出由于换行不当的问题会影响输入美观,相应进行调整。 在Turbo Debugger下能方便地查看寄存器和变量值 四、实验结果与结论(经调试正确的程序的运行结果) 程序主界面
显示全部
相似文档