1

我是组装初学者,我正在尝试理解以下几行:

mov $0x80484e0,%ebx  // what the hell means this value: 0x80484e0?
mov $0x1b,%eax   // writing 27 in %eax
mov %edx,%edi    // ? %edx is not used until not, why reading from there?
mov %ebx,%esi    // why not like this: mov $0x80484e0,%esi
mov %eax,%ecx    // writing 27 in counter-register, but same questen like one line before
rep movsl %ds:(%esi),%es:(%edi) // repeat 27 times: copy 32 bit word from %ds:(%esi) to %es:(%edi)

但是 %ds:(%esi),%es:(%edi) 是什么意思?我只知道这条线必须复制任何东西。但最重要的问题是值 0x80484e0 的含义。

4

1 回答 1

1

$0x80484e0表示文字值0x80484e0,它是数字的十六进制表示。它很可能是某物的地址。如果没有更多代码,很难帮助您理解其含义。

第二个问题问为什么不直接转esi?有几种可能:一种是后面的代码使用了ebx中的值,所以最好复制一份。该movsl指令更改 esi 和 edi。

于 2013-06-10T03:06:58.010 回答