汇编语言中的register1:register2是什么意思? 例如
ax:bx
,则该指令将使用哪种类型的地址。我尝试调试,但没有结果。
汇编语言中的register1:register2是什么意思?例如
,则该指令将使用哪种类型的地址。ax:bx
register1:register2(例如
ax:bx
)从未在任何指令中使用。它从来不是一个有效的指令组件,而是一种传达含义的方式:大于一个寄存器可以携带的值的概念。
例如
,则该指令将使用哪种类型的地址。显然,这种情况涉及两个寄存器 AX 和 BX,它们如何影响指令的结果。ax:bx
请注意,不需要停在2个寄存器。
它始终是值的组合,并且最左侧的组件始终被认为是最重要的组件。
只是如何将各个值组合起来有所不同。
您的示例
ax:bx
通常表示 32 位值,其重构规则为 (ax * 65536) + bx
。cl:bx:dx:ax
,它通常表示遵守规则 (cl << 48) + (bx << 32) + (dx << 16) + ax
的 56 位值。
如果其中一个寄存器是像
es:bx
那样的段寄存器,则重构规则是不同的。它变成了(es << 4) + bx
,至少在CPU的实地址模式下是这样。在保护模式下操作,组合 cs:eip
可以通过将 EIP 寄存器中的值添加到段描述符中找到的某个基地址来重新构成。
没有什么可以阻止您想出自己的格式。因此,您可以发明一个 16 位整数值与 [0,99] 范围内的小数部分的组合,只需定义像
AX:BL
这样的组合,这只是一个例子。