Addl指令解释

Evg*_*ban 3 x86 assembly att

我正在学习汇编语言,无法自己解决以下练习。

假设以下值存储在指定的内存地址和寄存器中:

在此输入图像描述

现在,我们有一条指令:

addl %ecx , (%eax)

对我来说,这意味着 - 将存储在 %ecx 和内存地址 (%eax) 中的值相加的结果存储在内存地址中(%eax)

该练习的正确答案是:值 0x100 和目标地址 0x100。

我知道正确的操作数是目标地址,但是我们如何0x100通过计算%ecx+获得值(%eax)

Dav*_*zer 7

首先,我讨厌 AT&T 语法,这就是你这里的语法……除此之外。

EAX包含0x100. 0x100有它的价值0xFF

ECX包含0x1.

0x1 + 0xFF = 0x100。到目前为止,一切都很好。

然后将最终结果放入 指向的地址中EAX。所以,(0X100) == 0x100

我想你大部分时间都在那里。