Evgeniy Kleban
Evgeniy Kleban

Reputation: 6965

Addl instruction explanation

I'm studying assembly language and can't resolve the following exercise myself.

Assume the following values are stored at the indicated memory addresses and registers:

enter image description here

Now, we have an instruction:

addl %ecx , (%eax)

For me it means - storing the result of addition of values stored in %ecx and in memory address (%eax), in a memory address (%eax).

Correct answer for that exercise is : Value 0x100 and destination address 0x100.

I understand that right operand is destination address, but how did we get value of 0x100 by the calculation %ecx + (%eax)?

Upvotes: 3

Views: 22949

Answers (1)

David Hoelzer
David Hoelzer

Reputation: 16381

First, I hate AT&T syntax, which is what you have here... that aside.

EAX contains 0x100. 0x100 has the value 0xFF in it.

ECX contains 0x1.

0x1 + 0xFF = 0x100. So far so good.

The final result is then placed into the address pointed to by EAX. Therefore, (0X100) == 0x100

I think you were most of the way there.

Upvotes: 7

Related Questions