-
-
[旧帖]
[求助]遇到个极其恶心的问题,求解
0.00雪花
-
发表于:
2009-9-29 12:02
3860
-
[旧帖] [求助]遇到个极其恶心的问题,求解
0.00雪花
00409042 /$ 31C0 xor eax, eax
00409044 |. 31D2 xor edx, edx
00409046 |> AC /lods byte ptr [esi]
取输入的一位,我输入的是“11111”,EAX值变为00000001
00409047 |. 2C 3A |sub al, 3A
00409049 |. 04 0A |add al, 0A
这两行,执行后,EAX仍然为1,但我用计算机算,不是得00000001,这是怎么回事啊 ???
0040904B |. 73 0F |jnb short 0040905C
跳转没实现
0040904D |. DA0D 74214500 |fimul dword ptr [452174]
st(o)初值为0,452174处的值是0000000A也就是十进制的10,执行完后,ST(0)仍为零
00409053 |. 8945 F4 |mov dword ptr [ebp-C], eax
EAX值为00000001,传入[ebp-c]
00409056 |. DA45 F4 |fiadd dword ptr [ebp-C]
执行,0+1赋给st(0),st(0)为1.0
00409059 |. 42 |inc edx
0040905A |.^ EB EA \jmp short 00409046
跳回去取,“11111”的第二位;跳回去,再执行到这里的时候就出问题了,本来应该是1.0*10+1=11的,但执行到这里的时候ST(0)却变成了76.000,太奇怪了,求解惑
0040905C |> 4E dec esi
0040905D \. C3 retn
此程序来自天草汇编教程,已上传
Project1.rar
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)