正文

堆栈的使用心的2007-06-11 11:35:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wfxsky/26654.html

分享到:

请看下面的lea sp,tos这句为什么用-t指令不显示啊,但是执行执行了

stack_seg  segment

   dw 100 dup(?)

   tos label word

stack_seg ends

code segment

main proc far

assume cs:code,ss:stack_seg

start:

mov ax,stack_seg

mov ss,ax

lea sp,tos //就是这句为什么不显示

ret
main endp

code ends

end start

在查了有关资料得出:这个是 cpu 的个保护功能的体现吧. 堆栈是由 SS 和 SP 共同指定的, 要设置完整的堆栈地址, 需要有两条指令, 如果在这两条指令间发生中断, 那么就可能导致堆栈的错误使用, 引发的后果难以预料. 因此, 一般在设置堆栈前, 早期的做法就是采用 cli 指令禁止可屏蔽类中断, 设置完成后再 sti; 后来的 cpu 籍此增加了个保险措施, 就是遇见设置堆栈的指令组时, 让它们一并执行, 中间不允许中断, 行如一条指令, 这样也是为了防止无意中漏了 cli 指令导致不良后果
哈哈哈,学习了,我也验证了,凡是跟在

mov ax,stack_seg

mov ss,ax

后的语句都不显示,和mov ss,ax一起连续执行

阅读(2689) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册