CPU Disasm
地址 十六进制数据 汇编代码 注释
00401C1E . B9 00E1F505 mov ecx,5F5E100 ; 循环终止值
00401C23 . BA 01000000 mov edx,1 ; 1
00401C28 . 33C0 xor eax,eax ; 循环变量起始清零
00401C2A > 3BC1 cmp eax,ecx ; 比较循环变量与终止值,循环体开始
00401C2C . 7F 1C jg short 00401C4A ; 是否跳出循环
00401C2E . 3BFE cmp edi,esi ; 是否小于零
00401C30 . 7D 0A jge short 00401C3C ; 小于零跳
00401C32 . 8BDF mov ebx,edi ; EDT到EBX
00401C34 . F7DB neg ebx ; 求补指令,相当于0-这个数
00401C36 . 0F80 33020000 jo 00401E6F ; 是否溢出
00401C3C > 8BDA mov ebx,edx
00401C3E . 03D8 add ebx,eax ; 计算循环变量
00401C40 . 0F80 29020000 jo 00401E6F ; 是否溢出
00401C46 . 8BC3 mov eax,ebx ; 保存循环变量
00401C48 .^ EB E0 jmp short 00401C2A
CPU Disasm
地址 十六进制数据 汇编代码 注释
00401CAD > /8B4D E8 mov ecx,dword ptr [ebp-18] ; 循环计数读到 ecx中
00401CB0 . |B8 00E1F505 mov eax,5F5E100 ; 循环终值读到 eax中
00401CB5 . |3BC8 cmp ecx,eax ; 比较是否到达循环次数
00401CB7 . |7F 22 jg short 00401CDB ; 达到循环次数跳循环外
00401CB9 . |8B4D E4 mov ecx,dword ptr [ebp-1C] ; b = a
00401CBC . |85C9 test ecx,ecx ; 测试
00401CBE . |7D 06 jge short 00401CC6 ; 符号为零,则跳转
00401CC0 . |FF15 1C104000 call dword ptr [<&MSVBVM60.__vbaI4Abs>] ; 调用 abs 函数,没跟入
00401CC6 > |8B4D E8 mov ecx,dword ptr [ebp-18] ; 循环计数读到ECX中
00401CC9 . |B8 01000000 mov eax,1 ; 把1放到EAX中
00401CCE . |03C1 add eax,ecx ; EAX+ECX
00401CD0 . |0F80 99010000 jo 00401E6F ; 加法是否溢出,溢出跳出错
00401CD6 . |8945 E8 mov dword ptr [ebp-18],eax ; 循环结果放内存
00401CD9 .^\EB D2 jmp short 00401CAD ; 返回去循环
CPU Disasm
地址 十六进制数据 汇编代码 注释
00401D49 . B9 00E1F505 mov ecx,5F5E100 ; 循环终值
00401D4E . 33C0 xor eax,eax ; 清零eax
00401D50 > 3BC1 cmp eax,ecx ; 比较循环变量,ECX中终止值
00401D52 . 7F 11 jg short 00401D65 ; 跳出循环
00401D54 . BA 01000000 mov edx,1 ; edx 放1
00401D59 . 03D0 add edx,eax ; 循环变量+1
00401D5B . 0F80 0E010000 jo 00401E6F ; 是否溢出
00401D61 . 8BC2 mov eax,edx ; 保存循环变量
00401D63 .^ EB EB jmp short 00401D50 ; 继续循环,天哪,赋值命令去哪了