王爽汇编语言第六章 实验五的疑问

时间:2023-01-14 01:15:55
下面的代码是王爽汇编语言实验五(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的内容
王爽汇编语言第六章 实验五的疑问

7 个解决方案

#1


DEBUG需要用栈来保存调试信息的
上面你只要看看就能看出里面的东西就是你正在执行的地址

#2


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

#3


你把stack段寄存器改了,内容能不变吗?

#4


我只是把 stack段地址告诉了ss寄存器,为什么会变呢?
登记一下怎么会变呢?
引用 3 楼  的回复:
你把stack段寄存器改了,内容能不变吗?

#5


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

既然你知道了,只能你自己衡量好了。要不你就换个调试器

#6


地址变了,内容能不变吗!

#7


地址木有变啊 亲,只是登记了一下
引用 6 楼  的回复:
地址变了,内容能不变吗!

#1


DEBUG需要用栈来保存调试信息的
上面你只要看看就能看出里面的东西就是你正在执行的地址

#2


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

#3


你把stack段寄存器改了,内容能不变吗?

#4


我只是把 stack段地址告诉了ss寄存器,为什么会变呢?
登记一下怎么会变呢?
引用 3 楼  的回复:
你把stack段寄存器改了,内容能不变吗?

#5


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

既然你知道了,只能你自己衡量好了。要不你就换个调试器

#6


地址变了,内容能不变吗!

#7


地址木有变啊 亲,只是登记了一下
引用 6 楼  的回复:
地址变了,内容能不变吗!