Pregunta, que hace la función (test bl,bl).
test x,y equivale a if(x&y), en el caso test bl,bl , se compara que bl sea distinto de 0 y se guarda el resultado en las banderas del procesador...
el algoritmo que compara si el serial es valido, seria
cmp byte ptr [eax+02], 31
en realidad son todos los
cmp byte ptr [eax+X], Yy el
cmp esi, 00000007y si es asi, esa operación, como se explica el funcionamiento... :S ( estoy entendiendo de a poco, en la facu recien empezamos con assembler y me la vuela bastante...
)
el serial que coloques se almacena en el registro del acumulador (eax) y mediante los índices se puede ir recorriendo cada caracter:
key: hola
byte [eax]='h'
byte [eax+1]='o'
byte [eax+2]='l'
byte [eax+3]='a'
con:
cmp byte ptr [eax+X], Y
se compara cada uno de los caracteres con Y1,Y2,...,Yn
si son iguales se incremente el registro esi... y si:
cmp esi, 00000007 <- los siete carateres coinciden(fíjate que hay 7 comparaciones en el código)
sete bl <- serial válido
S2