. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于栈的理解  [待解决] 回复[ 6次 ]   点击[ 529次 ]  
zhu2199477
[帖 主]   [ 发表时间:2009-04-08 15:54 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2009-03-03 21:42
书本上的问题3.6:将10000H:1000FH这段空间当作栈,初始状态栈是空的,此时,SS=1000H,
SP=?  (答案是SP=0010H)
不能理解,请大侠指教下,谢谢
bossj
[第1楼]   [ 回复时间:2009-04-09 09:48 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-02-06 23:08
楼主记住书上的原话,栈空状态,SS:SP指向空间最高地址单元的下一个单元。
 1000FH+1=10010H
pingtingsoft
[第2楼]   [ 回复时间:2009-04-11 19:37 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2009-04-03 18:53
我对这些问题也很迷糊,
第三章快看了4 5遍了,
还是一知半解,
郁闷的要死~
zhenglxd
[第3楼]   [ 回复时间:2009-04-20 11:13 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
我也是第一次接触栈 不过很好理解的。不要死背概念要注重理解脑子里最好有 形象的逻辑模型

栈有2个操作 1个特性
2个操作是 入栈 出栈 特性是 后进先出
ss : sp指向栈顶 栈的单位是字 高位的字节和地位字节分别对应高低为的内存单元
内存单元的地址排列是 低到高的 所以栈地址也是 由低到高的
一段栈 越往上的部分 地址越低,反之则高
很明显 入栈的话 栈顶会像 低位地址靠近 sp则-2
       出栈的话 栈顶想 高为地址靠近 sp+2
空的栈 就是栈中唯一的单元出栈了
比如 1000:0~1000:F 这段地址作为栈
如果栈是空的 那么 ss=1000 sp=10H 
如果栈是满的 那么 sp=00
为什么呢?
因为栈的单位是字 一次出栈或者入栈 实际传送的是2个字节的数据 1个16段大小的栈 一次最多压入8个字 送出的字也是8个
但是 sp是什么?sp指向的是一个字节大小的内存单元,他指向的是栈顶,栈顶的含义就是
如果有入栈 那么入栈的数据的村地址 是在栈顶上的2个字节,通俗说,栈顶就是其他要入栈的栈底。下面是个简单示意图 从0~7 可能成为栈顶的地址
----------------出界
--0-------栈顶
--1
--2-------栈顶
--3
--4-------栈顶
--5
--6-------栈顶
--7 
----------栈顶
------------------出界
zhao129999
[第4楼]   [ 回复时间:2009-05-02 21:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-02 11:54
栈为空 sp=10 栈有一个数据时 sp=0EH   pop 出去后 sp+2 栈为空 sp就是10了
canxue9084
[第5楼]   [ 回复时间:2011-06-20 12:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-06-20 12:17
不能把10001h~1000fh作为一个栈吗
hiwoshilzy
[第6楼]   [ 回复时间:2011-07-20 12:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-23 21:58
这个问题书上以经解释的很祥细了!!!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved