|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
(1)使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
MOV AX,FFFFH
MOV DS,AX
MOV AX,2200H
MOV SS,AX
MOV SP,0100H
MOV AX,[0] ;AX= C0EAH
ADD AX,[2] ;AX= C0FCH
MOV BX,[4] ;BX= 30F0H
ADD BX,[6] ;BX= 6021H
PUSH AX ;SP= 00FEH ;修改的内存单元的地址是 2200:FE 内容为 C0FCH
PUSH BX ;SP= 00FCH ;修改的内存单元的地址是 2200:FC 内容为 6021H
POP AX ;SP= 00FEH ;AX= 6021H
POP BX ;SP= 0100H ;BX= C0FCH
PUSH [4] ;SP= 00FEH ;修改的内存单元的地址是 2200:FE 内容为 30F0H
PUSH [6] ;SP= 00FCH ;修改的内存单元的地址是 2200:FC 内容为 2F31H
(2)仔细观察下图中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变?
答:在debug使用T等指令引发了中断造成的,中断过程使用当前栈空间存放cpu关键数据,所以,你的栈里就有些不是你操作的数据了。
|
|