一段汇编程序的翻译问题
程序的源代码如下,想翻译成高级语言,C,C++,PASCAL均可,其他语言也行。主要是里面的两个循环我搞不明白,请前辈们指点一下!
push -1
push 0043D64F ; SE 处理程序安装
mov eax, dword ptr fs:[0]
push eax
mov dword ptr fs:[0], esp
sub esp, 1C
push ebx
push esi
push edi
mov dword ptr [esp+14], 0
lea ecx, dword ptr [esp+3C]
mov dword ptr [esp+30], 1
call <jmp.&MFC42.#4204_CString::MakeUpper>
mov edi, dword ptr [esp+3C]
xor esi, esi
xor cl, cl
cmp esi, 10
mov byte ptr [esp+C], cl
mov eax, esi
jge short 004284E6
mov dl, byte ptr [eax+edi]
add cl, dl
inc eax
cmp eax, 10
jl short 004284D7
mov byte ptr [esp+C], cl
mov eax, dword ptr [esp+C]
and eax, 0FF
cdq
xor eax, edx
sub eax, edx
and eax, 0F
xor eax, edx
sub eax, edx
mov byte ptr [esp+esi+18], al
inc esi
cmp esi, 10
jl short 004284CA
mov ecx, 0F
xor al, al
mov edx, ecx
test ecx, ecx
mov byte ptr [esp+C], al
jl short 00428523
mov bl, byte ptr [esp+edx+18]
add al, bl
dec edx
jns short 00428516
mov byte ptr [esp+C], al
mov eax, dword ptr [esp+C]
and eax, 0FF
cdq
xor eax, edx
sub eax, edx
and eax, 0F
xor eax, edx
sub eax, edx
mov byte ptr [esp+ecx+18], al
dec ecx
jns short 0042850A
lea ecx, dword ptr [esp+10]
call <jmp.&MFC42.#540_CString::CString>
mov bl, 2
xor esi, esi
mov byte ptr [esp+30], bl
lea ecx, dword ptr [esp+C]
call <jmp.&MFC42.#540_CString::CString>
xor eax, eax
lea ecx, dword ptr [esp+C]
mov al, byte ptr [esp+esi+18]
mov byte ptr [esp+30], 3
push eax
push 0045108C
push ecx
call <jmp.&MFC42.#2818_CString::Format>
add esp, 0C
lea edx, dword ptr [esp+C]
lea ecx, dword ptr [esp+10]
push edx
call <jmp.&MFC42.#939_CString::operator+=>
lea ecx, dword ptr [esp+C]
mov byte ptr [esp+30], bl
call <jmp.&MFC42.#800_CString::~CString>
inc esi
cmp esi, 10
jl short 00428550
mov esi, dword ptr [esp+38]
lea eax, dword ptr [esp+10]
push eax
mov ecx, esi
call <jmp.&MFC42.#535_CString::CString>
mov dword ptr [esp+14], 1
lea ecx, dword ptr [esp+10]
mov byte ptr [esp+30], 1
call <jmp.&MFC42.#800_CString::~CString>
lea ecx, dword ptr [esp+3C]
mov byte ptr [esp+30], 0
call <jmp.&MFC42.#800_CString::~CString>
mov ecx, dword ptr [esp+28]
mov eax, esi
pop edi
pop esi
mov dword ptr fs:[0], ecx
pop ebx
add esp, 28
retn