02-05-2013, 01:13 PM
02-05-2013, 02:36 PM
ALmuhhnad كتب :PHP كود :function GetBValueX(RGB : Cardinal):Byte;
asm
PUSH EAX
PUSH ECX
MOV CL,BYTE PTR DS:[ESP+6]
MOV BYTE PTR DS:[ESP+4],CL
POP ECX
POP EAX
end;
أووووه ... فعلا عمل رائع و نظيف Clean
أرى أنك أحببت الأسمبلي .. و مستواك فعلا في تطور !!
-------------------------------
الدالة يمكن تطويرها أكثر و أكثر (أسرع )
[COLOR="DarkOrange"]هذه هدية مني :
[/COLOR]
PHP كود :
function GetBValueX(RGB : Cardinal):Byte;
asm
PUSH EAX
POP EAX
MOV AL,BYTE PTR DS:[ESP-2]
end;
لا أريــــد أن أحرق الفكرة .. سأقوم بوضعها عند انتهاء مدة التمرين
02-05-2013, 03:49 PM
فعلاً ... انا احببت الاسمبلي ... عندما تعرفت على عالم الهندسة العكسية الشيق والمثير 
حمستني @@ ... تعليمه واحده ... همممم ساحاول

إقتباس :و على فكرة يمكن كتابة الدالة getbvaluex باستخدام تعليمتين أو حتى باستخدام تعليمة واحدة !!!
لا أريــــد أن أحرق الفكرة .. سأقوم بوضعها عند انتهاء مدة التمرين![]()
حمستني @@ ... تعليمه واحده ... همممم ساحاول
03-05-2013, 01:36 AM
اخيراً حصلت عليها ... هههه
هل هي ما لديك ؟ ... ام لديك شيء آخر
PHP كود :
function GetBValueX(RGB : Cardinal):Byte;
asm
SAR EAX,$10
end;
هل هي ما لديك ؟ ... ام لديك شيء آخر
03-05-2013, 02:01 AM
ههههه ... لقد تحايلت !!! (sar=shr)
هناك طريقة أخرى
باستخدام تعليمة واحدة !!
لقد قمت بالتلميح للطريقة في أحد مشاركاتي في هذا الموضوع
إقتباس :- يمنع استخدام التعليمات التالية : Xor , or,shl,shr,ror,rolحل رائع و مقبول
هناك طريقة أخرى
باستخدام تعليمة واحدة !!لقد قمت بالتلميح للطريقة في أحد مشاركاتي في هذا الموضوع
03-05-2013, 06:32 AM
إقتباس :هههههههههههه ... لقد تحايلت !!! (sar=shr)هههههه ... لم اجد هذه التعليم من ضمن التعليمات الممنوع استخدامها

ساكمل التجربة بعد ان اصحو من نومي .. فمنذ الامس وانا لم انم p:
05-05-2013, 11:31 AM
حل سريع اخر...
كود :
type
TCoulor = record
case Integer of
0:(color: Dword);
1:(r,g,b,nop: byte);
end;
Var Coulor : TCoulor;
function MakeRGB(r, g, b: Byte): COLORREF;
begin
Coulor.r:=r;
Coulor.g:=g;
Coulor.b:=b;
result:=Coulor.color;
end;
function GetBValueX(RGB:Cardinal):Byte;
begin
result:=Coulor.b;
end;
function GetGValueX(RGB:Cardinal):Byte;
begin
result:=Coulor.g;
end;
function GetRValueX(RGB:Cardinal):Byte;
begin
result:=Coulor.r;
end;05-05-2013, 02:12 PM
b.m.abdelaziz كتب :حل سريع اخر...
إقتباس :- استخدام ؟؟؟؟؟؟؟؟ (لن أذكره حتى لا أحرق الفكرةهذا ما كنت أقصده)
حل صحيح و أفضل من الحل السابق

05-05-2013, 02:43 PM
انتهت مدة التمرين الحل بأول الموضوع.
05-05-2013, 03:38 PM
على فكرة أخي B.M.AbdelAziZ
ماذا لو أن المبرمج استخدم RGB بدل MakeRGB ؟؟؟
أو قام بوضع الكود التالي :
ماذا لو أن المبرمج استخدم RGB بدل MakeRGB ؟؟؟
PHP كود :
result:=Coulor.X;
PHP كود :
Var C:TColor ;
r:Byte;
begin
c:=$00503C32 ;
r:=GetRValueX(c);
end;