实验二第一个步骤就是先把以0021:0开始地方连续修改8个字节的数据,具体代码如图,同时我也调用了d命令进行查看。之后我开始输入书上的代码
,我是直接时候用a命令在CS:IP的地址上,之后我开始进行逐条的执行,执行之后我的第一部分如下图,
,这里有一步时在执行ss之后直接再执行一步。下面开始
把[0],[2]他们里面的放入ax中,而ax的结果如图所示,之后进行一个入栈的操作,现在是内存修改的地址为ax*10+sp也就是22100的内存地址发生了改变,将ax的数据前两个也就是AH先进入栈底,然后AL进入也就是底部是64,再上一个字节是62,剩下的部分就是正常的进栈出栈的过程。
第二题,
,
,这是第二题部分的代码截图可以看到,在进行栈操作之后2000:0中的数值就已经发生了变化,我对mov sp,10的理解就是在位置为20010底位置进行栈的开始,至于初始时候的栈顶和栈底是在同一位置。
最后体会就是感觉对栈这一部分的理解还不够深刻,有些代码造成的前因后果都还不够清楚,但是能大概上明白,需要自己另外花时间去让这一部分内容变得更加熟练。
原文:https://www.cnblogs.com/ameame/p/9867134.html