(1)使用 Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行
情况填空。
mov ax, ffff
mov ds, ax
mov ax, 2200
mov ss, ax
mov sp, 0100
mov ax,[0] ;ax=c0ea
add ax,[2] ;ax=c0fc
mov bx,[4] ;bx=30f0
add bx,[6] ;bx=6021
push ax
;sp=00fe ;修改的内存单元的地址是:220fe,220ff 内容为:c0fc
push bx
;sp=00fc ;修改的内存单元的地址是:220fc,220fd 内容为:6021
pop ax ;sp=00fe ;ax=6021
pop bx ;sp=0100 ;bx=c0fc
push [4]
;sp=00fe ;修改的内存单元的地址是:220fe,220ff 内容为:30f0
push [6]
;sp=00fc ;修改的内存单元的地址是:220fc,220fd 内容为:2f31
(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发
生改变?
test1 a命令操作时,仅输入前两行命令,其余不变,问题未复现
test2 a命令操作时,仅输入前三行命令,其余不变,问题复现,且发现CS、IP内容被顶入栈段
说明此问题与栈的初始化有关,联想到“中断机制”,有可能CS、IP内容被顶入栈段,即为中断机制的一部分过程。