【发布时间】:2015-08-10 09:58:35
【问题描述】:
我正在学习汇编语言,但无法自己解决以下练习。
假设以下值存储在指定的内存地址和寄存器中:
现在,我们有一个指令:
addl %ecx , (%eax)
对我来说,这意味着 - 将存储在 %ecx 和内存地址 (%eax) 中的值相加的结果存储在内存地址 (%eax) 中。
该练习的正确答案是: 值 0x100 和目标地址 0x100。
我知道正确的操作数是目标地址,但是我们如何通过计算%ecx + (%eax) 得到0x100 的值?
【问题讨论】:
-
该指令看起来像是一条具有 AT&T 语法的 intel 指令(这将有助于在问题中定义它,因为否则操作数是相反的!)。这意味着 0x01(ecx 的值)被添加到地址 0x100 处已经存在的 0xFF。有什么问题?
-
@Damon 我现在明白了,谢谢!我的问题是我试图添加 0x100 + 0x1