0

我被问到以下问题,但我看不出它如何有足够的信息来回答。

“如果EAXcontains 00000200HEBXcontains 00000003H,并且数据段包含1000H,那么这条指令生成的有效地址是什么?”

MOV ECX,[ESI][EDI]

我怎么知道ESIEDI寄存器中包含哪些值? 我知道ESIandEDI寄存器通常用于字符串操作......

我也知道创建有效地址的一般格式是:

1) 左移DS四位。

2) 将移位DS值与偏移值相加。

在上面的代码片段中[ESI][EDI],我认为偏移量与[ESI + EDI]. 我[ESI][EDI]用英语解释为以下内容:

“偏移量等于寄存器中包含ESI的值加上寄存器中包含的值EDI。”

这是我在为期 8 周的 x86 微处理器课程中的第一周,因此我很感谢您的反馈。

4

1 回答 1

1

的有效地址ds:eax+ebx可以这样计算:

ds =  0x1000 (4096 in decimal)
eax = 0x200  (512 in decimal)
ebx = 3

ds:eax+ebx = 0x10 * 0x1000 + 0x200 + 3

ds:eax+ebx = 0x10203 (66051 decimal)

但是基于 和 的值和esi的值不能说什么,因为寄存器是完全独立的,所以也不能计算 的有效地址。edidseaxebxds:esi+edi

于 2013-03-10T21:35:50.163 回答