自己做了一個C程序,從C轉匯編,希望對你有用:
#include <stdio.h>
#include <stdlib.h>
void main()
{
char mon[12][4];
sprintf(mon[0],"%s", "Jan\0");
sprintf(mon[1],"%s", "Feb\0");
sprintf(mon[2],"%s", "Mar\0");
sprintf(mon[3],"%s", "Apr\0");
sprintf(mon[4],"%s", "May\0");
sprintf(mon[5],"%s", "Jun\0");
sprintf(mon[6],"%s", "Jul\0");
sprintf(mon[7],"%s", "Aug\0");
sprintf(mon[8],"%s", "Sep\0");
sprintf(mon[9],"%s", "Oct\0");
sprintf(mon[10],"%s", "Nov\0");
sprintf(mon[11],"%s", "Dec\0");
int a = getchar()-48;
int b = getchar()-48;
a = a*10 + b;
if(a<=12)
{
printf(mon[a-1]);
}
}
匯編:
push ebp
mov ebp,esp
sub esp,114h
push ebx
push esi
push edi
lea edi,[ebp-114h]
mov ecx,45h
mov eax,0CCCCCCCCh
rep stos dword ptr es:[edi]
mov eax,dword ptr [___security_買粉絲okie (417000h)]
xor eax,ebp
mov dword ptr [ebp-4],eax
mov esi,esp
push offset string "Jan\0" (415A20h)
push offset string "%s" (415820h)
lea eax,[ebp-38h]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offset string "Feb\0" (415810h)
push offset string "%s" (415820h)
lea eax,[ebp-34h]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offset string "Mar\0" (415A18h)
push offset string "%s" (415820h)
lea eax,[ebp-30h]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offset string "May" (415808h)
push offset string "%s" (415820h)
lea eax,[ebp-2Ch]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offset string "May\0" (415A10h)
push offset string "%s" (415820h)
lea eax,[ebp-28h]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offset string "Jul" (4157B0h)
push offset string "%s" (415820h)
lea eax,[ebp-24h]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offset string "Jul\0" (415A08h)
push offset string "%s" (415820h)
lea eax,[ebp-20h]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offset string "Aug\0" (4157A8h)
push offset string "%s" (415820h)
lea eax,[ebp-1Ch]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offset string "Sep\0" (415A00h)
push offset string "%s" (415820h)
lea eax,[ebp-18h]
push eax
call dword ptr [__imp__sprintf (4182C8h)]
add esp,0Ch
cmp esi,esp
call @ILT+310(__RTC_CheckEsp) (41113Bh)
mov esi,esp
push offse