练习一:
创建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中的一些基本指令,但是对于练习六中的栈操作还是不够熟悉,对于栈段代码段和数据段有了更清晰的认识。