实验报告:实验二
实验结论
1.使用debug,将书上程序段写入内存逐条执行并填空。
先用e命令修改0021:0~0021:7的连续8个字节并用d查看。
随后用a命令输出书上的汇编指令。(如下图) 根据实验要求第一部改为mov ax,0021
用r查看初值,然后用t命令逐条执行并观察ax,bx,ss,sp值的变化。
从下图开始,为书上所需填空的步骤。
根据每部的ax,bx,ss,sp的值在书上填空(如下图)字丑见谅。。
实验结果经验证和理论相符。
2.观察书上p75图,分析为啥2000:0~2000:f的内容会发生改变。
输入书上内容并用d查看2000:0内容
然后用t逐条执行,每步后都用d命令查看内存单元的值。
前三段汇编指令的功能是初始化一个栈,前两部确定了栈段地址为2000H(用ax传给ss),而第三部mov sp,10则确定了栈顶的地址为20010H,即初始化了栈顶。前三步构建了一个栈顶为20010H,栈底为20000H的一个栈。
关于内存内容改变的猜想:栈在构建后后几位的内存空间的值在不断变化,除了存入必要数据外还有一些其他的机器码,所以认为,在执行指令存入数据的同时,也存入了其他的数据,有可能是cs ip或者ss sp的当前值,或者是下一步即将执行的机器码?
实验总结
通过本次试验,我能更加熟练的运用汇编debug工具中的各项指令,对于栈的内存空间的排布存储有力深的理解,对于栈的特点先入后出的原则也是牢记于心 ,对于第二个实验也许是0806采用的是小端法所以最后存入的数据才是66 33吧?但是对于栈中的具体细节操作其实自己并没有非常清晰的认识,所以无法精确地解答内容发生改变的具体原因,希望通过后面的学习,自己可以解决疑惑,学习到更多知识。