Assembly 它在这个汇编代码中做什么?

Assembly 它在这个汇编代码中做什么?,assembly,x86,disassembly,Assembly,X86,Disassembly,我是汇编语言新手,我想知道下面的代码是做什么的: Address Hex dump Command 01356A60 /$ 53 PUSH EBX 01356A61 |. 8BD9 MOV EBX,

我是汇编语言新手,我想知道下面的代码是做什么的:

Address   Hex dump          Command                                                        
01356A60  /$  53            PUSH EBX                                                            
01356A61  |.  8BD9          MOV EBX,ECX
01356A63  |.  8B43 04       MOV EAX,DWORD PTR DS:[EBX+4]
01356A66  |.  56            PUSH ESI
01356A67  |.  8B70 10       MOV ESI,DWORD PTR DS:[EAX+10]
01356A6A  |.  85F6          TEST ESI,ESI
01356A6C  |.- 74 5B         JZ SHORT 01356AC9
01356A6E  |.  8BC6          MOV EAX,ESI
01356A70  |.  8D50 01       LEA EDX,[EAX+1]
01356A73  |>  8A08          /MOV CL,BYTE PTR DS:[EAX]
01356A75  |.  40            |INC EAX
01356A76  |.  84C9          |TEST CL,CL
01356A78  |.- 75 F9         \JNZ SHORT 01356A73
01356A7A  |.  2BC2          SUB EAX,EDX
01356A7C  |.  57            PUSH EDI
01356A7D  |.  8BF8          MOV EDI,EAX
01356A7F  |.- 74 47         JZ SHORT 01356AC8
我能理解的是,运行这部分代码时,在
EAX
处有例如“abcdefg”,在
EDX
处有“bcdefg”(没有第一个字母的相同字符串),并且在循环期间,
EAX
每次递增一个字母…但例如
MOV CL,BYTE PTR DS:[EAX]
,它的目标是什么?有没有像我这样的新手看不到的模式代码


提前感谢

有一种模式,叫做“汇编程序”。如果您需要就个别说明寻求帮助,那么您还没有准备好承担全部功能

MOV-CL,字节PTR-DS:[EAX]“,它的目标是什么

目标是将存储在
ds:[eax]
中的地址上的字节加载到8位寄存器
cl

通常,单个指令没有“目标”。较大的上下文表明循环是查找以零结尾的字符串的结尾。正如您(希望)看到的,查找到的“结尾”然后,将
eax
中字符串的长度减去
edx
——字符串的开头,并将指向字符串结尾的指针减去开头,得到字符串长度。在那之后,该示例删除了(可能)一个设置例程以进行进一步处理