自用EUBIU
这张图展示了8086处理器中存储器操作数的寻址流程,核心是“先计算16位偏移地址,再结合逻辑段计算20位物理地址”,分为**执行单元(EU)和总线接口单元(BIU)**两部分:
一、执行单元(EU):计算16位偏移地址
EU负责通过不同寻址方式生成操作数的偏移地址(16位),涉及以下寻址方式:
- 寄存器间接寻址:偏移地址由寄存器
SI
、DI
、BX
、BP
直接提供。 - 寄存器相对寻址:偏移地址 = 「位移量」 + 寄存器(
SI
/DI
/BX
/BP
之一)的值。 - 直接寻址:偏移地址就是「位移量」本身(直接给出地址偏移)。
- 基址变址寻址:偏移地址 = 基址寄存器(
BX
或BP
) + 变址寄存器(SI
或DI
)。 - 基址变址相对寻址:偏移地址 = 「位移量」 + 基址寄存器(
BX
或BP
) + 变址寄存器(SI
或DI
)。
二、总线接口单元(BIU):计算20位物理地址
8086的物理地址是20位(可寻址1MB空间),由段地址×16 + 偏移地址得到:
- 段地址来自段寄存器
DS
(数据段)、SS
(堆栈段)、ES
(附加段)等; - 段地址左移4位(即×16,等价于在十六进制下末尾加一个0),再与EU计算出的16位偏移地址相加,最终得到20位物理地址,用于访问实际存储器单元。
简言之,这张图完整呈现了8086从“寻址方式选择”到“物理地址生成”的存储器操作数寻址全过程,体现了EU和BIU的协同工作机制。