为什么单词[label + num]改变了eax?

时间:2012-09-20 10:29:45

标签: assembly nasm

section .data
fun:
   add word[L+2],0x203
L: mov eax,0x1020304 ; this instruction including operand stored in 5 byte in memory
   ret

“有趣”的功能是什么?为什么eax会有一个新值0x1040604

1 个答案:

答案 0 :(得分:2)

好的,你有一个mov eax, 0x1020304,有一个5字节的编码(也有一个6字节的编码,但让我们忽略它)。所以它看起来像这样(记住 - 小端):

B8 04 03 02 01

其中L指的是B8而L + 2指的是03.现在如果你加上0x0203(记得 - 小端),03加到03,02加到02,所以你得到这个:

B8 04 06 04 01

这是:

mov eax, 0x01040604