练习一:

创建aaa.asm并输入指定代码段:

汇编连接:

debug运行并用R命令查看:

反汇编:

用G命令运行到mov ax,4c00之前:

查看内存内容:

①程序返回前,data段的段地址为075A

②程序返回前,CS=076C,SS=0769,DS=075A

③程序加载后,code段的段地址为X,则data段的段地址为X-2,start段的段地址为X-1

 练习二:

 新建bbb.asm:

汇编连接:

用debug调试并用R查看:

用G运行:

用D查看内存段:

①程序返回前,data段地址内存为075A

②CS=076C,SS=0769,DS=075A

③程序加载后,设code段地址为X,data段地址为X-2,stack段地址为X-1

练习三:

新建ccc.asm:

汇编连接

用debug查看:

①程序返回前,data段地址内存为075A

②CS=076C,SS=0769,DS=075A

③程序加载后,设code段地址为X,data段地址为X-2,stack段地址为X-1

练习四:

分别将三个代码中最后一条伪指令end start改为end,分别进行调试:

只有最后一个可以正确执行。

练习三将代码段放在了栈段和数据段的前面,而前两个练习都是将代码段放在了最后一个,而end start是根据start的指令来执行的,第三个将代码段放在首位,所以可以执行。

练习五:

编写code代码,完整代码如下:

汇编连接,用debug调试:

R命令查看U命令反汇编G命令执行:

D命令查看:

练习六:

编写程序如下:

、汇编连接:

 

 运行后结果为

实验总结:

经过这次实验,能够熟练的应用debug中的一些基本指令,但是对于练习六中的栈操作还是不够熟悉,对于栈段代码段和数据段有了更清晰的认识。