. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  堆栈的SS:SP的概念问题不明白????????  [待解决] 回复[ 12次 ]   点击[ 460次 ]  
liuy88141
[帖 主]   [ 发表时间:2014-09-10 14:14 ]   [引用]   [回复]   [ top ] 
荣誉值: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 ]   [引用]   [回复]   [ top ] 
荣誉值: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指令是进行那些操作么?你把这些操作代入到一个实际的例子中去分析过么?
liuy88141
[第2楼]   [ 回复时间:2014-09-11 14:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-31 19:34
我知道POP,PUSH指令是进行那些操作的,其实它们和MOV差不多都是吧一个数据送往到一个地方去,只是PUSH和POP害怕数据被重新覆盖,多加了一个加减2出来罢了,看完你说的答案和我最初想的差不多,加减2是为了还原地址以及方便下条指令的压入或取出。
gyq
[第3楼]   [ 回复时间:2014-09-12 00:23 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
我有个问题不明白,楼主的最初想法是什么啊?说跟我说的差不多。
楼顶上提问是不是楼主的最初想法?
如果是,
楼顶内容跟我说的相差还是蛮多的,比如,对元素的理解,对push,pop这样操作的理解。
如果不是,
那楼主经过“深入理解”之后提出的问题,不是自己的最初想法,那又是为什么呢?
liuy88141
[第4楼]   [ 回复时间:2014-09-24 23:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-31 19:34
这个问题我暂时放着没去想,我继续往后学习研究,现在再回过头来看,我已经明白了,当初会问这3个问题,一直是搞不明白“元素”究竟是什么东西,直到最近上百度才知道,元素其实就是地址的意思,我真搞不懂为什么作者不直接说栈顶地址呢,非要说什么栈顶元素,故作高深故弄玄虚,让我绕进了牛角尖,想好久好久都不明白元素到底是什么!,现在我懂了元素就是地址,在把书中的元素改成地址再来看书,发现,我提的这个问题其实很简单,我自己也能回答,之所以会问那些奇怪的问题,归根到底就是那元素在作祟,让我不明白其意。
liuy88141
[第5楼]   [ 回复时间:2014-09-24 23:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-31 19:34
你好朋友,我现在还在学习汇编,对它很着迷,你能告诉你的扣扣吗,又不懂的地方好向你再次请教。
gyq
[第6楼]   [ 回复时间:2014-09-25 00:08 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
回复:[第5楼]
------------------
这个没必要,我经常上来,给我发消息就好了。
gyq
[第7楼]   [ 回复时间:2014-09-25 00:13 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
“元素”这个词是很好理解的,它包含了地址位置和地址大小双重意思,再恰当不过了。这个算是一个比较普及使用的词了。
zxm19820916
[第8楼]   [ 回复时间:2015-03-09 09:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-03-09 09:33
我也是初学者,我看到元素的时候感觉很好理解,用词非常到位啊!像楼上说的,包含了地址位置和地址大小的双重意思,这里2个字节作为一个单元,用元素来描述,合适!
asm0101
[第9楼]   [ 回复时间:2015-03-11 17:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-02-17 23:21
初学,没想那么多,觉得元素就是装到栈里的一个个字,就像前面初次讲栈时,以书为例当中的书一样,最后装进去的就是栈顶元素。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved