在学习王爽的《汇编语言第三版》时,有个示例要求利用栈将程序中的数据逆序存放;无论是作者的例子,还是我稍微修改后的程序运行结果都没有问题,但是不知道为什么栈内的内容总是和预期的不一致,请大家帮我解答一下。
作者的例子如下:
我觉得既然只是逆序存放 8 个字型数据,那就用 dw 定义 8 个字型数据就行了,无需 16 个;然后我就重新只定义了 8 个字型数据,同时将初始的栈顶偏移地址改为了 20H 。
然后用 DEBUG 进行调试,跳转到第一次循环结束的地方,入栈的结果 076A:10 1F
是正常的,但是原数据的后四个
076A:8 F
被改写了。
再次跳转到程序结尾部分,逆序存放的结果 076A:0 F
是正确的,但是栈的后四位 076A:18 1F
又被改写了。
用 DEBUG 调试了一下作者的示例程序,发现也存在这样的情况,不仅栈的后四位 076A:28 2F
被改写了,就连没有使用的 076A:1A 1F
也被改写了。究竟是什么原因导致这些地方总是被改写了呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.