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

Assembler + API

مغلق
بدأه CPU Assembler في 13 ديسمبر 2005 · 23 رد · 2,168 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

انا اتعلمت الاسمبلى ودرست كل او اغلبية التعليمات الخاصة بالمعالج p4 وp3 لا يوجد اختلاف كبير

بس انا زهقت من الشاشة السوداء

1- هل فعلا الكمبيوتر يختوى على 0 الى 255 منفذ ؟

2- انا بفهم فى دوال API وجربت استخدامها فى الاسمبلى عن طريق PASH و POP و CALL

بس مادا عن استدعاء الرسائل وتمرير البارمترات الى اى دالة

3- بالنسبة للسى مع API كيف اصمم دالة خارجية استخدمها وقت الحاجة بدلا من كتابتها فى كل مرة

#include <stdio.h>

void print ( int x , int  word)
{
any code;
}
int main()
{

}

كيف اصمم وظيفة فى دوال النظام كمثل الوظيفة Print واضع بها الكود الذى اريده

هاتين هما المشكلتين اللى عقدونى فى البرمجة باستخدام API

---------------------------------------

فى الكلية عندنا مشروع لبناء COMPILER لتعليمات حسابية

هو الدكتور شرحه بطريقة غبية جدا

وبعد شرحه كرهت تصميم مثل هده البرامج بعد ان تحمست جدا لمعرفة الطريقة فى تصميمها

ياريت لو فى كتاب يوضح لى عملية بناء الجرامر

الان اكتر من شهر مش عارف اكتب قاعدة واحدة ( بستخدم لغة السى )

منتظر حل للثلاثة اسئلة

تم تعديل هذه المشاركة بواسطة CPU Assembler في 13 ديسمبر 2005 في 22:25

#2

مادا حدث ياشباب

مفيش حد عاوز يجاوبنى ليه

#3

السلام عليكم

اولاً اهلاً وسهلاً بك اخ احمد فى المنتدى معانا, انا قرات مشاركتك الاولى وانا فى العمل فى فترة الراحة ولو كنت صبرت إلى حين عودتى من العمل لكنت حصلت على إجابة, ففى بعض الاحيان لا تسنح الفرصة للشخص الذى يعرف الاجابة ان يتواجد فى المنتدى دائماً..

اجابة الاسئله:

السؤال الاول:

لم افهم قصدك اخى العزيز, إذا كنت تقصد منافذ الcom و الlpt ففى بيئة الوندوز كل واحدة منهم تستطيع ان ترقمها من 1 إلى 255 على سبيل المثال com200 ولكن لا احد يستخدم هذا الارقام الكبيرة فى استخدام منافذ الكوم, وفى بيئه الوندوز ينظر إلى هذه المنافذ على انها ملفات لذلك تستخدم الدلة FileOpen عندما تريد استدعائها..

السؤال الثاني :

هناك العديد من الامثلة والدروس فى المواضيع المثبته تشرح كيفية إستدعاء الدوال من مكتبات خارجية كما انه هناك دروس عديدة عن كيفية إستخدام دوال الـAPI..

السؤال الثالث:

مكتبة الcrt والتى تستخدم فى لغة السى يمكنك ان تستخدمها معى الاسمبلى كل ما عليك هو دمج الملف crtdll.lib والملف crtdll.inc معى برنامجك, وتستطيع تحمل الملف من هذا الرابط

http://www.nada.kth.se/~su00-aab/crtdll.zip

هذا ما لدى الان يكنك ان تطرح اسئلتك بعد ان تجرب هذه الطرق وإن شاء الله نجيبك عليها...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#4

معليش انا حتقل عليك شويه اخ احمد غريب

انا اتعلمت السى اولا ثم انتقلت الى برمجة API + سى

ثم انتقلت الى برمجة API مع الاسمبلى بس هى واجهتنى مشكلة الرسائل والتحكم فى Wparam )LOWORD) وهكذا

انا بستخدم الاسمبلى العادية التابعة للفيجوال سى ++ 6

-------------------------------------------------------

اسئلة عن API :

1- ازى استدعى مجموعة دوال واستخدام الرسائل عبر التعليمات الخاصة بالاسمبلى PASH و POP

2- وازى احصل على موقع الدالة فى الداكرة

انا بس عاوز اعرف شروط استخدام الاسمبلى مع API باستخدام POP و PASH و call وليس عن طريق ربط مكتبات

----------------------------------------------------------------

اسئلة عن المنافذ :

طيب ما هى انواع المنافذ ايه هى انا اعرف منفذ اسمه كارت الشاشة والصوت وهل كل منه له ذاكرة خاصة

