【已加代码】求教谢谢第六章程序6.3
本帖最后由 同步人生 于 2017-9-1 11:27 编辑assume cs:meng
meng segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cdah,0987h
dw 0,0,0,0,0,0,0,0
w: mov ax,cs
mov ss,ax
mov sp,32
mov bx,0
mov cx,8
s: push cs:
add bx,2
loop s
mov bx,0
mov cx,8
m: pop cs:
add bx,2
loop m
mov ax,4c00h
int 21h
meng ends
end w
如何继续入栈,打错字了!!!应该是如果继续入栈 如何继续入栈,打错字了!!!应该是如果继续入栈 这个应该还是栈中的初始数据吧,你栈还没入完吧,感觉还要执行2次才真正入完栈了 是的,还有两步。可到这里的时候。栈里的这两个数据变了。你没看到吗。如果继续的话也就出错了 贴一下你的完整代码才好分析啊 谁来帮忙分析下
栈段不要和代码段放在一起。
前一段调试程序在时候发现,系统会把代码段的地址,IP,还有一个估计是状态字放到栈里面。在网上也没有找到原因。
单步执行的时候产生了内中断,内中断在执行过程串,要将标志位以及CS:IP存入栈中, 所以如果栈空间不足,就会出现出栈的数据与自己想象中的不同这一现象,在这样的情况下最后出栈的数据分别为 ip,cs 以及标志位。 如何解决。 3-3 发表于 2017-9-6 09:09
单步执行的时候产生了内中断,内中断在执行过程串,要将标志位以及CS:IP存入栈中, 所以如果栈空间不足, ...
谢谢,这种如何解决 设置一个大的栈空间就可以了,比如你要用8个字节的栈空间,就把它变成16个字节的盏空间就好了。当然,扩大多少由你自己决定,现在的硬件条件决定了栈空间的设置不需要那么精确哦。 3-3 发表于 2017-9-6 09:09
单步执行的时候产生了内中断,内中断在执行过程串,要将标志位以及CS:IP存入栈中, 所以如果栈空间不足, ...
如何解决。是增加栈空间吗?如何加。。。 以你的代码为例。
assume cs:meng
meng segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cdah,0987h
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
w: mov ax,cs
mov ss,ax
mov sp,48
……
页:
[1]