0x08048354 : push ebp 0x08048355 : mov ebp,esp 0x08048357 : sub esp,0x18 0x0804835a : and esp,0xfffffff0 0x0804835d : mov eax,0x0 0x08048362 : sub esp,eax 0x08048364 : mov DWORD PTR [ebp-4],0x1 puts the value 0x1 (1) into "DWORD PTR [ebp-4]" which is our first variable also known as a 0x0804836b : mov DWORD PTR [ebp-8],0x1 puts the value 0x1 (1) into "DWORD PTR [ebp-b]" which is our second variable also known as b 0x08048372 : mov eax,DWORD PTR [ebp-8] moves the value of DWORD PTR [ebp-8](b) into eax the value is also known as 1 0x08048375 : add eax,DWORD PTR [ebp-4] adds the value of DWORD PTR [ebp-4](a) into eax, eax now has a total value of 2 0x08048378 : mov DWORD PTR [ebp-12],eax moves the value of eax (which is 2) into DWORD PTR [ebp-12] which is our third variable also known as c c now contains the value 2 0x0804837b : leave 0x0804837c : ret 0x0804837d : nop 0x0804837e : nop 0x0804837f : nop real code: #include main() { int a; //DWORD PTR [ebp-4] int b; //DWORD PTR [ebp-8] int c; //DWORD PTR [ebp-12] a=1; //mov DWORD PTR [ebp-4],0x1 b=1; //mov DWORD PTR [ebp-8],0x1 //mov eax,DWORD PTR [ebp-8] //add eax,DWORD PTR [ebp-4] c = a+b; //mov DWORD PTR [ebp-12],eax }