وما استخداهم المنافذ عن طريق OUT و IN

مثلا :

OUT 102,AL

يعنفع كده

يعنى عندى منفذين 0 و 3

هل البيانات المرسلة الى منفذ رقم 0 غير المرسلة الى منفذ رقم 3

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

تم تعديل هذه المشاركة بواسطة CPU Assembler في 14 ديسمبر 2005 في 21:28

#5

السلام عليكم

اخى الكريم انت تخلط بين الاسمبلى 16 و الاسمبلى 32. فى الاسمبلى 32 لا نستخدم in و out لانها تحكم مباشر الهاردوير, عوضاً عنها نستخدم دوال الAPI , مثلاً إذا اردت فتح منفذ com تستخدم الدالة FileOpen ثم ترسل عن طريق إستخدام FileRead و تستقبل عن طريق FileWrite ..

بالنسبة للPush و pop انا استخدم masm32 لذلك لا احتاج إليها وإنما نستخدم invoke وهى تقوم بعمل استدعاء بالظبط كما يحدث فى لغة السى, إذا ارجت إستخدام push , pop يمكنك ذلك, وببساطة ما عليك إلا عمل push لاخر عنصر ثم الذى يليه ثم الذى يليه, يعنى عكس القائمة التى تستخدمها عندما تريد إستدعاء دالة فى لغة السى.. واخيراً تستدعى الدلة بإستخدم Call ولكن انصحل بإستخدم masm32 لانه يسهل الكثير وخاصة إذا كنت تجيد لغة السى..

بالنسبة لكرت الشاشة فإنك لاتستطيع الوصل إليه فى البيئة المحمية لانه من ممتلكات نظام التشغيل, تخيل لو وصلت لكرت الشاشة, معنى ذلك انك تستطيع التحكم فى الشاشة بالكامل وبذلك يمكنك تغير محتويات الشاشة بما فيها النوافذ التى ليست من اختصاص برنامج, لذلك نستخدم دوال الDC والتى توفرها مكتبات الربط GDI32.dll وبذلك يضمن النظام انك لن تغير من محتويات الشاشة فى نفس الوقت تحصل على تحكم كامل بالنافذة التى يمتكلها برنامجك...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#6

نسيط موضوع الwParam والLWORD, فى لغة الاسمبلى نستخدم على سبيل المثال الكود التالي للحصول على LWORD فى المتغير wParam:

mov eax,dword ptr wParam
and eax,0ffffh

هذا الكود يضع قيمة wParam السفلى فى المتغير ax ...

اعتقد شرحت كل هذه الامور فى احد الدروس لو راجعت الدروس المثبته ستجد شرح لجميع الاسئلة من هذا النوع..

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#7

مشكور جدا هدا ما كنت اريده ساطبق المثال

شكرا

اقتباس
فى الكلية عندنا مشروع لبناء COMPILER لتعليمات حسابية

هو الدكتور شرحه بطريقة غبية جدا

وبعد شرحه كرهت تصميم مثل هده البرامج بعد ان تحمست جدا لمعرفة الطريقة فى تصميمها

ياريت لو فى كتاب يوضح لى عملية بناء الجرامر

الان اكتر من شهر مش عارف اكتب قاعدة واحدة ( بستخدم لغة السى )

انت نسيت السوال ده :

ياريت انا عاوز اى كتاب بيشرح كيفية كتابة جرامر ازى فعلا بيخد الكود ويخليه برنامج

وما الاساس الدى يصمم عليه اللغات هو الدكتور قال ان السى هى الذى يتم تصميم منها الانظمة واللغات ازى وهى مجرد لغة عادية تنتج برامج موجه للويندوز وكونسل ازى

تم تعديل هذه المشاركة بواسطة CPU Assembler في 14 ديسمبر 2005 في 22:24

#8

هل تقصد عمل مترجمات وتحويل البرامج من اللغة المكتوبة إلى الصيغة التنفيذية؟؟

إذا كان هذا هو قصدك فهذا القسم ليس المكان المناسب لوضع مثل هذا السؤال وإنما عليك ان تضعه فى قسم منتدى التطبيقات.

اما إذا كان غير ذلك فياريت توضح السؤال اكثر لانى لم افهم قصدك للاسف..

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#9

اخ احمد غريب انا مش عارف اشكرك ازى

انا مش عاوز اصمم لغة ( انا مش عبقرى اوى كده وبعدين الحاجات دى بتنزل من الشركات فقط )

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

