我们正在使用有限的 8086 条指令学习汇编。
当我们在内存中有一个数组时,我们使用 SHL 在元素之间移动(取决于元素大小)。
例如,假设有一个 2 个字节的短裤数组。该数组位于 ES 段上,第一个元素从 BX 偏移量 (ES:[BX]) 开始。
如果我们想转到下一个元素,我们使用 SHL BX,1 ,然后使用 ES:[BX] 访问它。
ADD AX, ES:[BX]
SHL BX,1
ADD AX, ES:[BX]
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样,偏移量乘以 2。我们不应该将 2 添加到 BX 以转到下一个元素吗?
ADD AX, ES:[BX]
ADD BX,2
ADD AX, ES:[BX]
Run Code Online (Sandbox Code Playgroud)