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 这条指令
原因应该在这里,现阶段我无法解释。