段寄存器里到底储存的是什么东西?高手来

来源:百度知道 编辑:UC知道 时间:2024/06/09 03:41:56
8086段寄存器里储存的到底是什么东西,和内存具体关系是什么?是不是内存被分为几个段,然后每个段寄存器存放的是各个段的段首地址,看书看得有些昏,还请高手指教,谢谢!

每个段寄存器存放的是各个段的段首地址,...
----------------------------
这句话。有点接近正确答案。
把“段寄存器”的内容,在其后面,加上四个二进制的0,就是各个段的段首地址了。

例如:数据段寄存器的内容是:0010 0011 0100 1000
那么数据段的起始地址就是:0010 0011 0100 1000 0000

加上四个0,也就是乘以16、也就是左移四位。
要知道,地址的总位数是20,段寄存器里面只能存放16位,后加四个0,才是物理地址的起始位置。

由于在8086cpu中的数据线是20位的,但是寄存其实16位的,数据线可以访问2的20次方字节的数据也就是1M的数据,但是寄存器才16位所以只能够用两个寄存其来存放地址,两个寄存器都是16位的,一个称为段寄存器 一个称为偏移寄存器,讲其中的段寄存器乘上16来加上段寄存器的内容
打个比方内存等于一条街有地址从0号到100号,如果你家是56号,那么段地址就是50号+偏移地址6号,就是你的家了,但是在处理器中要段寄存器是16位的,但是实际上段地址是20位的,只有将段地址除16或得16位的数据存入段寄存器,用的时候再乘上16,在加上偏移地址