老是搞不清栈顶是多少?
先上程序assume cs:code ,ds:data,ss:stack
data segment
dw 0123h,0456h
data ends
stack segment
dw 0,0
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,data
mov ds,ax
push ds:
push ds:
pop ds:
pop ds:
mov ax,4c00h
int 21h
code ends
end start
这个程序里的栈顶为什么是16 两个字型数据应该是0~3 栈顶下一个是4 mov sp,16 设置栈顶:) 为什么?怎么算的
RE: 老是搞不清栈顶是多少?
你使用了指令mov sp,16sp指向栈顶 大头 发表于 2012-11-12 23:25 static/image/common/back.gif
为什么?怎么算的
MOV SP,16大家通常叫这个为,初始化栈顶!!
SP指向栈顶嘛!!呵呵! 栈顶下一个是4!!!!!!!!! MOV SP,16大家通常叫这个为,初始化栈顶!!
SP指向栈顶嘛!!
还是不太明白是不是不足16就按16来 你就当开始栈内有一个元素
然后+2既是空栈的栈顶
dw 0,0
占4字节,如果里边有一个元素那么栈顶就是2
那么2+2就是4.
同理,如果定义
dw 8 dup (0)
16个字节单元作为栈,你当里边有一个元素的时候栈顶指向0EH
那么0EH+2=10H 那为什么上面内个程序的栈顶是16呢 这是你自己设置的,表示堆栈从16开始的堆栈,也就是把16这个内存单元当做栈顶!我是这样认为的,对不对?
页:
[1]