汇编实验3 编程、编译、连接、跟踪
实验结论
任务1
- 编写汇编源程序t1.asm
进入edit,编写程序 - 编译、连接
进入masm
本题中分步进行编译、连接
编译:
连接 - 运行可执行文件
程序输出:36 修改dl的值
将 line4中dl 的值修改为8
重新编译、连接、运行
输出结果为86,刚好依次是修改后line4,line9的dl的值
将line4的dl改回3,line9的dl改成9
编译连接执行
输出39,可确定
将line4,line9的dl修改成1,6
输出16,可确定输出结果总为先后赋给dl的值
将dl改回初始的3、6然后跟踪
cx值为16,即程序的长度,cs=15dah,ds=15cah,满足(cs)=(ds)+10H的关系
程序段前缀确为cd 20
反汇编得到源代码
然后再单步执行(注意遇到int命令使用p命令)任务2
- 编写源程序
- 编译连接执行
如老师给出的情况相同,必须清空屏幕,才能显示字符 - 在debug下查看
不好意思我疯了...这是什么鬼...
查看一些资料,大概是因为传入常数所以单位无法确定,debug下会报错 修改源代码
将line7的0433h改为0432h, line10 的 0436h改为0439h, 然后重新汇编、连接
惊奇的发现数字变为红色29,私以为[bx]最后一位确定数字
恢复原代码,再将源代码中line7的0433h→0333h, line10 的 0436h→0336h, 然后重新汇编、连接
出现了蓝色的36!!!
个人认为该地址指示与显示相关的内容,第一次修改的最后一位对应输出数字,第二次修改的值代表颜色
实验总结
这次实验的趣味性依然很强,输出是直观能看到的代码效果,能带来对汇编的学习兴趣,但是有些东西自己一个人会想不通,基本得靠参考网上的资料,希望随着实验的深入我能对汇编语言掌握的更好