所以...我的课程书中的偏移计算规则表明:
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)
答案 0 :(得分:4)
互联网规则"是正确的。您可以拥有1个基址寄存器(bp
或bx
)和1个索引寄存器(si
或di
)。您无法同时拥有bp + bx
或si + di
。见表2-1。 Intel Instruction Set Reference
然而,您的课程书是正确的,任何部分都是可选的,但至少需要一部分,因此您不需要基础,索引或偏移。这些都有效:[const]
,[bx]
,[si]
,[bx + si]
,[bp + di + const]
。完整列表在我上面链接的手册中。