assembly实验二

1、使用Debug将程序段写入内存,逐条执行。

为了便于验证实验结果,在使用 a 命令输入指令调试前,先使用 e 命令将内存单元 0021:0 ~0021:7 连续 8个字节数据修改为 :

30H, 31H, 32H, 33H,34H,35H,36H,37H

操作如下图:

接着使用a命令输入树上74页试验任务一的程序段:

使用t命令逐条执行:

(注意上图圈出的两条语句中间本应还有一句(mov sp,0100),可因中断机制的存在debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行(无论下一条语句是不是执行对sp的改写))

跟踪执行过程中几个寄存器的内容,如下图所示:

手写内容与debug单步调试中并未发现不同之处。

2、观察书75页中的实验过程,分析2000:0~2000:f中内容发生改变的原因。

首先使用 a 命令输入书中的 7 行指令,再使用 e 命令修改 2000:0~2000:f的值,并在修改后对其进行查看。

操作如下图:

  

前三行指令是给指向栈顶元素的SS:SP赋值,SS=2000H,SP=0010H。

初始时栈顶和栈底都被e命令赋值为0。

接着单步调试每一行汇编指令。且每一条指令单步调试后,都使用 d 命令查看2000:0~2000:f 的值。

观察每一条指令执行后相关寄存器值的变化,及 2000:0~2000:f 单元值的变化。

操作如下图:

我眼睛都要看瞎了只发现了2000:0010存放的是IP的地址,2000:0012存放的是cs的地址。

别的就不知道了.......

而且什么猜想也没有.........

求大佬指教.......

猜你喜欢

转载自www.cnblogs.com/wlxnw/p/9863230.html