极度深寒 发表于 2013-1-19 13:14:17

ds和cs这2个寄存器区别是什么啊

一直纠结这个问题,在百度上也没有找到满意的答案,他们都是段地址嘛,为什么还要用2个寄存器,偏移地址为什么不用2个寄存器

NGtailang 发表于 2013-1-19 14:08:04

cs好像默认是栈的段地址,默认和ip配合使用
ds是默认的数据段的段地址,默认段地址是bx
这是我的理解

54085256 发表于 2013-1-19 15:01:56

本帖最后由 54085256 于 2013-1-19 15:05 编辑

cs是代码段寄存器 ds是数据段

cs:ip 指向的地址机器认为是代码
DS:偏移 指向的机器认为是数据


cs:ip 指向0000:0000 机器认为是指令
ds:bx指向0000:0000机器认为是数据

jeset 发表于 2013-1-19 15:15:49

54085256 发表于 2013-1-19 15:01 static/image/common/back.gif
cs是代码段寄存器 ds是数据段

cs:ip 指向的地址机器认为是代码


楼上正解!

林之白狼 发表于 2013-1-19 16:00:36

首先,ds和cs是段寄存器,用来存放段地址的,之所以有4个段寄存器,是CPU的设计者为了方便而设计了,比如说cpu吧CS:IP所指向的内存单元的内容当做要执行的指令,ds:当做是数据段,有一些东西是CPU默认的,不要钻牛角尖啊{:5_109:}

huise865 发表于 2013-1-20 15:23:39

cs是代码段寄存器
ds是数据段寄存器

cs是用来存放代码段的段地址
ds是用来存放数据段的段地址

如果你非要把数据段的东西写到代码段去那也可以,但是这样看程序代码的时候思路就有点复杂了,分这么多段寄存器只是为了我们更好的理解代码,比如我们的电脑分C盘、D盘、E盘等等,其实都是一样的,分这么多盘只是为了我们方便区分那些文件放在那里而已,如果你把所有文件都放一个文件夹下面、当你要找文件的时候你容易找吗?

flg618730 发表于 2013-1-25 09:07:52

路过,学习了。。谢谢各位。

n2zee 发表于 2013-1-25 19:17:25

同志,你好好看书没有,cs是程序段,ds是数据段,能一样么,地址都不一样。
页: [1]
查看完整版本: ds和cs这2个寄存器区别是什么啊