[تمرين] : عمل محاكاة للدالة rgb
#31
إقتباس :هل اتضحت الصورة ؟
نعم هذه الفكرة ... اعرفها من كثر ما اتعامل مع الألعاب p: ... شكرا على التنبيه
الرد
#32
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 Smile
أرى أنك أحببت الأسمبلي .. و مستواك فعلا في تطور !!
-------------------------------
الدالة يمكن تطويرها أكثر و أكثر (أسرع ) Smile

[COLOR="DarkOrange"]هذه هدية مني :
[/COLOR]
PHP كود :
function GetBValueX(RGB : Cardinal):Byte;
asm
  PUSH EAX
  POP EAX
  MOV AL
,BYTE PTR DS:[ESP-2]
end; 
و على فكرة يمكن كتابة الدالة GetBValueX باستخدام تعليمتين أو حتى باستخدام تعليمة واحدة !!!
لا أريــــد أن أحرق الفكرة .. سأقوم بوضعها عند انتهاء مدة التمرين Smile
الرد
#33
فعلاً ... انا احببت الاسمبلي ... عندما تعرفت على عالم الهندسة العكسية الشيق والمثير Smile

إقتباس :و على فكرة يمكن كتابة الدالة getbvaluex باستخدام تعليمتين أو حتى باستخدام تعليمة واحدة !!!
لا أريــــد أن أحرق الفكرة .. سأقوم بوضعها عند انتهاء مدة التمرين Smile

حمستني @@ ... تعليمه واحده ... همممم ساحاول
الرد
#34
اخيراً حصلت عليها ... هههه
PHP كود :
function GetBValueX(RGB : Cardinal):Byte;
asm
  SAR EAX
,$10
end
; 

هل هي ما لديك ؟ ... ام لديك شيء آخر
الرد
#35
ههههه ... لقد تحايلت !!! (sar=shr)
إقتباس :- يمنع استخدام التعليمات التالية : Xor , or,shl,shr,ror,rol
حل رائع و مقبول Smile
هناك طريقة أخرى Smile باستخدام تعليمة واحدة !!

لقد قمت بالتلميح للطريقة في أحد مشاركاتي في هذا الموضوع
الرد
#36
إقتباس :هههههههههههه ... لقد تحايلت !!! (sar=shr)
هههههه ... لم اجد هذه التعليم من ضمن التعليمات الممنوع استخدامها Smile
ساكمل التجربة بعد ان اصحو من نومي .. فمنذ الامس وانا لم انم p:
الرد
#37
حل سريع اخر...
كود :
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;
الرد
#38
b.m.abdelaziz كتب :حل سريع اخر...

إقتباس :- استخدام ؟؟؟؟؟؟؟؟ (لن أذكره حتى لا أحرق الفكرة Smile )
هذا ما كنت أقصده Smile
حل صحيح و أفضل من الحل السابق Smile
الرد
#39
انتهت مدة التمرين الحل بأول الموضوع.
الرد
#40
على فكرة أخي B.M.AbdelAziZ
ماذا لو أن المبرمج استخدم RGB بدل MakeRGB ؟؟؟
PHP كود :
result:=Coulor.X; 
أو قام بوضع الكود التالي :
PHP كود :
Var C:TColor ;
r:Byte; 
begin
c
:=$00503C32 ;
r:=GetRValueX(c); 
end; 
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم