首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

王爽汇编语言实验2里的图3.19有关问题疑惑

2013-08-06 
王爽汇编语言实验2里的图3.19问题疑惑看王爽的汇编语言(第二版)里, 第三章实验2里的图3.19mov ax,2000hmov

王爽汇编语言实验2里的图3.19问题疑惑
看王爽的汇编语言(第二版)里, 第三章实验2里的图3.19
mov ax,2000h
mov ss,ax
mov sp,10
mov ax,3123
push ax
mov ax,3366
push ax

t单步跟踪
执行到mov ax,3123指令的时候,栈2000:000f 到 2000:0007的内容发生了改变,
解释是单步调试的时候产生中断,需要保存标志寄存器、cs和ip的值
有一点疑惑的是,三个寄存器保存在栈中2000:000f到2000:0009中,
2000:0007到200:0008中的值也改变了,这存的是什么呢? 汇编语言 栈 调试 王爽
[解决办法]
这个,其实也简单,既然是 debug 的 t 命令,就进去看下呗:
1. debug yourexe.exe 载入你的待调试程序
2. t 命令单步一下,主要是让 debug 设置单步中断
3. d 0:4 l 4 查看单步中断入口
4. u 3. 得到的地址比如显示 BB 13 69 05 的话,这里就是 u 0569:13BB
5. 我的 xp/sp3 的 debug 显示

0569:13BB 55            PUSH    BP
0569:13BC 8BEC          MOV     BP,SP
0569:13BE 50            PUSH    AX
0569:13BF 2E            CS:
0569:13C0 F606495601    TEST    BYTE PTR [5649],01

起码有两个 push 指令嘛,分别将 bp 和 ax 压栈了;后面,debug 的单步中断应该会设置使用自己的堆栈,临结束再恢复到用户的。

热点排行