能力值:
( LV9,RANK:850 )
|
-
-
2 楼
不好意思``
我指一个错误,进是push,出是pop,这应该是楼主笔误````
说白了就是ss:sp
sp指向栈顶
指定ss栈段基址
指定sp栈顶
刚开始栈空时,sp指向栈末尾+1的内存单元
push时,sp-2,再写入栈单元
pop时,sp+2,再读出栈单元内容,(注,此时只是读出栈单元内容,并不改变其内容,栈顶向高地址移动了,所以不再指向原读出的栈单元地址,当再次使用push时,sp-2再写入栈单元时,便会替换掉上次nop时没清空的数据)
还有栈超界,等知识``
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
楼上的精贴真多
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
看完莱老大的贴子,小弟受教了,两处写错指令的地方已经纠正过来了!但是还有几处不明白,下面说明一下:
1、“es指向栈顶”这是在什么时候发生的呢?书上讲SP指向栈顶(我理解是SP是一相相对栈基址的偏移地址它指向了栈顶的存有数据的那个内存单元)
2、出栈时,莱老大讲的是先sp+2,然后再读出栈单元内容。我看了书后的理解是先读出栈单元内容,然后再SP+2(因为SP本来已经指向了栈顶的存有数据的那个内存单元,正要访问的也是这个内存单元呀,所以应该是读完后再使SP+2(又作为栈顶地址了))不知这样理解的对不对?
3、小弟提出的题外话还没有人来讨论了,请大家看了贴后赐教,呵呵!
感谢莱老大的回复!
|
能力值:
( LV9,RANK:850 )
|
-
-
5 楼
不好意思
我写错了,不是es,是sp
出栈时应该是依靠ss:sp,读出字单元后再+2,
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
莱老大回复的够快啊,一天好像有20小时在线啊
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
仔细理解一下么
|
|
|