汇编实验 三 编程、编译、连接、跟踪

 

任务一

  DOSBOX环境下用edit命令编写汇编源程序t1.asm,如下图:

保存后,输入masm,使用该编译工具按下图步骤进行编译连接:

显示no stack segment,即可输入源程序名字,执行。

(1)运行程序,输出结果如下:

(2)用debug对生成的可执行文件t1.exe进行调试:

1、使用r命令查看,观察ds和cs的值,看是否满足(cs)=(ds)+10H

可以看出满足(cs)=(ds)+10。

2、psp程序段前缀的头两个字节是CD 20,用debug查看psp的内容,

发现psp程序段前缀头两个字节确实是CD 20。

3、用u命令对t1.exe进行反汇编,观察得到的源代码:

4、使用t命令和p命令单步调试,观察结果,注意遇到int命令时用p命令:

 

(3)将line4和line9中寄存器的值分别改为0~9中任何一个数字,重新汇编、连接、运行,观察结果变化。

这里我把line4的dl改为5,line9的dl改为9,编译连接步骤如(1),执行结果如下:

 

 

任务二

编写汇编源程序t2.asm如下:

 

(1)对t2.asm进行汇编、连接后,得到可执行文件t2.exe。运行t2.exe,观察结果是否再左上方的到红色数值36。

如直接运行没有左上方没有输出结果,输入cls清屏后再运行,得到结果如下:

(2)重新打开t2.exe,将源代码中line7的0433h改为0432h,line10的0436h改为0439h,重新汇编、连接、运行,使用cls清屏后观察运行结果:

 看到结果为红色数值29。

(3)重新打开t2.exe,将源代码中line7的0433h改为0333h,line10的0436h改为0336h,重新汇编、连接、运行,使用cls清屏后观察运行结果:

 

得到蓝色数值36。

总结与体会

 首先,在本次实验,我主要学会了对汇编源程序的编译、连接、与执行。这些都是书上有的,如果认真看书,就会很简单了。

我去网上查了一下t命令与p命令的区别,是这样解释的:单步执行命令p与单步跟踪命令t的区别在于对待call类命令的方式上。对于t命令,当碰到“call p1”命令时,单步跟踪命令t会进入该进程,再一步步地执行;而单步执行命令p会按照一般程序执行,而不会进入子程序中。对此我不是很明白。

 

从任务一,我们可以看到输出的结果为line4和line9中dl的值。

对比任务二中(2)和(3), mov [bx],043xh中的04决定输出的颜色,3x决定形状,其中x是十进制数字。

posted @ 2018-11-16 17:47  桬貊  阅读(430)  评论(0编辑  收藏  举报