汇编语言程序设计编程源代码操作性实验Debug Emu8086 MASM的使用|汇编语言实验指导|汇编程序|汇编语言程序设计指令|汇编调试器的使用|
实验内容:
1. 实验/作业题目:
Debug、Emu8086、MASM的使用
2.实验/作业课时:2课时
3.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能):
试验环境:Windos 2000、Debug程序、Emu8086程序、MASM 6.15程序
实验内容的描述:汇编调试器的使用
完成实验要求的知识或技能:汇编调试器的使用
4.程序结构(程序中的函数调用关系图)
无函数调用,只有主过程
5.算法描述、流程图或操作步骤:
无算法描述
流程图:若图片无法显示请联系站长QQ752018766
习题2.36:
习题2.37:
操作步骤:
Debug:
1:使用-e命令写入数据
2:使用-a命令写入代码,跳转语句先设定为原地跳转,记下行号,以便以后更改
3:全部代码输入完毕后,修正代码中的所有跳转语句
4:使用-r命令检查CS和IP寄存器的值,将其修正到正确的函数入口
5:使用-t命令单步执行程序或使用-g命令直接运行
Emu8086:
1:输入程序代码
2:运行或单步运行
MASM 6.15:
1:建立源代码的纯文本文件
2:使用命令行方式,Make32和Make16命令建立可执行文件
3:运行(没办法单步运行)
6.实验数据和实验结果(用屏幕图形表示,可另加附页):
习题2.36输入数据: 第一次:u
第二次:7
习题2.36输出结果图:若图片无法显示请联系站长QQ752018766
习题2.37输入数据:ABCDabcd1234?!@
习题2.37输出结果图:
7.改进建议:
我的程序和老师上课给的有几点不同:一是在建立输入缓冲区时,将全部的内存单元初始化为’$’,免得后面还要专门在字符串后面加这个结束符;二是在字符串的检索过程当中考虑了非字母的字符的问题,并加入了跳出机制,不至于每一次输入即时输入几个字符都要检索缓冲区内的所有内容。算是改进吧。
Debug,我觉得还是比较难操作的,主要是它不支持软指令和标识符,输入源程序特别麻烦,相对的Emu8086简单的多。在用Debug进行调试的过程当中,我觉得罪应该注意的是要记得在运行前修正CS和IP寄存器的值,我有因为疏忽出现了程序狂飙不受控制的情况,今后我会注意的。至于Emu8086,好像不支持.exit的关闭进程的方式,我都改为中断关闭的方式了,只是有点搞不清.exit的方式应该在什么情况下使用。MASM我主要是试着改成了32位汇编程序,因为用了很长时间比较熟悉了,没出现什么大问题,但由于PC中断对32位不是很支持(比如输入字符串时要从DX寄存器中传递字符串缓冲区的EA地址,但32位汇编的EA是32位数据),所以我使用的是Windows API的控制台操作来代替中断操作。
这次运行的程序,结果和过程上没有太大的问题,但是在输入输出提示上好像还不那么完善,今后的上机中我会注意的。
评分标准 学 风--报告格式规范,文字清晰 观察能力--正确描述和理解需要操作的问题
操作能力--正确输入程序,熟悉编程环境 调试能力--熟练使用调试功能解决程序错误
附源代码