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

السطر رقم:
- يتم استدعاء ملف masm32rt الدي بنفسه يستدعي بعض الملفات الأخي المهمة وبه بعض الماكروات التي سنستعملها.
- يتم استدعاء ملف wsock32 الدي يحتوي علي syntax الخاص بدوال السوكت.
- يتم استدعاء مكتبة wsock32 نقول للمجمع أننا سوف نستعمل تلك المكتبة لكي يتم كتابة هده المعلومة في الملف التنفيدي...
- بداية مقطع البينات.
- حجز المتغير webs الدي يحمل عنوان الموقع الدي نريد عنوان IP الخاص به.
- حجز موقع في الداكرة بحجم sockaddr_in لوسميناه addra
- حجز موقع في الداكرة لبنية من نوع WSADATA لنستعملة في دالة WSAStartup.
- بداية مقطع الكود.
- .............................................
- عبارة عن Label وهو نفطة دخول البرنامج.
- استدعاء الدالة WSAStartup لتهيئة مكتبة السوكت واستعمالنا الاصدار 2.2.
- استعمالنا الدالة gethostbyname التي تقوم بارجاع مؤشر الي البينية hostent البرامتر الوحيد هو عنوان الموقع.
- نقوم بمقارنة القيمة المرجعة في eax مع NULL يعني ادا حدت خطأ.
- ادا تسواي EAX مع NULL يعني ادا تحقق الشرط السابق قم بالقفز الي ex الأسف يعني الخروج .
- نقوم بنقل قيمة h_list الموجود في البينية hostent الي ebx.
- نقل مؤشر الي العنوان IP الي eax.
- نقل عناون ip الي eax علي هيئة big endian.
- استعمال الدالة inet_ntoa التي تقول بالتحويل من big endian الي string والبرامتر الوحيد هو IP علي هيئة big endian والقيمة المرجعة هو مؤشر الي العنوان IP علي شكل STRING.
- استعمال الماكرو print الدي يقوم بطباعة IP و قلنا أن EAX يحمل مؤشر الي العناون IP و قمنا بطباعة 10 التي تعني سطر جديد.
- عبارة عن عنوان دلك الموقع لكي يتم القفز اليه من الأعلي كما دكرنا.
- ماكرو ينتضر حتي يضغط المستخدم علي زر ما
- ماكرو يتم الخروج من البرنامج واعطاء التحكم للنضام.
- نهاية LABEL.
الي هنا أنهي هدا الموضوع أتمني أن يستفيد منه الجميع + ملاحضة يمكنك استعمال هده الطريقة كدلك.
السطر 16 نقول للمجمع أن يجعل eax كمؤشر الي بنية hostent الا سوف يحدت خطأ ان لم نفعل هكدا.17 نقوم بنقل h_list الي ebx.18 نطلب مجددا من المجمع أن يجعل eax يشير الي لا شيئ لكي لا نسبب في الأخطار عندما نستعمل المسجل eax.الي اللقاء.-