.text:00401010 _main_0 proc near ; CODE XREF: _mainj
.text:00401010
.text:00401010 var_50 = byte ptr -50h
.text:00401010 var_10 = dword ptr -10h
.text:00401010 var_C = dword ptr -0Ch
.text:00401010 var_8 = dword ptr -8
.text:00401010 var_4 = dword ptr -4
.text:00401010
.text:00401010 push ebp
.text:00401011 mov ebp, esp
.text:00401013 sub esp, 50h
.text:00401016 push ebx
.text:00401017 push esi
.text:00401018 push edi
.text:00401019 lea edi, [ebp+var_50]
.text:0040101C mov ecx, 14h
.text:00401021 mov eax, 0CCCCCCCCh
.text:00401026 rep stosd
.text:00401028 mov [ebp+var_4], 5 ; 将i赋值成5
.text:0040102F mov [ebp+var_8], 5 ; 将j赋值成5
.text:00401036 mov eax, [ebp+var_4]
.text:00401039 add eax, [ebp+var_4]
.text:0040103C add eax, [ebp+var_4]
.text:0040103F mov [ebp+var_C], eax ; 用i连加三次,将结果保存到P中。
.text:00401042 mov ecx, [ebp+var_4]
.text:00401045 add ecx, 1
.text:00401048 mov [ebp+var_4], ecx
.text:0040104B mov edx, [ebp+var_4]
.text:0040104E add edx, 1
.text:00401051 mov [ebp+var_4], edx
.text:00401054 mov eax, [ebp+var_4]
.text:00401057 add eax, 1
.text:0040105A mov [ebp+var_4], eax ; 对i连加三次1,可以看出(i++)+(i++)+(i++)是将i的三个初始值连加三次,
.text:0040105A ; 保存到结果,然后再作i自增
.text:0040105D mov ecx, [ebp+var_8]
.text:00401060 add ecx, 1
.text:00401063 mov [ebp+var_8], ecx
.text:00401066 mov edx, [ebp+var_8]
.text:00401069 add edx, 1
.text:0040106C mov [ebp+var_8], edx ; 对j先加两次1,此时的j=7
.text:0040106F mov eax, [ebp+var_8]
.text:00401072 add eax, [ebp+var_8] ; 用eax作暂存,对当前的j值进行两次相加
.text:00401075 mov ecx, [ebp+var_8]
.text:00401078 add ecx, 1
.text:0040107B mov [ebp+var_8], ecx ; j自增1
.text:0040107E add eax, [ebp+var_8]
.text:00401081 mov [ebp+var_10], eax ; 将此时的j与eax相加,并将结果保存到q中
.text:00401084 mov edx, [ebp+var_10]
.text:00401087 push edx
.text:00401088 mov eax, [ebp+var_C]
.text:0040108B push eax
.text:0040108C mov ecx, [ebp+var_8]
.text:0040108F push ecx
.text:00401090 mov edx, [ebp+var_4]
.text:00401093 push edx ; 四个参数入栈,调用
printf
.text:00401094 push offset Format ;
"i=%d,j=%d,p=%d,q=%d\n"
.text:00401099 call _printf
.text:0040109E add esp, 14h
.text:004010A1 xor eax, eax ; 调用者清栈
.text:004010A3 pop edi
.text:004010A4 pop esi
.text:004010A5 pop ebx ; 恢复寄存器值
.text:004010A6 add esp, 50h
.text:004010A9
cmp
ebp, esp
.text:004010AB call __chkesp
.text:004010B0 mov esp, ebp
.text:004010B2 pop ebp
.text:004010B3 retn
.text:004010B3 _main_0 endp