汇编实验五--子程序设计.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编实验五--子程序设计

福建农林大学金山学院实验报告 系: 专业: 计算机科学与技术 年级: 08 姓名: 学号: 实验课程: 汇编语言 实验室号:_______ 实验设备号: 实验时间: 指导教师签字: 成绩: 实验五 子程序设计 1.实验目的和要求 1、学习子程序的编写,主子程序的调用 2、不同模块间程序的调用和调试 2.实验环境 实验的硬件环境是: IBM—PC机及其兼容机 实验的软件环境是: 操作系统:DOS 2.0以上;调试程序:DEBUG.COM;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。 3.实验内容及实验数据记录 1、数据段中的3个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,观察IP的变化 DATA SEGMENT MAG DB ‘ABC’ DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV SI, 0 MOV CX, 3 LL: MOV DL, MAG[SI] CALL MADD INC SI LOOP LL MOV AH, 4CH INT 21H MADD PROC MOV AH, 02H INT 21H RET MADD ENDP CODE ENDS END START 2、阅读S31.ASM和S32.ASM两个模块中的程序,并分别汇编,然后连接成一个可执行文件S31.EXE。 具体步骤如下: MASM S31.ASM(分别汇编) MASM S32.ASM LINK S31 S32 (将两个文件连接成为一个文件名为S31) S31.EXE (运行) 3、编程:利用主程序调用子程序,比较BUF1和BUF2缓冲区中不相等的字符,并将不相等的字符显示出来。(也可以将找到的不相等字符逐个显示,用INT 21H的02功能调用) 4、编程:子程序搜索指定字符缓冲区中是否有n,如果有用y替代。调用子程序将BUF1,BUF2,BUF3中的n全部用y替代 4.算法描述及实验步骤 1-1)文本编辑程序保存V1.asm,编译并连接后debug调试V1.exe。跟踪如下 u反汇编观察CALL指令所在程序段偏移量为000F而且Call到哪显而易见是0019即Mov AH,02与源程序一致而RET指令偏移量为001D但从中我们并不能得知其具体执行过程。 1-2)t单步跟踪,图为执行CALL指令前各个寄存器的状态及查看SS:IP(d0769:0000)即栈顶内容为零。BP始终都为0实际上直到目前都没用到该堆栈。 1-3)继续单步执行,此时IP指向下一条指令CALL 0019。即执行该指令,结果如下可看到SP变为了FFFE 可知执行该指令的同时堆栈处于忙碌的变更中。之后IP直接指向CALL 所指0019。 d0769:fffe查看栈顶内容如下高向低读为0012 由之前的反汇编得知0012正是INC SI指令的偏移量,而该指令位于Call指令的下一条。 1-4)由此我们推断RET指令的作用就是弹出栈顶内容至IP来使得程序接着运行执行CALL指令后的程序。同样T单步执行观察如下 很明显执行RET后IP指向了0012。SP又指向了栈底。得以证实了CALL调用子程序是通过堆栈保护了现场进入子程序,之后再通过RET恢复到了原状态 2-1)单独阅读两个程序模块似乎毫无瓜葛,只知道S32.ASM模块中是实现的是二进制数转化为十六进制数并在显示器上显示的功能。S31.ASM实现的是通过子程序TRAN的调用完成对主程序着中获取的两位非压缩BCD数的二进制转化。按题目要求分别会变S31.asm和S32.asm如下 2-2)分别编辑程序存为S31.asm和S32.asm文件。进入masm目录。汇编连接如下均正常通过。 2-3)运行程序S31.exe结果如下等待输入两位字符:

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档