当前位置: 代码迷 >> 汇编语言 >> 王爽汇编语言第六章 实验五的疑问,该如何解决
  详细解决方案

王爽汇编语言第六章 实验五的疑问,该如何解决

热度:627   发布时间:2013-02-26 00:00:00.0
王爽汇编语言第六章 实验五的疑问
本帖最后由 leigema 于 2012-10-18 18:53:42 编辑
下面的代码是王爽汇编语言实验五(1)小题的代码,设置了数据段,代码段,栈段

assume cs:code,ds:data,ss:stack
data segment
        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends

stack segment
        dw 0,0101H,0202H,0303H,0404H,0505H,0606H,0707H   ;这里是栈中的初始化内容
stack ends

code segment

start:  mov ax,stack  ;stack中保存的是栈段的段地址,对吧?我调试的时候看到的是0B42
        mov ss,ax  ;为什么一执行这条指令后栈中的内容就变了?
        mov sp,16   
                    
        mov ax,data 
        mov ds,ax

        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]

        mov ax,4c00h
        int 21h
code ends
end start


我把它编译后debug.在debug的时候发现程序刚载入时,用D命令查看栈中的内容是程序代码中的初始内容,
可是一当执行mov ss,ax后栈中的内容就变了呢?
没执行mov ss,ax前我观察的0b42:0段的内容,设置ss的值为0b42后我观察的还是0b42:0 10的内容

------解决方案--------------------------------------------------------
DEBUG需要用栈来保存调试信息的
上面你只要看看就能看出里面的东西就是你正在执行的地址
------解决方案--------------------------------------------------------
引用:
我也发现了,那这样的话,我要用栈 它也要用,那不冲突吗?
引用:
DEBUG需要用栈来保存调试信息的
上面你只要看看就能看出里面的东西就是你正在执行的地址

既然你知道了,只能你自己衡量好了。要不你就换个调试器
  相关解决方案