8086上某个细分受众群的最小和最大尺寸是多少?并且,由于最小值,我们可以拥有的最大单独段数是多少?没有必要一次都活跃。 (重叠是可以接受的)
答案 0 :(得分:1)
8086段寄存器是16位,因此可以有65536个段 - 但它们重叠。通过将段寄存器左移4位并添加地址偏移来获得20位物理地址。这意味着段可以从任何16字节对齐开始。从重叠开始,有很多方法可以添加一个内存位置,例如0000:0010
和0001:0000
寻址同一位置。
由于地址偏移量也是16位,因此任何段的可寻址大小为65536字节。所以段的最大大小是65536字节,最小的是16字节 - 尽管在8086上可以读取/写入整个段而没有保护。
您的上一个问题"单独细分的最大数量"是16个单独的段。任何更多,他们将重叠。
答案 1 :(得分:0)
最大尺寸为64K。没有最小值 - 您只能使用第一个字节,但该段始终为64K。也许异常是最后一段 - 最新的(0xFFFF)是16字节,最新的是32,48,64字节......通常,8086段是使用16位地址寄存器寻址超过64K的方法。
答案 2 :(得分:0)
在8086微处理器中,总内存寻址能力为1MB。为了表示1MB,需要最少4个十六进制数字,即20比特。 8086微处理器具有十四个16位寄存器(即,没有用于表示20位地址的寄存器)。因此,总内存可以分为16个独立的逻辑段,每个段容量为64KB(即16 * 64 KB = 1MB
)。
答案 3 :(得分:0)
在实际模式中,片段没有“大小”:内存不会被real mode
中的片段分割。段是较大实体的一部分:segment+offset
- 它们都用于计算有效地址。这些都是段和偏移量,允许CPU计算存储器字节的地址,字节是可在英特尔平台上寻址的最小单位。关于“段+偏移”程序员还说它们包含“far pointer”
。相反,“near pointer”
是与另一个指针相比的相对指针,它们都具有相同的段。所以,"远"指针是一个由16位段选择器和16位(或32位,取决于模式)偏移组成的指针,因此总指针大小在16位模式下为32位,48位为32位模式。在从“远”指针访问存储器之前,段选择器被加载到特殊段寄存器中。有一些特殊指令可以立即加载远指针。在Intel 8086
上,最流行的指令是LDS
和LES
,它将“远”指针从内存加载到寄存器对:一个段寄存器(DS
或{{ 1}})和一个通用(偏移)寄存器。还有其他寄存器的版本:ES
,LFS
和LGS
分别用于LSS
,FS
和GS
段寄存器(在SS
)。段在16位模式下非常有用,无论是16位实模式还是16位保护模式。在16位实模式中,段寄存器的值乘以16,然后添加偏移量 - 这就是计算有效地址的方式。但是,同样,由于实模式下的内存不是“分段”的,因此没有段的最小或最大大小。在16位实模式下,如果将FFFF加载到DS寄存器和SI寄存器,理论上可以访问(16 * 0xFFFF)+ FFFF = 1114096 存储器的内存(如此应用的一些实际限制) - 被叫Intel 80386
等) - 或大约 1兆字节。
在A20-line
下,段寄存器几乎不需要,因为所有段寄存器基本上都指向相同的位置,因此不需要加载段寄存器。
在32-bit mode
下,这些说明未实施,其操作码违反了访问权限。自英特尔实施64-bit modes
- "向量扩展 - (VEX
)以来,英特尔采用了SSE2
和LDS
的操作码并开始使用它们LES
前缀。因此,256位VEX
(AVX
)寄存器仅在64位模式下可用。
在YMM
中,有一个像段大小这样的概念,但同样,没有最小大小,或者最小大小是架构的最小分配单位,例如<{1}}中的 16字节或protected mode
中的 4千字节。在保护模式下,段寄存器不会像16位实模式那样乘以16,而是选择器表中的索引。自从引入英特尔16-bit mode
以来,处理器的地址空间从大约1兆字节扩展到224字节(16兆字节),但不是通过使用更大的偏移量。相反,16位段寄存器现在包含一个段描述符表的索引,该表描述符包含添加了偏移量的24位基址。最大段大小为64千字节。在32-bit mode
和更晚的处理器中,保护模式保留了80286保护模式的分段机制,但是在分段单元和物理总线之间添加了寻呼单元作为第二层地址转换。此外,重要的是,地址偏移是32位(而不是16位),并且每个段描述符中的段基也是32位(而不是24位)。结果,最大区段尺寸已增加到理论最大值 4 GB 。有趣的是,与此相反,32位操作系统没有4GB的物理限制。例如,32位服务器操作系统(如Microsoft Windows Server 2008 32位)可以通过物理地址扩展(PAE)访问最多 64 GB (Windows Server 2008 Enterprise和Datacenter版本),这是Intel在Pentium Pro中首次引入的,后来由AMD在Athlon处理器中引入 - 它定义了三个级别的页表层次结构,每个表的条目为64位而不是32位,允许这些CPU直接访问物理地址大于4千兆字节的空间 - 理论上,32位操作系统理论上可以访问2 ^ 64字节,或17,179,869,184千兆字节,但该段受 4 GB 的限制。
答案 4 :(得分:0)
每个段的最大大小为64kB,因为偏移量为16位,因此每个段具有2 ^ 16字节= 64KB。段的最小大小为16B。