1,使用debug,将下面程序福安写入内存,逐条执行,感觉指令执行后的实际运行情况填空。

mov ax,ffff

mov ds,ax

mov ax,2200

mov ss,ax

mov sp,0100

mov ax,[0]

add ax,[2]

mov bx,[4]

add bx,[6]

push ax

push bx

pop ax

pop bx

push [4]

push [6]

逐条运行

mov ax,[0]       ;ax=2200

add ax,[2]        ;ax=c0ea

mov bx,[4]       ;bx=0000

add bx,[6]        ;bx=30f0

push ax           ;sp=0100;修改内存单元的地址是2200:00fe内容为 c0fc

push bx           ;sp=00fe;修改内存单元的地址是2200:00fc内容为 60 21

pop ax             ;sp=00fc;ax=6021

pop bx             ;sp=0100;bx=c0fc

push [4]           ;sp=0100;修改内存单元的地址是2200:00fe内容为f0 30

push [6]           ;sp=00fe;修改内存单元的地址是2200:00fc内容为31 2f

2.仔细观察3.19的实验过程,然后分析:为什么2000:0~2000:f中的内容会改变

首先输入代码

运行一次,并查看

与第一次并没有变化,但下一次执行t,跳过了mov sp,10 这条指令

原因应该在这里,现阶段我无法解释。