0041D1C2 |> /8B4C24 20 /MOV ECX,DWORD PTR SS:[ESP+20]从串中取字符
0041D1C6 |> |8A01 MOV AL,BYTE PTR DS:[ECX] 放入al
0041D1C8 |. |3C 30 |CMP AL,30
0041D1CA |. |7C 08 |JL SHORT Server.0041D1D4 小于‘1’则跳
0041D1CC |. |3C 39 |CMP AL,39
0041D1CE |. |7F 04 |JG SHORT Server.0041D1D4 大于‘9’跳
0041D1D0 |. |2C 30 |SUB AL,30 是数字-30
0041D1D2 |. |EB 0E |JMP SHORT Server.0041D1E2
0041D1D4 |> |3C 41 |CMP AL,41 小于‘A’跳
0041D1D6 |. |7C 08 |JL SHORT Server.0041D1E0
0041D1D8 |. |3C 5A |CMP AL,5A 大于‘Z’跳
0041D1DA |. |7F 04 |JG SHORT Server.0041D1E0
0041D1DC |. |2C 37 |SUB AL,37 是大写字母-37
0041D1DE |. |EB 02 |JMP SHORT Server.0041D1E2
0041D1E0 |> |32C0 |XOR AL,AL
0041D1E2 |> |0FB6C0 |MOVZX EAX,AL
0041D1E5 |. |99 |CDQ
0041D1E6 |. |41 |INC ECX
0041D1E7 |. |894C24 20 |MOV DWORD PTR SS:[ESP+20],ECX
0041D1EB |. |B9 06000000 |MOV ECX,6
0041D1F0 |. |F7F9 |IDIV ECX 除6
0041D1F2 |. |BD 24000000 |MOV EBP,24
0041D1F7 |. |8BD8 |MOV EBX,EAX
0041D1F9 |. |8BCA |MOV ECX,EDX
0041D1FB |. |8BC6 |MOV EAX,ESI
0041D1FD |. |99 |CDQ
0041D1FE |. |F7FD |IDIV EBP
0041D200 |. |8AC1 |MOV AL,CL
0041D202 |. |04 06 |ADD AL,6
0041D204 |. |B1 06 |MOV CL,6
0041D206 |. |F6E9 |IMUL CL
0041D208 |. |8BCD |MOV ECX,EBP
0041D20A |. |2AC2 |SUB AL,DL
0041D20C |. |02C3 |ADD AL,BL
0041D20E |. |0FB6C0 |MOVZX EAX,AL
0041D211 |. |99 |CDQ
0041D212 |. |F7F9 |IDIV ECX
0041D214 |. |84D2 |TEST DL,DL
0041D216 |. |7C 0A |JL SHORT Server.0041D222 小于0则跳
0041D218 |. |80FA 0A |CMP DL,0A
0041D21B |. |7D 0A |JGE SHORT Server.0041D227 大于a跳
0041D21D |. |80C2 30 |ADD DL,30 否则加30
0041D220 |. |EB 11 |JMP SHORT Server.0041D233 退出运算
0041D222 |> |80FA 0A |CMP DL,0A
0041D225 |. |7C 0A |JL SHORT Server.0041D231 小于a跳
0041D227 |> |80FA 24 |CMP DL,24
0041D22A |. |7D 05 |JGE SHORT Server.0041D231 大于24跳
0041D22C |. |80C2 37 |ADD DL,37 否则加37
0041D22F |. |EB 02 |JMP SHORT Server.0041D233 退出运算
0041D231 |> |B2 5A |MOV DL,5A 小于a则dl=5a
0041D233 |> |8B6C24 10 |MOV EBP,DWORD PTR SS:[ESP+10]
0041D237 |. |8B4424 14 |MOV EAX,DWORD PTR SS:[ESP+14]
0041D23B |. |88142F |MOV BYTE PTR DS:[EDI+EBP],DL把字符保存
0041D23E |. |47 |INC EDI
0041D23F |. |83C6 03 |ADD ESI,3
0041D242 |. |3BF8 |CMP EDI,EAX 字符串是否转换完毕
0041D244 |.^\0F8C 78FFFFFF \JL Server.0041D1C2 没有则跳到开头
这段算法前面和结尾我都能看懂,但中间用到乘法和除法,以及商和余数的运算我就看不懂了,请大家解说一下,这个算法可逆吗?逆运算的流程又是怎样呢?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!