请问各位高手,一个关于汇编debug调试过程弹出窗口提示的问题
时间:2011-12-17
来源:互联网
请问各位高手, 为什么下面的汇编程序,在编译连接之后,使用debug命令进行调试过程发现: 在执行push ax 指令之前,栈内存里6个连续内存单元为0,可是执行push ax 指令之后,却发现 栈内存里的内容,并不是自己所期望的进栈结果,而且无法继续执行 第二次进栈,并且弹出 一个对话框提示: 遇到无效指令,关闭, 忽略。
下面是本人 编写的简单汇编程序:
assume cs:code, ss:stack
stack segment ;数据段存储数据
dw 0, 0, 0; 系统自动分配一段连续栈内存存储这些数据
stack ends
code segment ; 代码段存储代码
start: mov ax, stack
mov ss, ax
mov sp, 6
mov ax, 1234H
mov cx, 3
s0: push ax
add ax, 2
loop s0
mov ax, 4c00H
int 21H
code ends
end start
请问,各位, 哪里出问题了? 谢谢
作者: wenxian8 发布时间: 2011-12-17
你的sp太小,可能在虚拟DOS方式下栈顶部有几个字节B612是标志,不能使用。
改为:
mov sp, 20
这个是我的帖子:
http://topic.csdn.net/u/20111217/11/6bb93e5a-c187-47aa-996b-ea1722e0112b.html?26013
改为:
mov sp, 20
这个是我的帖子:
http://topic.csdn.net/u/20111217/11/6bb93e5a-c187-47aa-996b-ea1722e0112b.html?26013
作者: hztj2005 发布时间: 2011-12-17
sp的值大小是 6个 内存单元,刚好 够 存储 3个字型数据啊, 怎么会太小呢?
作者: wenxian8 发布时间: 2011-12-17
为什么 我把 sp的 值 从 6 更改为 12, 在debug调试过程中,就 没有弹出 提示窗口了? 我只是定义 3个 字型数据,那么占用 6个 连续内存单元啊? 应该是足够了啊
作者: wenxian8 发布时间: 2011-12-17
你用debug观察ss段的数据,会看到栈的顶部有几个字节B612,看来虚拟DOS方式,栈的实际大小比sp要小一点。
作者: hztj2005 发布时间: 2011-12-17
有点明白了, 可是 为什么会 突然出现 这些 字节B612 呢?
作者: wenxian8 发布时间: 2011-12-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28