8086cpu结构图
存放段地址的寄存器就是段地址寄存器,存放偏移地址的就是偏移地址寄存器.
段地址寄存器: DS, ES, SS, CS
偏移地址寄存器: SP,BP,SI,DI,IP, BX(bx也是一种数据,所以bx也可以存放地址信息)
以上地址寄存器都是16位
cs:ip读取的内存地址中的内容是指令,而不是数据。
CS(codesegment)——16位的代码段寄存器;
DS(datasegment)——16位的数据段寄存器;
ES(extrasegment)——16位的扩展段寄存器;
SS(stacksegment)——16位的堆栈段寄存器;
但8086cpu的地址线是20位,那么16位的寄存器怎么表示20位的地址呢?
答案是:引入段地址,偏移地址. 段地址*16(10H) + 偏移地址 = 物理地址.
或者: 段地址*16(10H) = 基础地址, 基础地址+偏移地址=物理地址.
DS寄存器:主要用来访问内存中的数据.