请问一下汇编语言中cs和ds有啥区别?貌似前者是用来放指令的段地址,后者是数据的段地址?

但是指令和数据在存储器中都是以二进制形式存放,他们到底有啥区别?

cs 代码段地址,联合ip作为cpu指向当前正在执行的那条指令所使用,你一般不能随意修改它
ss 堆栈段地址 联合sp定义一个堆栈,一旦你确定了堆栈地址,ss也不能随便改变了
ds 数据段地址 定义一个数据段
如果你是新手的话,有需要的时候,你可以用ds和es,随着更加深入的学习你会了解具体怎么用的。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-09-03
cs中的内容无法被显式的更改。
但可以用例如jmp oper ,loop oper,等指令来隐式的更改。(IP)同理。

如果你学过操作系统这门课的话,应该不难理解。
cs中的指令代码是(当然也可以有数据)是被存放到系统进程空间里面的。(进程空间=用户进程空间+系统进程空间)。
而ds中的数据是被放到用户进程空间里的。

指令最少占用一个字节。本回答被网友采纳
第2个回答  2010-12-03
其实寄存器中存储的都是二进制
cs:ip 指向的二进制会被cpu 当做指令
而ds 存储的二进制会被cpu当做数据
同样的道理,ss:sp指向栈段的栈顶位置
第3个回答  2010-11-29
计算机内,所有数据都是二进制数据,不管是数据还是机器指令都是二进制,也就是说指令和数据在内存中是一样表示的,这样如果内存中存在两段数据,一段是数据,一段是指令,如果我们指令段的基址写入CS中那么计算机就会认为这个段是指令段,反之我们把数据段基址写入CS中,计算机也会认为数据段是可执行的就会执行,但执行时就会出错,因为数据段不是我们写的指令,其结果很难预料,所以计算机分辨指令是根据CS段寄存器来的.区别就看你把段地址装入哪个寄存器中。
第4个回答  2010-11-28
你可以这样理解,虽然指令和数据在存储器中都是以二进制形式存放,但是cs和ds里面的二进制数的意义不同,cs门下的数代表的是指令,每一个数代表一个指令,而ds门下的数则代表简单的数,参加运算的数。本回答被网友采纳
相似回答