下面汇编代码有些不能通过DELPHI编译,请高手们帮我转一下过来能通过DELPHI编译,谢谢!Procedure PlayerNames; stdcall;
begin
asm
mov esi, MonsterBaseAddr
mov ecx, MonsterMaxNunber
cld
.repeat
lodsd
test eax, eax
jz _DPI_Exit
mov PlayerAddress, eax
.if word ptr[eax] != 0
add eax, PlayerNameOffset
mov PlayerNameAddress, eax
pushad
invoke lstrlen, eax
mov ecx, eax
cld
mov al, '('
mov edi, PlayerNameAddress
.if ShowMode == 1
repne scasb
jz @F
stosb
@@:
call WritePlayerInfo .else
repne scasb
jnz @F
mov byte ptr[edi-1], 0
@@:
.endif
_DPI_1:
popad
.endif
.untilcxz
end;
end;Procedure WritePlayerInfo; stdcall;
begin
asm
mov edx, PlayerAddress
movzx eax, word ptr[edx + PLAYERDENGJIOFFSET]
invoke Dd2DecAuto, edi, eax
invoke lstrcat, PlayerNameAddress, addr szDengjiTemp
invoke lstrlen, PlayerNameAddress
add eax, PlayerNameAddress
mov edi, eax
mov esi, PlayerAddress
add esi, PLAYERMENPAIOFFSET
lodsb
.if al == 0
mov ax, 0A1D0h
stosw
.elseif al == 1
mov ax, 0FDD5h
stosw
.elseif al == 2
mov ax, 0B0D0h
stosw
.endif
mov esi, PlayerAddress
add esi, PLAYERZHIYEOFFSET
lodsb
.if al == 1
mov ax, 0B6B5h
stosw
.elseif al == 2
mov ax, 0A3BDh
stosw
.elseif al == 3
mov ax, 0B9C7h
stosw
.elseif al == 4
mov ax, 0ADB9h
stosw
.elseif al == 5
mov ax, 0BDD2h
stosw
.elseif al == 6
mov ax, 0CCB4h
stosw
.endif
mov al,')'
stosb
end;
end;
begin
asm
mov esi, MonsterBaseAddr
mov ecx, MonsterMaxNunber
cld
.repeat
lodsd
test eax, eax
jz _DPI_Exit
mov PlayerAddress, eax
.if word ptr[eax] != 0
add eax, PlayerNameOffset
mov PlayerNameAddress, eax
pushad
invoke lstrlen, eax
mov ecx, eax
cld
mov al, '('
mov edi, PlayerNameAddress
.if ShowMode == 1
repne scasb
jz @F
stosb
@@:
call WritePlayerInfo .else
repne scasb
jnz @F
mov byte ptr[edi-1], 0
@@:
.endif
_DPI_1:
popad
.endif
.untilcxz
end;
end;Procedure WritePlayerInfo; stdcall;
begin
asm
mov edx, PlayerAddress
movzx eax, word ptr[edx + PLAYERDENGJIOFFSET]
invoke Dd2DecAuto, edi, eax
invoke lstrcat, PlayerNameAddress, addr szDengjiTemp
invoke lstrlen, PlayerNameAddress
add eax, PlayerNameAddress
mov edi, eax
mov esi, PlayerAddress
add esi, PLAYERMENPAIOFFSET
lodsb
.if al == 0
mov ax, 0A1D0h
stosw
.elseif al == 1
mov ax, 0FDD5h
stosw
.elseif al == 2
mov ax, 0B0D0h
stosw
.endif
mov esi, PlayerAddress
add esi, PLAYERZHIYEOFFSET
lodsb
.if al == 1
mov ax, 0B6B5h
stosw
.elseif al == 2
mov ax, 0A3BDh
stosw
.elseif al == 3
mov ax, 0B9C7h
stosw
.elseif al == 4
mov ax, 0ADB9h
stosw
.elseif al == 5
mov ax, 0BDD2h
stosw
.elseif al == 6
mov ax, 0CCB4h
stosw
.endif
mov al,')'
stosb
end;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货