الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى الاسمبلى ؟

مغلق
بدأه Nokia_2006 في 28 يناير 2006 · 4 رد · 771 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندى سوالين :

سوال 1:

انا الان عندى دالة اسمها(55, screen ( text لدى عنوانها فى الذاكرة

كيف استدعيها عن طريق ---العنوان---- الخاص بها

كيف اعرف ---- عنوان----- كل بارمتر من البارمترات التابعة لهذه الدالة

سوال 2:

عندما استخدم المخزن STACK :

"هل لى القدرة على التحكم فى تغير المساحة المطلوبة سواء لحجم stack او لحجم عنوان معين داخل هذا Stack "

" وهل ممكن انشىء محزن اضافى غير الذى يحدده نظام التشغيل لبرنامجى "

ياريت تدلونى على اى كتاب يتحدث عن استخدام الاسمبلى بواسطة API

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 28 يناير 2006 في 10:54

#2

عليكم السلام

اقتباس
سوال 1:

انا الان عندى دالة اسمها(55, screen ( text لدى عنوانها فى الذاكرة

كيف استدعيها عن طريق ---العنوان---- الخاص بها

كيف اعرف ---- عنوان----- كل بارمتر من البارمترات التابعة لهذه الدالة

كيف تستعدعيها...بكل بساطة بامر call

ولكن قبل ان تنفذ امر call يجب ان تمرر البارمترات وهو جواب السؤال الثاني

اولاً يجب ان نعرف تخطيط تنفيذ تعليمة الاتصال ونقل التنفيذ ,, يكون ترتيبها كالتالي

1- عنوان العودة بعد تنفيذ البرنامج

2- عناوين البارمترات

3- بيانات المكدس

ولكي نطبق هذة القواعد بناخذ مثال وليكن دالة المسج message في الذاكرة ولنفترض انها البرنامج

دالة المسج مكونة من 4 بارامترات فيكون تخطيطها في الذاكرة

push عنوان العودة

push البارمتر الاول

push البارمتر الثاني

push البارمتر الثالث

push البارمتر الرابع

call MessageBox نقل التنفيذ

وهكذا

اقتباس
عندما استخدم المخزن STACK :

"هل لى القدرة على التحكم فى تغير المساحة المطلوبة سواء لحجم stack او لحجم عنوان معين داخل هذا Stack "

" وهل ممكن انشىء محزن اضافى غير الذى يحدده نظام التشغيل لبرنامجى "

تغيير حجم المكدس ممكن عن طريق الرابط linker التابع لمترجم اللغة ولكن تغيير

حجم المكدس اكبر من 1 ميجا غير قياسي وغير مرغوب اصلا

-

اما عن إنشاء مخزن اضافي بالتأكيد ممكن عن طريق دوال alloc و lock memory

وبالتوفيق

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

مشكور اخ جاز

لكن فى طلب صغير عند استعمال API مع الاسمبلى خاصة تسجيل فئة نافذه كيف اربطها بالاسمبلى

هل اعامل اسم الكلاس على انه بارمتر

والوظيفة التابعة للكلاس على انها بارمتر ايضا

WNDCLASS WCX;

WCX.SIZE=0;

WCX.ICON=NULL;

ماذا افعل فى هذه الحالة عندما يكون عنصر مستق من فئة ازى استخدمها مع pash هل بنفس الطريقة السابقة

وماذا عن حلقة رسائل مثلا

ياريت لو تعطينى مثال كامل على انشاء نافذه بالاسمبلى

#4

السلام عليكم

لبرمجة ما ذكرت من قبل مثلا

WNDCLASS WCX;

WCX.SIZE=0;

WCX.ICON=NULL

يمكنك القيام كما في لغة س يكفي فقط ان نعلن عن الكلاس او الستراكت التي سنستعملها . وهنا يمكن ان نعلن عنها اما في data او local وهذه طريقة الاعلان :

.data

wcx WNDCLASSEX <>

ربما ستنقلب الكتابة وهنا من اليسا الى اليمين نكتب اسم لمتغير للكلاس او الستركت تليه اسم الكلاس او الستركت وفي الأخير الرمزين

وفي حالة اذا اردناها محلية فنكتب كما يلي

LOCAL wcx :WNDCLASSEX

وبعد نكتب كما يلي لملء الستراكت :

mov wcx.cbSize , sizeof WNDCLASSEX

mov wcx.style , CS_... الستايلات التي نريدها

mov wcx.lpfnWndProc , offset WndProc

mov wcx.cbClsExtra , NULL

الى ان نحدد قيم كل الستراكت

الى اللقاء.

#5

Nokia

go to

www.win32asm.cjb.net

هذا الموضوع مغلق.

مواضيع مشابهة