夜读金瓶梅 发表于 2011-5-30 10:38:09

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

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

有个问题困惑了 ss:sp指向的栈和ds+偏移地址指向的数据段 不都是存储的数据么? 那他门的区别在那里?都是存储的数据的话 从数据段中取出数据跟栈中取出数据有什么区别 难道仅仅栈是先进后出么?如果是这样 看不出有什么特别的。迷茫达

asd82937121 发表于 2011-5-30 10:57:51

ds 指向的只是当前的数据段的起始段地址
ss指向的是栈地址, 楼主没有学过其他的语言吧   逻辑混乱的好厉害

weixianlang 发表于 2011-5-30 11:00:35

栈是由系统自动分配,速度较快,主要是用来存储局部变量和函数参数的,且栈区的数据是由编译器自动释放的,不用程序员去担心内存泄漏问题!

陌路狂奔 发表于 2011-5-30 11:01:38

栈也是内存中的一段,栈跟内存是一样存储数据,除了先进后出外,栈的使用比内存地址方便的多。

嗜血丨灵异狂 发表于 2011-5-30 14:16:10

首先请楼主分清一下逻辑思维 数据时数据(ds)栈是栈(ss)代码是代码(cs)(ds)数据段的功能是计算机 直接执行的十六进制数    (ss)栈段是一个临时储存空间,就是说你写了些了一对代码?但是你现在不需要用,可是代码也不能删除掉吧,所以就利用栈的功能把你多余的代码数据用一个寄存器先封到里边等你后来需要时再调出来就可以直接使用 而不用再重新去写过   一个物理地址是用段地址*16+偏移地址(如果没有提示偏移地址 我们一般都是用0表示)   而SS:SP的偏移地址不能这样来 因为我们内存中的数据时再无时无刻的变化着,如果都进入初始化状态那么我们很多的数据都可能有溢出的危险所以不能让SP的偏移地址从0开始计算   而是在你写代码数据的时候就要标出SS:SP的指向从那到那不能超过界限(小甲鱼老师的视频有个栈的越界问题你可以再回去看看)还有就是那两个指令PUSH和POP 我也不是很懂(但是我想你学多了 用多了 自然就懂了:L;P;P)

夜读金瓶梅 发表于 2011-5-30 22:02:52

多谢大家回帖 我研究完第四章 前面的问题已经明了 感谢大家了
页: [1]
查看完整版本: 看完视频第3章 困惑中 求解