|
主题 : : 入栈PUSH疑惑 [待解决] |
回复[ 8次 ]
点击[ 506次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-11-24 19:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-22 23:36 |
不是说PUSH是SP-2吗?那10000H:1000fH这段看做栈空间 ss:1000 SP:000Eh就好拉那为什么还要SP+2 SP:10H | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-11-24 22:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-10-17 22:33 |
栈空的时候,SP:0010H,PUSH后,SP:000EH | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-11-25 00:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-22 23:36 |
不对啊,,书上那3。10和3。11图文不和你说的一样 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-11-28 16:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-11-25 22:06 |
仔细看看书上说栈为空的时候,SS:SP指向哪里的你就明白了 | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-12-21 13:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-21 13:48 |
因为是这样的
PUSH 的时候是先读取SP值再写数据,即SP+2后寻找到栈底单元再写数据 | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-07-30 17:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-17 23:03 |
|
|
|
|
|
[第6楼]
[ 回复时间:2011-08-16 17:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-16 11:11 |
最核心的答案是:在push操作的时候,首先修改sp的值,然后再存数据 | | |
|
|
|
|
[第7楼]
[ 回复时间:2011-08-21 22:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07 |
楼上正解,
PUSH执行的时候,是每次移动一个字单元,即图中的两格,首次执行时,是要先SP-2的,如果SP=000E,则首次执行时,栈顶地址为1000DH…… | | |
|
|
|
|
[第8楼]
[ 回复时间:2011-10-04 13:01 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-09-18 15:25 |
栈空是这样理解的:最后一个元素从栈中出栈。你将10000H:1000fH这段看做栈空间,则最后一个字元素所使用的内存单元为1000E和1000F,出栈之后sp自动+2,所以开始我们得令SP=0010 | | |