鱼C论坛

 找回密码
 立即注册
查看: 3704|回复: 5

看完视频第3章 困惑中 求解

[复制链接]
发表于 2011-5-30 10:38:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 loop 于 2011-5-31 12:11 编辑

有个问题困惑了 ss:sp指向的栈和ds+偏移地址指向的数据段 不都是存储的数据么? 那他门的区别在那里?都是存储的数据的话 从数据段中取出数据跟栈中取出数据有什么区别 难道仅仅栈是先进后出么?如果是这样 看不出有什么特别的。迷茫达
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-30 10:57:51 | 显示全部楼层
ds 指向的只是当前的数据段的起始段地址  
ss指向的是栈地址, 楼主没有学过其他的语言吧   逻辑混乱的好厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-30 11:00:35 | 显示全部楼层
栈是由系统自动分配,速度较快,主要是用来存储局部变量和函数参数的,且栈区的数据是由编译器自动释放的,不用程序员去担心内存泄漏问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-30 11:01:38 | 显示全部楼层
栈也是内存中的一段,栈跟内存是一样存储数据,除了先进后出外,栈的使用比内存地址方便的多。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-30 14:16:10 | 显示全部楼层
首先请楼主分清一下逻辑思维 数据时数据(ds)  栈是栈(ss)  代码是代码(cs)  (ds)数据段的功能是计算机 直接执行的十六进制数    (ss)栈段是一个临时储存空间,就是说你写了些了一对代码?但是你现在不需要用,可是代码也不能删除掉吧,所以就利用栈的功能把你多余的代码数据用一个寄存器先封到里边  等你后来需要时再调出来就可以直接使用 而不用再重新去写过   一个物理地址是用段地址*16+偏移地址(如果没有提示偏移地址 我们一般都是用0表示)     而SS:SP的偏移地址不能这样来 因为我们内存中的数据时再无时无刻的变化着,如果都进入初始化状态那么我们很多的数据都可能有溢出的危险所以不能让SP的偏移地址从0开始计算   而是在你写代码数据的时候就要标出SS:SP的指向从那到那不能超过界限(小甲鱼老师的视频有个栈的越界问题你可以再回去看看)  还有就是那两个指令PUSH和POP 我也不是很懂(但是我想你学多了 用多了 自然就懂了:L;P;P)

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
小甲鱼 + 2 + 2 回答得相当仔细!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-30 22:02:52 | 显示全部楼层
多谢大家回帖 我研究完第四章 前面的问题已经明了 感谢大家了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-15 03:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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