初学汇编,关于stack的问题

Assembler:TASM5.0
Platform: Window98
STK SEGMENT
DW 128 DUP(0)
TOS LABEL WORD
STK ENDS
...
CODE SEGMENT
..
MOV AX,STK
MOV SS,AX
MOV SP,OFFSET TOS
...
DEBUG的时候,执行了MOV SS,AX之后,SP=0100,但是,SS:00F0-00FF并不都是预计的0,而是出现了一些寄存器的内容,比如CS,AX等

请问:是不是载入实例的时候系统在stack中压入了东西?可是自定义的stack应该与系统无关的呀,那么那些东西是怎么进入stack的呢?
谢谢!
[396 byte] By [piziwolf-小小的狼] at [2008-4-24]
# 1
执行mov sp,offset tos之后呢??sp的值指的是stack的最后的地址,比如stack地址是0000:1000,stack的大小是1000,则sp的值为2000,可以使用的范围是:1000----1ffff,2000的位置不会是0,当使用一次push时,sp会减小,直到为0.
我记得书中好像是这么一种意思,时间久了,也记不清是不是这样
zhangze-喆 at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 2
谢谢,不过我知道这个
我只是奇怪我并没有push任何东西到我的stack,为什么会有数据呢?而不是我初始化的0
piziwolf-小小的狼 at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 3
你的TOS在STK SEGMENT 里面,装入栈的时候,
MOV AX,STK ;是不是包括TOS这一部分,
;前面的部分FF就是256个字节是0,后面的呢?
MOV SS,AX ;装入到段中
???你装入到SS中,然后又让栈指针指到TOS的位置是不是?
本来想试验一下,我是在W2K,MASM 后,想 DEBUG看一下,但
是装不成,没看成。也不好说什么了。呵呵~只是觉得你应该看
SS的前256字节,而不是看从SP开始……你说呢??
(因为你说的都觉得奇怪,明明是清零了)

----------------
研究研究
coderStone at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 4
或许应该看
MOV SP,OFFSET TOS ;此时的SP的前面的256个字节
coderStone at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 5
你的堆栈只有128(80H)个字节大小,F0-FF当然不会是0了
Areslee-懒虫易水 at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 6
to Areslee(易水):
dw
------------------------
SP为F0-FF处应为0
# 7
从SS:0000 到 SS:00ff都应该是0,不会错的.
你确定在查看SS:00f0之前用 -T 跟踪执行了 "MOV AX,STK" "MOV SS,AX" 语句了吗?

y2kstar-鱼儿 at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 8
抱歉!没看到是DW
Areslee-懒虫易水 at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 9
我确定的确跟踪了mov ax,stk,以及mov ss,ax
但是mov sp,offset tos没有跟踪到,因为t的时候自动跳过了,所以我怀疑系统初始化了一些东西
piziwolf-小小的狼 at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 10
不会,DEBUG会在跟踪到mov ss,ax指令后自动执行下一条指令以免引起死机。
Areslee-懒虫易水 at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...
# 12
楼上说的没错,的确已经执行了下边的那句,但是也确实在堆栈压入了东西
piziwolf-小小的狼 at 2007-10-21 > top of Msdn China Tech,其他开发语言,汇编语言...