高山一片云 发表于 2012-12-18 17:55:35

是电脑坏了还是怎么的Debug下不能执行命令!!!!!

本帖最后由 高山一片云 于 2012-12-18 18:02 编辑

在XP的带命令提示符下执行Debug命令,在内存里写了几行代码,用T命令执行,但是执行到mov ax,2266H 时cmd窗口就突然报错退出了,试了几次都不行。

代码如下:
mov ax,1000
mov ss,ax
mov sp,2
mov ax,2266
push ax



权限不够贴不了图,不知道有没有同仁们也遇到过类似情况?还是上述代码有逻辑错误?




高山一片云 发表于 2012-12-18 18:12:56

纠结了好久,现在明白了,是cmd命令提示行的问题,我用emu8086运行没有问题。

高山一片云 发表于 2012-12-18 18:32:18

本帖最后由 高山一片云 于 2012-12-18 18:37 编辑

论坛有位大牛的回答,似乎也很有道理。

T命令是单步中断,中断过程中,会使用当前栈空间存放当前cpu运行现场的cs,ip和标志寄存器的值,以待从中断返回后能够正确执行以前的程序。当你的栈空间过小,中断过程入栈数据的时候,越界了,由于是在windows的保护模式下,所以,windows认为这个操作是不合法的,危险的。所以,就给你毙掉了。


你这个不是问题,而是mov sp,2 的问题。改成mov sp,10就没问题了。


mov ax,2266
复制代码


原来论坛有位兄弟和我碰到同样的问题,链接:http://bbs.fishc.com/forum.php?mod=viewthread&tid=20070



lukelqz 发表于 2012-12-18 18:45:50

高山一片云 发表于 2012-12-18 18:32 static/image/common/back.gif
论坛有位大牛的回答,似乎也很有道理。

T命令是单步中断,中断过程中,会使用当前栈空间存放当前cpu运行 ...

{:5_97:}帅哥你是在说我么 你的问题就是t命令造成的哦。 t命令有个中断过程,有入栈的过程,你sp设的太小了。t命令运行就要出问题咯

落叶无痕 发表于 2013-4-24 13:36:17

来看看呵呵

monk-half 发表于 2013-4-24 14:04:36

嗯 长知识了
页: [1]
查看完整版本: 是电脑坏了还是怎么的Debug下不能执行命令!!!!!