最后更新于:2018-11-28
本文创建于:2018-11-27
错误产生
最近学习 8086 16位汇编, 用 masm 5.0 编译 a.sm 源代码时遇到了 masm5.0 error 2000: stack overflow
错误。
分析
- 从弹出的错误提示看,似乎是栈溢出错误。仔细分析源代码,再将代码与书上的代码做比较,还是没有发现错误。
- 修改栈空间分配的相关代码,没有解决任何问题。
- 重新下载masm5.0没有解决问题。
- 使用Windows XP, Windows 7 32位,也没解决问题。
错误原因与解决方案
- 实际错误原因很简单,因为把
div
指令错误的写为了divs
,而这条命令又包含在一个divs宏
中,结果就不停的递归了,所以会出现这里的"Stack Overflow"
错误。 - 解决方案:
divs
改为div
即可。
启示
应尽快过渡到32位汇编,使用 Visual Studio 或其他高级一些的 IDE,这样出现错误更好排查一些,像今天这样花一下午时间而错误原因仅仅因为多了个字母,真是浪费时间了。
最后附上部分源代码供大家参考
共3