mrorangerabbit

导航

汇编实验2(又是作业emm)

实验任务:学会使用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
 

 

posted on 2018-10-27 14:31  mrorangerabbit  阅读(149)  评论(1编辑  收藏  举报