下面的代码是王爽汇编语言实验五(1)小题的代码,设置了数据段,代码段,栈段
- Assembly code
assume cs:code,ds:data,ss:stackdata segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segment dw 0,0101H,0202H,0303H,0404H,0505H,0606H,0707H ;这里是栈中的初始化内容stack endscode segmentstart: 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 21hcode endsend start
我把它编译后debug.在debug的时候发现程序刚载入时,用D命令查看栈中的内容是程序代码中的初始内容,
可是一当执行mov ss,ax后栈中的内容就变了呢?
没执行mov ss,ax前我观察的0b42:0段的内容,设置ss的值为0b42后我观察的还是0b42:0 10的内容
------解决方案--------------------------------------------------------
DEBUG需要用栈来保存调试信息的
上面你只要看看就能看出里面的东西就是你正在执行的地址
------解决方案--------------------------------------------------------