تم تعديل هذه المشاركة بواسطة CPU Assembler في 14 ديسمبر 2005 في 23:02

#10

طيب يا سيدى العملية دى من اختصاص نظام التشغيل, وزى ما إنتا عارف نظام التشغيل وندوز ليس مصدر مفتوح لذلك من الصعب جداً معرفة الالية التى عن طريقها يتم إنشاء النافذه او اي عملية اخرى..

إذا اردت معرفة التفاصيل بدقة عليك بالنتقال لنظام لينكس فهو مفتوح المصدر..

اما بالنسبة للملفات التنفيذية وشكلها, وما تحتويه من اقسام فقد كنت كتبت موضوع تجده فى المواضيع المثبته, شرحت فيه بالتفصيل كل مكونات الملف التنفيذي...

ويمكنك إستخدام debugger لمشاهده محتويات اى ملف تنفيدى من نوع exe او dll, وانا افضل ollydbg لانه سهل الاستخدام ويتيح لك تتبع البرنامج ومشاهده كل بايت داخله ..

بالنسبة لإستخدام ollydbg الاخ jaas جزاه الله كل خير كتب درس ممتاز تجده ايضاً فى المواضيع المثبته, راجع هذه المواضيع وإن شاء الله لن تندم.. ولو كان عندك اى استفسار نحن فى الخدمة ..

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#11

هل فى كتب عن الموضوع المنافذ او ايه نوع البيانات

هل كل منفذ له بيانا ت خاصة بها لابد من معرفتها

اخى احمد انا نفسى اتعلم المنافذ انا عارف انها مش سهلة بس هل فى مكان تنصحنى فيه بالدراسة او شهادات معينة

اكتسب منها مهارة بناء برامج احترافية بالاسمبلى ( انا من الاسكندرية )

هل تفيدنى دراسة الهارد وير

وياريت لو فى اى شىء عن برمجة المنافذ من ملفات API لو امكن ( الطريقة العامة)

معليش تقلت عليك شويه

وياريت اى معلومة عن الثريد الموجود داخل API

تم تعديل هذه المشاركة بواسطة CPU Assembler في 15 ديسمبر 2005 في 01:50

#12

اعتقد رديت على سؤال المنافذ..

لا يوجد شئ إسمة منافذ فى الوندوز المنافذ هى عبارة عن ملفات, وانا مش عارف بتنط من موضوع لموضوع تانى ليه؟؟

يا اخى جرب الاشياء إلى سئلت عنها الاول ولما تنجح معاك التجربة انتقل للسؤال الثانى, لانى بصراحة لا احب هذا الاسلوب فى طرح الاسئلة, مرة تسئل عن المنافذ ومرة اخرى تسئل عن الثريد ومرة ثالثه تسئل عن استدعاء دوال الAPI, وطريقتك ستجعلنى لا اجيب على اسئلتك بصراحه..

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#13

سورى مستر احمد غريب

بس انا فعلا مش عارف استعمل المنافذ من الملفات ازى ( ازى استخدم المنفذ عن طريق الملف )

وهل كل منفذ له بيانات خاصة

وكنت عاوز ازى استخدم الثريد فى الويندوز

وفى الاخر سالتك عن الشهادات العالمية الذى تفيدنى فى هذا المجال فقط

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

على طول داكرة داكرة مش عارف تكتب ذاكرة :lol: و برضه نافدة المفروض نافذة في اختراع اسمه حرف الذال

ايه ياعم Hamada Hassan Ali اطلع من دول .... انت غيرت اسمك و الا ايه :lol: بس المشكلة انك ماغيرتش طريقتك في الكتابة برده لسة مش لاقي حرف الذال في الKeyboard و بتكتبه دال :lol: يا بني حرف الذال هو أول حرف في الKeyboard من ناحية الشمال فوق :lol:

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#15

المنافذ تفتح كنها ملف عادى هكذا:

com db "//./com1",0
hcom dd 0
...
invoke CreateFile, addr com,GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,NULL,NULL
mov hcom,eax

وتقراء منها هكذا

invoke ReadFile,hcom,addr mybyte,sizeof mybyte,addr  byteread,NULL

والكتابة تستخدم WriteFile بنفس الطريقة....

بالنسبة للثريد كتبت موضوع فى قسم السى بلس بلس تقدر تقراه, الطريقة لا تختلف فى الاسمبلى إلا فى الـsyntax فقط..

