干得好:
esi显然是指向某个长度缓冲区的指针ecx
LOOP:
mov al, byte [esi] ; read byte from memory pointed by esi into low bits of eax
and eax, 0xff ; mask eax with 0xff
mul ebx ; multiply eax with ebx (wherever ebx came from...)
; put result in eax
inc esi ; increment buffer pointer
add edi, eax ; add eax to edi (whereever edi came from)
inc ebx ; increment ebx
dec ecx ; decrement ecx (which is probably some counter)
jne LOOP ; jump to LOOP if ecx is different from 0
但是如果没有任何上下文信息,很难判断这段代码实际上在做什么。
等效的 C 代码大致执行以下操作:
char *esi; // points to some buffer...
int ebx; // contains some value
int edi; // contains some value
int ecx; // some counter, presubably the length of the buffer pointed by esi
...
do
{
edi += *esi++ * ebx++;
} while (--ecx != 0)
您需要学习 x86 汇编的基础知识。