You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

8086架构下SI为奇数偏移地址时MOV [SI],BX的存储方式疑问

8086中MOV [SI],BX在SI为奇数偏移时的执行逻辑

这个问题抓得很准,刚好涉及到8086内存分体结构里容易混淆的点!咱们一步步拆解:

首先得回忆下8086的两个存储体:

  • 偶存储体:对应地址总线A0=0,负责存储16位数据的低字节,也能单独存任意8位数据
  • 奇存储体:对应地址总线A0=1,负责存储16位数据的高字节,同样也能单独存任意8位数据

正常情况下,16位数据的读写都要求从偶地址(A0=0)开始,这时候CPU会同时选通两个存储体,一次性完成16位传输。但当SI是奇数偏移(也就是A0=1)时,这条16位的MOV指令会被CPU自动拆成两次独立的8位写操作:

  1. 写入BX的低字节BL:CPU会选通奇存储体,把BL的数据写入到SI指向的内存单元(偏移地址=SI,A0=1)——别纠结奇存储体“本该存高字节”,它本身就是可以单独存任意8位数据的,只是在对齐的16位访问里分工不同而已。
  2. 写入BX的高字节BH:CPU接着选通偶存储体,把BH的数据写入到SI+1指向的内存单元(偏移地址=SI+1,A0=0)。

简单说就是:8086允许不对齐的16位访问,只是会多消耗一个总线周期,把原本的16位操作拆成两次8位操作来执行,最终BX的低字节存在SI指向的奇地址单元,高字节存在SI+1指向的偶地址单元,数据的存储顺序和你预期的“低字节在前、高字节在后”是一致的,只是因为起始地址是奇数,所以跨了两个存储体而已。

内容的提问来源于stack exchange,提问作者Arkaprabha Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:42:39