鱼C论坛

 找回密码
 立即注册
查看: 3885|回复: 11

关于栈的概念的一些问题 求大神们指点

[复制链接]
发表于 2012-2-11 19:02:28 | 显示全部楼层 |阅读模式
6鱼币
在网上看到一个问题是问
1 设一个堆栈段共有100H个字节单元,堆栈的起始地址是1250H:0000H,若在堆栈中有5个字数据,求SS和SP的内容,还有栈顶的物理地址、栈底的物理地址是多少。然后解答在如下:
栈底的逻辑地址 1250H:0100HSP=栈底-5*2=0100H-AH=00F6HSS=1250H栈低物理地址 1250H*16+0100H=12600H栈顶物理地址 1250H*16+00F6H=125F6H 所以有一个很大的疑问就是一个堆栈或者说是栈的起始地址指的是什么?指的是他栈顶的地址呢还是栈底的地址?比如说有如下栈段stack segmentst dw 0,0,0,0,0,0,0stack ends那么stack是不是这个栈段的起始地址,还是标号st是这个栈段的起始地址?? 2 假如一个堆栈从地点1250H:0100H 开始,SP=0050,则SS的段地点是多少这里所说的一个堆栈或者说是栈从某一地址开始,则这个地址和栈底和栈顶地址是什么关系,又是否是堆栈的其实地址呢? 求大神指点

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-11 20:11:30 | 显示全部楼层
在堆栈中有5个字数据   SS:1250H  SP:FFFAH  我分析 由于栈是以字为单位的 数据是以字节为单位,所以要3个字节才能容纳5个数据   SP-2-2-2=FFFAH  SS不变   

我也不知道我回答的对不对  知识我刚学习到栈  所以试试   高手来个正解!我也好参照下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-11 20:16:42 | 显示全部楼层
第2个问题没看明白 但是栈的地址 就是栈的最高地址单元的下一个单元!!
比如  站的最高地址是 1000:10   那初始地址就是1000:11   栈底和栈顶 的关系?  他们范围是0~FFFF
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-11 20:23:53 | 显示全部楼层
假如一个堆栈从地点1250H:0100H 开始,SP=0050,则SS为1255?  
1250*16+100=这个栈的物理地址  为12600H   题给出SP为50  用
12600-50=12550     12550/16 =1255
以上解答均不知是否正确
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-11 20:24:47 | 显示全部楼层
又是否是堆栈的其实地址呢?    堆栈 没学到那呢 什么也不明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-12 11:52:57 | 显示全部楼层
假如如你所说栈的起始地址是最高地址后一位,那么第一题为何题中给出了起始地址是1259h:0000h,解答中却一上来就是以1250h:0100为栈底的   不是应该是1250h:0000h-1才是栈底吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-12 20:08:05 | 显示全部楼层
不明白你在说什么  题中哪有1259h:0000h,   还有楼主你不能用回车把问题分开吗,

底的逻辑地址 1250H:0100HSP=栈底-5*2=0100H-AH=00F6HSS=1250H栈低物理地址 1250H*16+0100H=12600H栈顶物理地址 1250H*16+00F6H=125F6H     这都是啥啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-12 21:54:03 | 显示全部楼层
1250H:0100HSP    怎么变成了1259??这是书本上的答案???:funk:  不明白

以1250h:0100为栈底  sp 应该指向1250:0101    加1才对吧     还有 1250h??  地址有带h的??{第一次接触汇编   第一次接触计算机语言  初中都没毕业}   

小甲鱼的视频还是慢好懂的  建议难懂的地方暂停下想想
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-14 23:15:12 | 显示全部楼层
任意时刻,SS:SP指向栈顶元素;push和pop指令执行时,cpu从ss和sp中得到栈顶地址。也是栈的起始地址。
cpu能且只能从ss和sp中获得栈的信息,其他都是无用的。楼主一定要清楚这些,不要被其他所打扰!
第二,如果执行push指令,首先sp会-2,以当前(sp-2)栈顶前面的单元(即前=高地址,因为地址是从低往高排列的)为新的栈顶,并把AX内容放入sp和sp-1地址所对应的内存单元内。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-29 20:05:54 | 显示全部楼层
留个座
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-29 20:07:02 | 显示全部楼层
留个座
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-15 13:39:46 | 显示全部楼层
这道题有点难上面的说的可能是对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 10:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表