【发布时间】:2013-02-25 23:30:51
【问题描述】:
我被问到以下问题,但我不明白它如何有足够的信息来回答。
“如果EAX包含00000200H,EBX包含00000003H,数据段包含1000H,那么这条指令生成的有效地址是什么?”
MOV ECX,[ESI][EDI]
我如何知道ESI 和EDI 寄存器中包含哪些值? 我知道ESI 和EDI 寄存器通常用于字符串操作...
我也知道创建有效地址的一般格式是:
1) 将DS 左移四位。
2) 将移位后的DS 值添加到偏移值。
在上面的代码 sn-p 中,偏移量是[ESI][EDI],我相信它与[ESI + EDI] 相同。我将[ESI][EDI] 解释为英语中的以下含义:
“偏移量等于ESI 寄存器中包含的值加上EDI 寄存器中包含的值。”
这是我参加为期 8 周的 x86 微处理器课程的第一周,因此非常感谢您的反馈。
【问题讨论】:
-
DSI? 80x86 中没有 DSI 寄存器。
-
我之前的评论提到了原始的、未经编辑的问题。我已将其删除以防止进一步混淆。
标签: assembly x86 cpu-registers