写完代码,拿去debug调试,发现一个问题。
本帖最后由 Sen哥 于 2013-9-23 19:59 编辑大家帮我一下。。。。程序代码是这样的:其实就是实验三的题目assume cs:sen
sen segment
mov ax,2000h
mov ss,ax
mov sp,0
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
sen ends
end
然后去debug单步执行,执行到mov ss,ax,按T就直接到pop ax,ip的值从0003调到0008,跳过了mov sp,0,为什么debug不显示这一步呢????
还有,明明这么多条pop和push命令为什么debug就执行两次呢
这个是中断机制,因为在cmd里面都是单步执行的任务,你每条指令就是一个任务,你调试的时候,每调试一次就会中断一次,意思是你每次-t后都会中断,我以前也不知道为什么在修改SP的时候不会停,原因就是因为在修改 SS 和 SP的时候不会中断,一步执行2个指令。如果楼主有王爽的书, 你翻到250页12.12会有详细说明。 这是中断机制,单步执行时会把CS:IP入栈,为了设定栈顶地址混乱,设置ss sp不允许分开执行。 学习中,牛啊 新人,来看学习的 学习中啊 啊啊 啊 我也是看了上面的讲解才知道的:sweat: 好像没写start吧 学习学习啊:big a328166443 发表于 2013-9-23 23:12 static/image/common/back.gif
这个是中断机制,因为在cmd里面都是单步执行的任务,你每条指令就是一个任务,你调试的时候,每调试一次就会 ...
懂了 谢谢你啦
页:
[1]