一段汇编程序的翻译问题

huixch 2009-09-01 11:14:18
程序的源代码如下,想翻译成高级语言,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
...全文
121 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
startstartsvip 2009-09-02
  • 打赏
  • 举报
回复
同上
whg01 2009-09-02
  • 打赏
  • 举报
回复
反汇编出来的,程序还用的MFC。你自己写个MFC的工程,然后反汇编看看。自然就明白了。
Lochan 2009-09-02
  • 打赏
  • 举报
回复
我头晕..
快..
120
fiveyes 2009-09-02
  • 打赏
  • 举报
回复
虽然俺的汇编是非常非常的菜,可是俺觉得吧,这像是一段反汇编的程序?那么跳转的目标地址是不是在不同的机器上运行时,都不同呢?而且得知道每一行代码的地址,才能知道004284E6到底是哪一行代码吧?

说错了请指正啊
oLINo 2009-09-02
  • 打赏
  • 举报
回复
这个,真没有
冻结 2009-09-02
  • 打赏
  • 举报
回复
My God!
ttklboy 2009-09-02
  • 打赏
  • 举报
回复
如果只有二十行的话……可以考虑帮忙……但这个……实在是太长了……
fox000002 2009-09-02
  • 打赏
  • 举报
回复
连行编号都没有,都不知道跳到哪去了
healer_kx 2009-09-01
  • 打赏
  • 举报
回复
我靠,难为死我们了~
hoomey 2009-09-01
  • 打赏
  • 举报
回复
好长啊

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