实验任务:学会使用debug
1.使用Debug,将程序段写入内存:
首先对0021:0000~0021:000F的内存赋值
这里我赋的值是 11 12 13 14 15 16 17 18
输入mov ds,as时打错了。。。问题不大,重新输入一次
实验结果:
在内存0021:0000处创建了一个长度为FH的栈结构,对AX赋值后压栈
逐步运行后,观察数据结果并填空
2.观察如下例子,分析
分析为何一开始2000:0~2000:000F所有元素为0,而之后发生改变(如下图)
2000:0~2000:000F的元素发生变化
对于每一项指令进行操作d查看内存元素
我们可以发现,执行mov ss,ax后,并没有改变2000:0~2000:000F的元素,而进一步对ax赋值产生了改变
给ax赋值后压栈前,用d命令观察2000:00内存,都是00,创建栈结构指向这段内存时,有些数据改变了
仔细观察,不难发现,从2000:000F到2000:0000,倒序现实各元素为 01 A3 07 3F 01 08 00 00 20 00 00 00 00 00 00 00,显然存在着CS(07 3F),IP(01 08),AX(20 00)的值因此,我猜测可能与寄存器栈操作时会将一些寄存器变量如地址压入栈中!我在网上查阅了相关资料,发现是t命令实际是引发了单步中断,执行中断例程时,CPU会将一些中断例程使用的的寄存器变量自动压栈到栈中。这是以后学习的内容emm