汇编实验二
实验任务:
一、使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空
其中
① 在使用 a 命令输入指令调试前,使用 e 命令将内存单元 0021:0 ~0021:7 连续 8
个字节数据修改为 30H, 31H, 32H, 33H,34H,35H,36H,37H
② 将 P74 实验任务(1)中第1 行的 mov ax, ffff → 改为 mov ax, 0021
首先用e命令首先修改好对应内存,查看修改好的内存值后进行汇编命令输入
下面用t命令分步执行
将结果填写在书本上,如图:
实验结果与理论分析一致
二、按图3.19中执行实验,分析为什么2000:0~2000:f的内容会发生改变
首先按题目要求输入a指令
然后用t命令分布执行,每次执行后用d命令查看内存中改变
前三行汇编指令的功能是用ax设置栈段地址设为SS=2000H,和栈顶的偏移地址SP=0010H
mov sp,10即是初始化栈顶
栈顶2000:0010,栈底2000:000F,此栈为空栈
内存改变猜想:栈中不光存入了数据,后面也许读入了关于SS,IP的相关数据,最后栈清空时栈底栈顶重合这些数据也随之消失
实验总结:
通过实验二的学习,从汇编指令中感受到了栈中内存地址的变化方式,以及栈的先进先出的特性。而这些在编程语言中只能得到结果,具体的指针操作过程还是不够清晰。
同时对实验2的过程产生的猜想会让我在接下来的学习过程中更加热衷于解出答案。
再者,这里提供了一个不同于编程语言要设第三者变量的交换数据方法,这里用栈的特性实现了直接对两者数据的交换,听说这只是汇编中不设第三个变量的三种方法其一,很期待接下来汇编给我的惊喜!