. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
主题 : :  堆栈的SS:SP的概念问题不明白????????  [待解决] 回复[ 12次 ]   点击[ 461次 ]  
liuy88141
[帖 主] [ 发表时间:2014-09-10 14:14 ] 
荣誉值:0
信誉值:0
注册日期:2011-01-31 19:34
王爽在书中说“栈是一种非常重要的机制,一定要深入理解,灵活掌握”
他强调了非常重要和一定要几个字,可见它是很重要的

我现在就是在深入理解,深入学习中,希望能把它彻底弄懂。


我现在已经深刻明白为什么栈会有“先进后出”的原理了


现在就是对SS:SP不太明白


书中68页问题3.11 ,很简单的一个题,考的是加法运算,会理解也会做。





但有些细节地方也不是非常理解,所以向大家请教


问题1:书中说,任意时刻  SS:SP指向栈顶元素    我开始以为这话的意思是指向栈顶,现在错了,SS:SP指的是后者它的“元素”  那元素到底是指的什么,是栈里面的数据吗?还是别的。




问题2:为什么栈中没有元素的时候SP非要去个加2,它不加2不行吗?我觉得加不加2对于PUSH和POP没什么影响,如果你加2是为了还原地址,那为什么又在前面加上栈中没有元素时候这话,不知道啥意思还有也不明白加2到底要干嘛它和元素有什么关系




问题3:假如初始栈不是空的,那SP还加2吗?SS:SP该怎么指向?




就这么多了,发这问题我不是叫大家帮我做习题3.11,那题我会做,就是这里面一些细节概念不懂,望那些学汇编很透彻的人帮我回答下,谢谢啦!
gyq
[第1楼] [ 回复时间:2014-09-10 20:43 ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25

在8086模式下,栈是对字的操作。
一个字两个字节,那么你说SP应该指向低字节还是高字节?
这里用元素描述是再准确不过了。
2
SP指向栈顶元素,出栈,SP指针下移,要加2。
当栈中剩下最后一个元素的时候,SP指向最后一个元素,出栈,SP加2 。这很难理解么?
你设想不加2,那么下次入栈SP是从指向最后一个元素的位置上移,那么这时候栈中可用空间就少了一个元素位置的空间,也就是两个字节。除非你错误地使用栈才可以用到这两个字节,比如,入栈3个元素,出栈4个元素。这难道是你说的加不加2对PUSH和POP没什么影响?
3
初始一个栈不为空,那你的元素怎么来的?

书上所说的是,栈为空的时候,SS:SP指向不好理解,然后用指向最后一个元素再向下移动一个元素的方式说明栈空的时候SS:SP的指向,也就是SP加2。这不难理解啊。

你知道POP,PUSH指令是进行那些操作么?你把这些操作代入到一个实际的例子中去分析过么?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved