ly1595 发表于 2008-3-3 15:30:49

请大虾们帮忙看看这几句代码!

00401BFA|> /8B5424 18   /MOV EDX,DWORD PTR SS:
00401BFE|. |BE 0A000000   |MOV ESI,0A
00401C03|. |0FBE0411      |MOVSX EAX,BYTE PTR DS:
00401C07|. |99            |CDQ
00401C08|. |F7FE          |IDIV ESI
00401C0A|. |8B4424 18   |MOV EAX,DWORD PTR SS:
00401C0E|. |80C2 30       |ADD DL,30
00401C11|. |881401      |MOV BYTE PTR DS:,DL
00401C14|. |41            |INC ECX
00401C15|. |3BCD          |CMP ECX,EBP
00401C17|.^\7C E1         \JL SHORT SuperCli.00401BFA

请问: 如果:Edx:Eax的值为44H,那么DL的值是多少,是4吗?

先谢谢大家的帮忙!

[ 本帖最后由 ly1595 于 2008-3-3 16:42 编辑 ]

fanndy 发表于 2008-3-3 15:44:15

CDQ   Eax 的符号位 扩展到 Edx
idiv   被除数 edx:eax    商 eax余数edx

fanndy 发表于 2008-3-3 15:49:16

看样子是把字符串转换成 0-9的ASCII码~~

ly1595 发表于 2008-3-3 16:35:06

谢谢,但是好像结果怎么不对呢!~~~

ly1595 发表于 2008-3-3 16:37:11

比如:Edx:Eax的值为44H,那么DL的值是多少,是4吗?

fanndy 发表于 2008-3-3 17:19:13

00401C0E   这里 edx   不可能为44h的吧 ? 你说的是那里?
你说的是那一步??


比如:Edx:Eax的值为44H,那么DL的值是多少,是4吗?   dl为0

ly1595 发表于 2008-3-3 17:29:55

EAX值为44H,IDIV以后得出的值我就看不懂了,EAX为00000006,EDX为00000008

EAX 00000006
ECX 00000004
EDX 00000008
EBX 00000000
ESP 0012EC7C
EBP 00000008
ESI 0000000A
EDI 0012F0A8
EIP 00401C0A SuperCli.00401C0A
C 1ES 0023 32位 0(FFFFFFFF)
P 1CS 001B 32位 0(FFFFFFFF)
A 1SS 0023 32位 0(FFFFFFFF)
Z 0DS 0023 32位 0(FFFFFFFF)
S 1FS 003B 32位 7FFDD000(FFF)
T 0GS 0000 NULL
D 0
O 0LastErr ERROR_ENVVAR_NOT_FOUND (000000CB)
EFL 00000297 (NO,B,NE,BE,S,PE,L,LE)
ST0 empty 0.0
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 1.0000000000000000000
ST7 empty 1.0000000000000000000
               3 2 1 0      E S P U O Z D I
FST 4000Cond 1 0 0 0Err 0 0 0 0 0 0 0 0(EQ)
FCW 027FPrec NEAR,53掩码    1 1 1 1 1 1

ly1595 发表于 2008-3-3 17:37:08

OK,终于明白了,谢谢~
页: [1]
查看完整版本: 请大虾们帮忙看看这几句代码!