.. _hw_mem_map: Homework - x86 Assembly Language =============================================== Decompile the following assembly language code to the original C code. You may to draw a memory map as an aid. :: .sect .text; .sect .rom; .sect .data; .sect .bss .extern _main .sect .text _main: push ebp mov ebp,esp push 3 call _f pop ecx push eax push I_1 call _printf pop ecx pop ecx xor eax,eax leave ret .sect .rom I_1: .extern _f .data4 680997 # ASCII for "%d\n" .sect .text _f: push ebp mov ebp,esp push esi cmp 8(ebp),1 jg I2_4 mov esi,1 jmp I2_5 I2_4: mov edx,8(ebp) dec edx push edx call _f pop ecx mov edx,8(ebp) sub edx,2 push eax push edx call _f pop ecx pop esi add esi,eax I2_5: mov eax,esi pop esi leave ret