الفريق العربي للهندسة العكسية
دالة FastCompareMem - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html)
+--- قسم : البرمجة بلغة باسكال و الدلفي - Pascal & Delphi (https://www.at4re.net/f/forum-18.html)
+--- الموضوع : دالة FastCompareMem (/thread-3293.html)



دالة FastCompareMem - TeRcO - 16-09-2022

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


RE: دالة FastCompareMem - ExCodeMaker - 16-09-2022

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

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