Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Addl instruction explanation

Tags:

x86

assembly

att

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)?

like image 591
Evgeniy Kleban Avatar asked Dec 06 '25 17:12

Evgeniy Kleban


1 Answers

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.

like image 172
David Hoelzer Avatar answered Dec 08 '25 23:12

David Hoelzer