当前位置:首页 > 正文

谁能帮我解释一下这段汇编代码

作者:晨曦发布时间:2023-02-01浏览:460


PUSH EBX
PUSH ESI
PUSH EDI ;保存EBX,ESI,EDI寄存器
MOV ESI,EAX
MOV EDI,EDX ; edi<-edx,esi<-eax,由此可以知道该函数的输入值在eax,edx中
CMP EAX,EDX
JE L071 ; 如果输入值相等,函数结束
TEST ESI,ESI
JE L055 ;如果esi为零,到LO55
TEST EDI,EDI
JE L058 ;如果edi为零,到L058
MOV EAX,DWORD PTR DS:[ESI-4] ;如果esi,edi都不为零
MOV EDX,DWORD PTR DS:[EDI-4] ;重新给eax,edx赋值
;(eax<-[esi-4]),(edx<-[edi-4])
SUB EAX,EDX ;eax=eax-edx
JA L016 ;如果eax<edx,edx=edx+eax,否则去l016
ADD EDX,EAX
L016:
PUSH EDX ;保存edx
SHR EDX,2 ;右移2位
JE L036 ;如果为0,去l036
L019:
MOV ECX,DWORD PTR DS:[ESI]
MOV EBX,DWORD PTR DS:[EDI]
CMP ECX,EBX ;如果ebx<>ecx,去LO61
JNZ L061
DEC EDX
JE L034
MOV ECX,DWORD PTR DS:[ESI+4]
MOV EBX,DWORD PTR DS:[EDI+4]
CMP ECX,EBX
JNZ L061
ADD ESI,8
ADD EDI,8
DEC EDX
JNZ L019
JMP L036
L034:
ADD ESI,4
ADD EDI,4
L036:
POP EDX
AND EDX,3
JE L053
MOV ECX,DWORD PTR DS:[ESI]
MOV EBX,DWORD PTR DS:[EDI]
CMP CL,BL
JNZ L071
DEC EDX
JE L053
CMP CH,BH
JNZ L071
DEC EDX
JE L053
AND EBX,0FF0000
AND ECX,0FF0000
CMP ECX,EBX
JNZ L071
L053:
ADD EAX,EAX
JMP L071
L055:
MOV EDX,DWORD PTR DS:[EDI-4]
SUB EAX,EDX
JMP L071
L058:
MOV EAX,DWORD PTR DS:[ESI-4]
SUB EAX,EDX
JMP L071
L061:
POP EDX
CMP CL,BL
JNZ L071
CMP CH,BH
JNZ L071
SHR ECX,10
SHR EBX,10
CMP CL,BL ;junk code
JNZ L071 ;junk code
CMP CH,BH ;junk code
L071:
POP EDI ;恢复寄存器
POP ESI
POP EBX
RETN
不想说什么了,太乱了。帮你翻了一点,郁闷
什么程序啊,一片混乱。懒得玩了


声明:部分资源转载自互联网,转载目的在于传递更多知识,并不代表本网赞同其观点和对其真实性负责。如有侵权或者知识有谬误之处,麻烦通知删除,谢谢!联系方式: zzsla2022#163.com