当前位置:首页 » 服务存储 » 段寄存器中有存储单元吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

段寄存器中有存储单元吗

发布时间: 2022-11-27 23:05:29

① 请问有没有 “mov 内存单元,内存单元”“mov 段寄存器,段寄存器”

内存到内存是不可能的。段寄存器到段寄存器也是不可能的。

MOV 变量单元 常量/变量(基本原则)

以下均是合法的MOV指令:
MOV 内存变量 立即数 (单向)
MOV 内存变量 一般寄存器 (双向)
MOV 内存变量 DS/ES/SS/FS/GS(特殊寄存器) (双向)
MOV 内存变量 CS(代码段寄存器) (单向)
MOV 一般寄存器 CS (单向)
MOV 一般寄存器 DS/ES/SS/FS/GS(双向)
MOV 一般寄存器 一般寄存器 (双向)
MOV 一般寄存器 立即数 (单向)

在32位汇编里,CS已不是变量,而是由系统自动指定。

② 段寄存器是在CPU内部还是存储器里如果是在cpu内,那么cpu访问存储器时,存储器地址由段寄存器,ip决定

你问的是8086架构的CPU吧,看的很眼熟,很多年都没接触了。8086中有4个16位的段寄存器:CS、DS、SS、ES,分别用于存放可执行代码的代码段、数据段、堆栈段和其他段的基地址。
其中,段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。
段寄存器SS指向用于堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元。
段寄存器DS指向数据段,ES指向附加段,在存取操作数时,二者之一和一个偏移量合并就可得到存储单元的物理地址。通常,缺省的数据段寄存器是DS。

③ CPU存储器的段寄存器

段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
CPU内部的段寄存器:
CS——代码段寄存器(Code Segment Register),其值为代码段的段值;
DS——数据段寄存器(Data Segment Register),其值为数据段的段值;
ES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;
SS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;
FS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;
GS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。
在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。
32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简单描述如下:
实方式: 前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。
保护方式: 在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。段寄存器的具体作用在此不作进一步介绍了,有兴趣的读者可参阅其它科技资料。

④ CPU中有哪些主要寄存器

不同架构的CPU寄存器是不一样的,即使是同一架构,不同型号的CPU也有差别。这里以80386的CPU为例,寄存器分为6类。其中可供应用程序员使用的为通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)、段寄存器(CS、DS、SS、ES、FS、GS)和标志和控制寄存器(EIP、EFLAGS)。

可以指定任何通用寄存器的内容作为操作数的地址,以及在形成地址的过程中作如加法或减法这样简单的算术运算。但像串的运算和双精度的乘法和除法操作这类较复杂的操作,必须要从固定的寄存器中取一个或多个操作数。

寄存器的特点:

在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。

CPU中至少要有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)。这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充。

以上内容参考:

网络-内存资料寄存器

⑤ 8086cpu为什么要对存储器采用分段管理一个逻辑段最多包含多少个存储单元

只要学过汇编的人都知道8086处理器对存储器采用分段管理机制,为什么要这么设计呢?采用线性地址直接访问存储器该多好,直接明了。

其实Intel的工程师绝对不会那么傻,当然是有他的道理:

首先,地址总线有20根,可寻址1M的地址空间,而寄存器是16位,仅能寻址64K,总不能白白浪费多出来的空间。要知道在8086的那个年代,内存是非常昂贵的。

所以Intel的工程师想出了分段管理的方法:段地址x4+偏移地址。

另外,分段管理还有利于代码的组织,对内存实现有效的管理。例如,将代码段、数据段隔离等。

学习过程中,如果按照书中所描述,照搬的学习,既不方便记忆,也不能将知识融会贯通。

⑥ 段寄存器是不是存储器的一部分

应该这样子说
寄存器是一种存储器
但不是我们平常所指的存储器
在汇编语言里进行操作的数据有三种
直接数,如1+2这类
地址数,有两种,一种是直接地址,另一种是间接地址
直接地址是寄存器里放的段首地址
[寄存器]+偏移量[直接数]=地址内容
间接就是两个操作数都是寄存器内容,一个是段首一个是偏移量
[寄存器]+[寄存器]=地址内容

⑦ “段寄存器”有什么作用

“段寄存器”的作用有:

1、在保护模式下,段寄存器其实就是段选择器,为获取段描述符表的某个项目,起到索引的作用等等;

2、在实模式下,段寄存器起到的是寻址的作用,指示着某一数据段的基址。

“段寄存器”的分类有:

1、段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。

2、段寄存器SS指向用于堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元。另外,当偏移量用到了指针寄存器BP,则其缺省的段寄存器也是SS,并且用BP可访问整个堆栈,不仅仅是只访问栈顶。

3、段寄存器DS指向数据段,ES指向附加段,在存取操作数时,二者之一和一个偏移量合并就可得到存储单元的物理地址。该偏移量可以是具体数值、符号地址和指针寄存器的值等之一,具体情况将由指令的寻址方式来决定。