المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
إقتباس :هل اتضحت الصورة ؟
نعم هذه الفكرة ... اعرفها من كثر ما اتعامل مع الألعاب p: ... شكرا على التنبيه
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
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;
و على فكرة يمكن كتابة الدالة GetBValueX باستخدام تعليمتين أو حتى باستخدام تعليمة واحدة !!!
لا أريــــد أن أحرق الفكرة .. سأقوم بوضعها عند انتهاء مدة التمرين
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
فعلاً ... انا احببت الاسمبلي ... عندما تعرفت على عالم الهندسة العكسية الشيق والمثير
إقتباس :و على فكرة يمكن كتابة الدالة getbvaluex باستخدام تعليمتين أو حتى باستخدام تعليمة واحدة !!!
لا أريــــد أن أحرق الفكرة .. سأقوم بوضعها عند انتهاء مدة التمرين
حمستني @@ ... تعليمه واحده ... همممم ساحاول
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
اخيراً حصلت عليها ... هههه
PHP كود :
function GetBValueX(RGB : Cardinal):Byte;
asm
SAR EAX,$10
end;
هل هي ما لديك ؟ ... ام لديك شيء آخر
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
ههههه ... لقد تحايلت !!! (sar=shr)
إقتباس :- يمنع استخدام التعليمات التالية : Xor , or,shl,shr,ror,rol
حل رائع و مقبول
هناك طريقة أخرى
باستخدام تعليمة واحدة !!
لقد قمت بالتلميح للطريقة في أحد مشاركاتي في هذا الموضوع
المشاركات : 306
المواضيع 45
:
: 0
الإنتساب : Jul 2012
إقتباس :هههههههههههه ... لقد تحايلت !!! (sar=shr)
هههههه ... لم اجد هذه التعليم من ضمن التعليمات الممنوع استخدامها

ساكمل التجربة بعد ان اصحو من نومي .. فمنذ الامس وانا لم انم p:
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
حل سريع اخر...
كود :
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;
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
b.m.abdelaziz كتب :حل سريع اخر...
إقتباس :- استخدام ؟؟؟؟؟؟؟؟ (لن أذكره حتى لا أحرق الفكرة
)
هذا ما كنت أقصده
حل صحيح و أفضل من الحل السابق
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
انتهت مدة التمرين الحل بأول الموضوع.
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
على فكرة أخي B.M.AbdelAziZ
ماذا لو أن المبرمج استخدم RGB بدل MakeRGB ؟؟؟
أو قام بوضع الكود التالي :
PHP كود :
Var C:TColor ;
r:Byte;
begin
c:=$00503C32 ;
r:=GetRValueX(c);
end;