在次跟踪了下程序,
assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start: mov ax,stack //在这里查看了下栈中的数据都是零,
mov ss,ax
mov sp,16 //执行完上面两条指令后,栈中是数据有更改,这些数据是那里来的?
mov ax,data //执行到这里,栈中的数据在上面数据的基础上又改变了一个,改变的是第B个(11)
mov ds,ax // 到这里改变的也是第B个
push ds:[0] //下面的这就看不出什么来了
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
--------------------------------
不明白上面那些数据的为什么会改变,特别是执行完mov ss,ax和 mov sp,16之后是数据变化 |