شهادات عالمية الله اعلم, انا عندى شهادة جامعية ولم اهتم لهذا الامر, إذا كان فى عضو اخر يمكن يفيدك فى الموضوع دا ياريت...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#16
bashmohandes كتب:
على طول داكرة داكرة مش عارف تكتب ذاكرة :lol: و برضه نافدة المفروض نافذة في اختراع اسمه حرف الذال

ايه ياعم  Hamada Hassan Ali اطلع من دول .... انت غيرت اسمك و الا ايه :lol: بس المشكلة انك ماغيرتش طريقتك في الكتابة برده لسة مش لاقي حرف الذال في الKeyboard و بتكتبه دال :lol: يا بني حرف الذال هو أول حرف في الKeyboard من ناحية الشمال فوق :lol:

انت مخطىء لو ركزت شويه حتلاقى ان فى كلام بكتبة بحرف (د - ابو نقطة ) بس هى الاقرب الى يدى لان عندى مشكلة بالجهاز ساعة يكتب حروف وساعات لا

بس هل العضو حمادة معروف بحرف (د - منغير نقطة )

للاسف انت محطىء انا اسمى احمد محمد ايرهيم حسن

من الاسكندرية ( ميامى)

سوء فهم منك اخ باشمهندس على العموم حصل خير

تم تعديل هذه المشاركة بواسطة CPU Assembler في 15 ديسمبر 2005 في 02:41

#17

لا يا باشمهندس دا مجرد تشابه اسماء, حماده غير احمد, وبعدين اسئلة حماده عن المترجمات بينما اسئلة احمد فى المنافذ يعنى فى فرق فى نوع الاسئلة ولا إيه رايك؟؟

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#18

ياااااااااااه دا إنتا طلعت لئيم اوى يا باشمهندس!! قصدك يعنى عشان فى تشابه فى الايبى, طيب وإيه يعنى ماهو حماده عايش فى اسكندريه واحمد كمان عايش فى اسكندريه يبقى لازم يكون الايبه شبه بعض.. بطل شغل المخابرات دا يا باشمهندس سيب الراجل فى حاله ...

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#19

بداءات الصراعات

IP=10.0.0.10 هدا هو الموجود لدى على شبكة النتورك DSL

هل العنوان ده زى بتاع حمادة بالظبط

لا يمكن

ازى يكون فى جهاز يحمل IP زى IP بتاع جهاز اخر

تم تعديل هذه المشاركة بواسطة CPU Assembler في 15 ديسمبر 2005 في 03:15

#20

:D :D :D

ههههههه والله انته حكايه ياحماده قصدي يا CPU Assembler

#21
اقتباس
IP=10.0.0.10 هدا هو الموجود لدى على شبكة النتورك DSL

لا تعليق

احلى حاجة فى موضوعاتك يا اخ حماده الجانب الفكاهى :D انا بدخل الموضوع عشان ادور على رد Bashmohandes :D

AlexCard.gif

Business Card

Ahmad Fathy Ahmad

Computer and Systems Department

Faculty of Engineering, Alexandria University

Cellular: +2 010 1461154

E-mail: midoalx@hotmail.com

ICQ: 148481391

#22
اقتباس
انت مخطىء لو ركزت شويه حتلاقى ان فى كلام بكتبة بحرف (د - ابو نقطة ) بس هى الاقرب الى يدى لان عندى مشكلة بالجهاز ساعة يكتب حروف وساعات لا

بس هل العضو حمادة معروف بحرف (د - منغير نقطة )

إيه يا حمادة إنت متعرفش ولا إيه :P

اليونانين القدماء اكتشفوا فى بئر مأرب من 3 دقايق و نص وجود حرف جديد ينضم لاخواته الحروف الهجائية اسمه الذال ;)

و على ذلك يتم تغيير مسمى ابو نقطه الى ذال :lol:

#23
usama707 كتب:
إيه يا حمادة إنت متعرفش ولا إيه :P

اليونانين القدماء اكتشفوا فى بئر مأرب من 3 دقايق و نص وجود حرف جديد ينضم لاخواته الحروف الهجائية اسمه الذال ;)

و على ذلك يتم تغيير مسمى ابو نقطه الى ذال :lol:

اصحح يا اسامة هو سد مارب مش بئر مارب

عموما

اقتباس
انا بدخل الموضوع عشان ادور على رد Bashmohandes

100%

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#24

عذرا يا أخ عادل :)

إللي كتبته كان هذار علشان كده دخلت اليونان في مأرب في الذال

و أنا كنت بسمع بمنطقة مأرب لكن لم أعرف أنها خاصة بأحد السدود التي تعد من أعظم ما شيد في الجزيرة العربية في العالم القديم

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

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