当前位置: 代码迷 >> 汇编语言 >> 内存栈有关问题
  详细解决方案

内存栈有关问题

热度:271   发布时间:2016-05-02 04:56:20.0
内存栈问题
在汇编语言中碰到一个栈的问题。 程序运行时首先被装入内存,然后由一个进程启动并设置cs:ip 并启动一个进行来运行这个代码块。 在执行汇编指定时时,为什么汇编指定总是把数据写入栈,难道有些指定就带有栈操作? 但翻阅相关的书籍并没有发现相关说明

下面的代码我是想测试指定对栈的操作问题,可我申请的一块栈总是被其他什么东西给使用了。。但push和pop 的进栈和出栈还是正常的。
代码
assume cs:codesg
;
stack segment
 dw 8 dup (0)
stack ends

codesg segment
  start:mov ax,stack
mov ss,ax
;这里用d 命令查看stack内存处的数据还全是00000000000000
mov ax,1
;这个代码执行之后就不在是0000000000000了,而是其他的一些数字在里面00e0d1030....之类的,说明执行了mov sp,16进行了相关的栈操作。
mov sp,16
  
;后面的入栈和出栈数据内存处的数据正常
push ax
        push ax
        pop ax
        pop ax
        mov ax,4c00h
        int 21h
codesg ends
end start


------解决方案--------------------
如果你是使用DEBUG的话,DEBUG是会把调试信息保存在栈里面的
------解决方案--------------------
引用:
如果你是使用DEBUG的话,DEBUG是会把调试信息保存在栈里面的

这样的代码用Bochs调试比较好
  相关解决方案