您的位置:首页 > 其它

段寄存器是什么,在程序运行中起什么作用,为什么是程序运行不可缺少的

2014-08-17 17:24 288 查看

含义编辑

段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。段寄存器SS指向用于堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元。另外,当偏移量用到了指针寄存器BP,则其缺省的段寄存器也是SS,并且用BP可访问整个堆栈,不仅仅是只访问栈顶。段寄存器DS指向数据段,ES指向附加段,在存取操作数时,二者之一和一个偏移量合并就可得到存储单元物理地址。该偏移量可以是具体数值、符号地址和指针寄存器的值等之一,具体情况将由指令的寻址方式来决定。通常,缺省的数据段寄存器是DS,只有一个例外,即:在进行串操作时,其目的地址的段寄存器规定为ES。当然,在一般指令中,我们还可以通过改变前缀中的“段取代”字段来改变操作数的段寄存器。“可选用的段寄存器”即是可以用强置说明这些段寄存器的值来作为其操作数地址的段地址

2组成编辑

段寄存器:在8086系统中,访问存储器地址码段地址和段内偏移地址两部分组成。段寄存器用来存放各分段的逻辑基值,并指示当前正在使用的4个逻辑段,包括代码段寄存器CS、堆栈段寄存器SS、数据段寄存器DS和附加段数据寄存器ES。

3分类编辑

1,代码段寄存器CS(Code Segment):存放当前正在运行的程序代码所在段的段基址,表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移量则由IP提供。2,数据段寄存器DS(Data Segment):指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基址。3,堆栈段寄存器SS(Stack Segment):指出当前堆栈的底部地址,即存放堆栈段的段基址。4, 附加段寄存器ES(Extra Segment):指出当前程序使用附加数据段的段基址,该段是串操作指令中目的串所在的段。

代码段寄存器与数据段寄存器有什么区别?

举报|2009-10-3111:16xzuok | 分类:网站使用 | 浏览1719次
代码和数据不是一回事吗?
分享到:2009-10-31 14:57提问者采纳
区别就是一个放代码一个放数据~所谓的数据就是比如你定义了一个字符串~然后想对这个字符串进行什么什么操作~这个你定义的字符串就是数据~而代码就是比如你想把这个字符串循环3变输出~这个描述循环3遍的就是代码~
s8435330songya2014-8-17 17:20当然还有一个堆栈段,这些就是c的内存分布,栈、堆、常量,静态常量,全局变量、代码段。要理解程序具体是如何运行的,还要知道内存管理,如何从逻辑地址到线性地址再到最终的物理地址。回复s8435330songya2014-8-17 17:16我感觉是这样的,CPU对数据进行运算和操作,都是通过寄存器来实现的,CPU通过数据总线和地址总线来寻找数据放在寄存器里。数据段寄存器加上地址偏移量sp或bp,就寻址到一个真实的物理地址,里面存着数据。cpu就可以对这个数据进行操作了。如何操作,这个要代码段寄存器和ip来寻找操作指令。这就是CPU的工作模式回复
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