关于8086微处理器中有效地址与物理地址区别的疑问
8086汇编:有效地址(EA)与物理地址(PA)的区别
有效地址(Effective Address, EA)
- 本质是段内偏移量,表示目标位置相对于当前段寄存器(CS/DS/ES/SS)基址的偏移值。
- 可通过多种寻址方式计算得到:直接寻址(如
[1234h]中的1234h)、寄存器寻址、寄存器+立即数(如bx+05h)、变址寻址等,最终结果是一个16位数值。 - 举例:执行
mov dx, [si+20h]时,si+20h的计算结果就是有效地址,它指向DS段内的对应偏移位置。
物理地址(Physical Address, PA)
- 是CPU访问内存时实际使用的20位地址(8086地址总线为20位,最大支持1MB内存寻址)。
- 计算规则固定:
物理地址 = 段寄存器内容 × 16 + 有效地址(即段基址左移4位,加上有效地址)。 - 举例:若DS寄存器值为
2000h,有效地址是0300h,则物理地址为2000h×16 + 0300h = 20300h。
关于“两者相同”的误解
只有当段寄存器值为0的极端情况时,物理地址才会等于有效地址(0×16 + EA = EA),但这在实际8086编程中几乎不会用到。你的老师可能是在某个简化教学场景下忽略了段寄存器的作用,这种表述并不符合8086内存寻址的通用规则。
内容的提问来源于stack exchange,提问作者OLC Yousra
相关产品推荐
相关产品推荐

