装配偏移计算规则

时间:2015-02-17 12:27:09

标签: assembly x86 offset x86-16

所以...我的课程书中的偏移计算规则表明:

offset = [bp] + [bx] + [di|si] + CONST  (any part is optional, but atleast one is required)

但是在互联网上阅读我发现规则为:

offset = [bp|bx] + [di|si] + CONST 

是哪一个?为什么?

(在我看来,第一个应该也是有效的,因为bx可以包含任意值,如(1..F),但我倾向于相信我错了,必须有BX或BP)

1 个答案:

答案 0 :(得分:4)

互联网规则"是正确的。您可以拥有1个基址寄存器(bpbx)和1个索引寄存器(sidi)。您无法同时拥有bp + bxsi + di。见表2-1。 Intel Instruction Set Reference

中的带有ModR / M字节的16位寻址表

然而,您的课程书是正确的,任何部分都是可选的,但至少需要一部分,因此您不需要基础,索引或偏移。这些都有效:[const][bx][si][bx + si][bp + di + const]。完整列表在我上面链接的手册中。