الفريق العربي للهندسة العكسية

نسخة كاملة : دالة FastCompareMem
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
SMP3 كتب : [ -> ]السلام عليكم و رحمة الله و بركاته

دالة FastCompareMem مكتوبة بالأسمبلي لمقارنة متغيرين في الذاكرة (مقارنة مؤشرين) ..

ترجع الدالة بالقيمة True ان كانت المقارنة ايجابية (P1=P2)

ترجع الدالة بالقيمة False ان كانت المقارنة سلبية (P1<>P2)
function FastCompareMem(P1, P2: Pointer; Length: Integer): Boolean;
asm
 PUSH ESI
 MOV EAX,[EAX]
 MOV EDX,[EDX]
 MOV ESI,ECX
@NEXTCOMP:
 MOV CL,[EAX]
 MOV CH,[EDX]
 INC EAX
 INC EDX
 CMP CL,CH
 JNE @FALSE
 DEC ESI
 JNE @NEXTCOMP
 JMP @TRUE
@FALSE:
 MOV EAX,FALSE
 JMP @FIN
@TRUE:
 MOV EAX,TRUE
@FIN:
 POP ESI
end;


rose
يعطيك العافية اخي خالد

ممكن ايضا استخدام
 
MOV ESI, [EAX]
MOV EDI, [EDX]
MOV ECX, LEN
CLD
REPE CMPSB