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

عاوز اعمل قيمة ابتدائية لمتغير بالاسمبلي

مغلق
بدأه medo_elkorsan في 23 سبتمبر 2004 · 25 رد · 2,141 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عرفت من المنتدي ان ممكن ادخال كود اسمبلي في مترجم سي عن طريق asm_

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

لا اله الا الله
#2

خذ الروابط تحدثنا فيه عن هذا الموضوع من قبل :

/index.php?showtopic=40795

/index.ph...4&t=36476&st=0#

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#3

أخي الكريم

لغة السي توصلك أي مكان؟ بمعنى أنك تستطيع عمل كل شيء تقريبا

ولكن :

قد توصل مرحلة إنك ما تقتنع بطريقة عمل دالة أو تريد تطوير دالة موجودة في النظام

أو تريد عمل شيء لم تجدة في داول النظام

بحاول أوضح لك من الواقع :

برامج الملتميديا الكبيرة تستخدم أكواد إسمبلي إما لبرمجة تعليمات MMX مباشرة أو لتسريع كود معين

برامج التشفير + برامج الحماية تستخدم أكواد إسمبلي مضافة للغة السي

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

وإذا مر عليك كود لبرمجة نظام تشغيل 32 بت

وبالتحديد في مراحل متقدمة جداً وهي برمجة العمليات و المهام ومسجلات التحكم للنظام لوجدت أن لغة السي لا تخدمك لأنها لا تحتوي على تعليمات الإسمبلي مثل SMSW و LMSW ....( هذة التعليمات خاصة بمسجلات النظام )

اقتباس
وهل الاسمبلي مفيد ليه عشان اكمل مشوار احتراف سي؟

أكيد إذا أردت البداية في مشوار الإحتراف يجب أن تعرف لغة المعالج الذي تبرمجة

ولا تقتصر كلمة مبرمج على أنك مبرمج نظام :)

وأي توضيح آخر تفضل :

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>

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

#4

تشكر جزيلا يا Jaas ,, لكن :

اقتباس
تعليمات الإسمبلي مثل SMSW و LMSW ....( هذة التعليمات خاصة بمسجلات النظام )

ماهي ال LMSW وال SMSW ؟؟

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#5

السلام عليكم

رداً على الاخ HGB اقول التالى:

معنى SMSW هو Store Machine Status Word و LMSW هو Load Machine Status Word.

Machine Status هى الحاله التى يكون عليها المعالج ولها register خاص بها يسمى CR0 هذا المسجل هو المسؤل عن حالة المعالج, ففيه على سبيل المثال البت الاولى هى التى تحدد إذا كان المعالج يعمل فى حالة Protected mode او real mode.

هذا المسجل فيه ايضاً معلومات عن اى خلل فى الذاكره مثل page fault او خلل فى تنسيق الذاكره alginment checking الخ...

والسلام

تم تعديل هذه المشاركة بواسطة احمد غريب في 24 سبتمبر 2004 في 05:32

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

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

#6

تشكر جزيلا ياأحمد غريب ,, معلومات مهمة فعلا ,,

اقتباس
البت الاولى هى التى تحدد إذا كان المعالج يعمل فى حالة Protected mode او real mode.

ما أعرفه أنه لايمكن المساس بهذا الرجستر من الوندوز xp مثلا بشكل مباشر ,, لكن حسب كلام jaas أن يمكن العبث يهذه الأمور ,, ربما لو دخلنا للKernel Mode ,,

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#7

السلام عليكم

حياك الله اخى HGB نعم الانتقال من real mode إلى Protected mode ممكن ولكن العكس غير مسموح به طالما اصبحت فى protected mode.

والسلام

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

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

#8

السلام عليكم,

أعطيك مثالا ندخل فيه رقمين x و y في س++ سنقوم بجمعهما بالأسمبلر ونضع قيمة الجمع في متغير Sum دائما بالأسمبلر وفي الأخير نعرض النتيجة باستعمال cout وأتمنى أن يكون هذا هو ما كنت تطلبه .

#include <iostream.h>

void main()
{
	int x,y,Sum;
	cout << " input 2 vumbers \n";
	cin >> x >>y;
	_asm
	{
  mov eax,y;
  mov ebx,x;
  add eax,ebx;
  mov Sum,eax
	}
	cout <<"The Sum is : " << Sum <<"\n";
}

إلى اللقاء.

#9

شكرا جزيلا للرد السريع والكتير و عد ازنك أخ شيك move يعني مساواة متغيرين و add يعني جمع متغيرين ...صح ؟

بس انت أزاي استخدمة eax و ebx من غير متعلن عنهم .

سؤال تاني للاخ جاز :انا مش هعرف كارت الشاشة 32 بايت من غير الاسمبلي ؟

لا اله الا الله
#10

السلام عليكم

الاخ ميدو eax و ebx و ecx و edx هذه مسجلات وليست اسماء متغيرات, هناك مجموعه من المسجلات التى تستخدم فى الاسمبلى ولمعرفتها عليك ان تدرس لغة الاسمبلى.

المسجلات هى عباره عن ذاكره داخل المعالج تستخدم بطريقه مختلفه عن المتغيرات, وكل مسجل من هذه المسجلات تستخدم بطريقتين, تستخدم احياناً كذاكره لحفظ الدوال واحياناً كل مسجل له وظيفه يستخدم لها فى وقتها, مثال على ذالك eax تستخدم فى عمليات الضرب, و ebx تستخدم كعنوان handle للذاكره, و ecx تستخدم كعداد للحلقات loop counter.

ارجو ان تكون ان اكون قد وفقت فى الرد والله ولى التوفيق.

والسلام

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

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

#11

السلام عليكم

ماشاء الله على الأخوة رد وافي وكافي

ولكن أحب أشرح الموضوع أكثر

بالنسبة للأمر SMSW و LMSW

بإختصار هي تعليمة قرائة وكتابة لمسجل التحكم رقم صفر في نظام التشغيل وهو المسجل CR0 كما ذكر أخونا أحمد

ولتفصيل أكثر عن هذة المسجلات CR0 و CR1 ... و TR وLDT ,LDTR

راجع موضوع ( برمجة نظام التشغيل ) وبالتحديد القسم الثاني من الموضوع على الرابط

/index.php?showtopic=42921

المهم المسجل CR0 هو أهم مسجل تحكم في النظام ويتحكم في

1- صفحات الذاكرة وطريقة العنونة

2- التبديل بين المهام

3- نقل عمل المعالج من النمط الحقيقي 16 بت إلى النمط المحمي 32 بت(أهم بت في الأنظمة الحديثة )

ويتحكم في أمور أخرى . نرجع لموضوعنا

بالتأكيد لغة السي لا تصل إلى هذا المسجل ولا حتى تعليمات الإسمبلي المخصصة للنقل مثل تعليمة MOV .. فقط التعليمتين SMSW و LMSW تمكنك من القرائة والكتابة لمسجل التحكم صفر

مارأيكم بمثال ::

إكتب هذا الكود في مترجم سي وترجمة

DWORD osra=0;
char strOSRA[8];
__asm{

SMSW eax
mov osra,eax
}

wsprintf(strOSRA,"%X",osra);
MessageBox (NULL,strOSRA,NULL,MB_OK);

أنا ظهر عندي الرقم 8001003B هل تعرف مامعناة ؟

بالتأكيد قيمة مسجل CR0 حول الرقم إلى ثنائي

10000000000000010000000000111011

هذا الرقم يمثل التخطيط PE|MP|EM|TS|ET|---محجوز-------------------|-------|PG

---------------------------- 0 1 2 3 4 ------------------------------------ 31

لاحظ الأرقام من 0 إلى 31 تمثل 32 بت وهو 4 بايت - قيمة المسجل CR0

وهي خصائص المعالج المتقدمة

PG:تعيين الصفحات في الذاكرة بهذا الشكلpG=1 تمكين تعيين الصفحات

ET:نوع اللاحقة:ET=1 معالج 32 بت ET=0 معالج 16 بت

TS:تحويل المهام :TS=1 تمكين التبديل بين المهام

EM:عمل المعالج المساعد الحسابي

MP:مراقبة المعالج المساعد

PE:يضبط البت 1 لتمكين المعالج من العمل في النمط المحمي 32 بت و 0 للنمط الحقيقي

وللتغيير في هذة القيم تطبق نفس المثال مع إستدعاء للتعليمة LMSW

بهذة الطريقة

__asm{

mov eax,0x8001003B
LMSW eax
}

وفي الحقيقة سيعمل هذا الأمر في البرامج المصرح لها التي توجد في نفس حلقة نظام التشغيل ( ولكن لم أرى كود لنظام تشغيل يستخدم هذة التعليمة أكثر من مرة )

وتستخدم دائما في بدء التشغيل

بالنسبة لأخونا medo_elkorsan

اقتباس
انا مش هعرف كارت الشاشة 32 بايت من غير الاسمبلي

أكيد تعرفها بالسي عن طريق قرائة منطقة معلومات البويس

ولازم يكون مستوى برنامجك مصرح لة بهذة العملية

السؤال الذي يطرح نفسة :: كيف يمكنني منح برنامجي هذا التصريح؟

الجواب : عن طريق بناء سواقة أجهزة

وللمعلومة :: سواقات الأجهزة لا يمكنها الوصول لكل مكان بمعنى أنها يفرض عليها قيود

ولكن بسيطة والسبب : تجنب حدوث خطأ كبير في النظام

وأي إستفسار آخر تفضل :

تم تعديل هذه المشاركة بواسطة jaas في 25 سبتمبر 2004 في 00:58

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>

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

#12

يعطيكم العافية

ممكن أعرف ليش إستخدمتم المسجلات الموسعة

شكرا لكم

#13

أخي Desigen

هل تقصد بالمسجلات الموسعة EAX , EBX ..

لأننا نبرمج في نمط 32 بت أي نمط وندوز

أما لوكنا نبرمج في نمط 16 بت أي لنظام دوس نكتب المسجلات بهذا الشكل

ax ,bx ..

---

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>

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

#14

تشكر كثيرا يا jaas وأحمد غريب على هذه الاجابات الشافية الوافية كثيرا ,, حول التعليمتين :SMSW و LMSW ,,

وان تم التعرض اليها في رابط البرمجة في قلب نظام التشغيل ,, الموجود في موسوعة jaas ,, أقصد توقيع jaas :)

اقتباس
وللمعلومة :: سواقات الأجهزة لا يمكنها الوصول لكل مكان بمعنى أنها يفرض عليها قيود

ستريجني كثيرا جدا يا jaas اذا اجبت على هذا السؤال ,,

ما هي القيود التي تفرض على ال Device Drivers ؟

لنتعرف أكثر على حدود ال Device Drivers ,,

وخذ راحتك في الاجابة كما تريد ,,

والله يعينك ويوفقك :)

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#15

آمر أخي HGB

فهذة المواضيع فعلا تفتح النفس :)

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

أول مايشتغل النظام يقوم بتحميل نواة التشغيل و هي عبارة عن برامج إذا صح التعبير

غير موجودة على القرص ؟؟؟؟؟ :)

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

بمعنى لها إسم وإمتداد ( عبارة عن مجموعة من البيانات مخزنة في قطاعات متتالية )

لا يمكن الوصول لها إلى من خلال عرض محتوى القطاع

المهم هذة الملفات هي أساس النظام وإنسى أمر الملفات الموجودة في مجلد النظام :)

يتم نقل هذة الملفات إلى الذاكرة ويعرف لها مقطع بإمتياز رقم 0 لأنها أول ملفات نقلت للذاكرة

بعد ذلك تقوم هذة النواة برتيب جدول المهام + ترتيب الإنتقال بين المهام

+ جدول الواصفات الشامل + جدول الواصفات المحلي

من إخلال إستخدامها لبقية مسجلات النظام

جدول المهام :

يحتوي على المقاطع التي ستنفذ + بعض الخصائص لترتيب التنفيذ

جدول الواصفات الشامل :

يحتوي على رقم المقاطع التي ستحمل لها البرامج + مستوى الحلقة التي ستعمل بها هذة البرامج + العنوان الحقيقي لهذة البرامج

المهم ما أطول عليك هل لاحظت هذة الأمور والخصائص؟

لايمكن لسواقات الأجهزة الدخول لها ( لايمكن التغير في حلقة أي برنامج + المهام + جداول ترتيب النظام )

وأي شيء ثاني في الجهاز يمكن أن تصل إلية

هذا والله أعلم

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>

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

#16

أنا يلي مستغربة الأن في معالجات البنتيوم

عرض المسجلات أليس 16 بت

و عرض 32 بت كان فقط في 386 486

#17

السلام عليكم

المسجلات فى جمع المعالجات من 386 فما بعد تم تطويرها إلى 32 بت, والبنتيوم من المعالجات الحديثه, إذاً معالجات البنتيوم هى 32 بت. بالتاكيد مسجلات ال 16 مازالت موجوده فى جميع المعلجات والتى تسمى ax,bx,cx,dx الخ ولكن تستخدم فى الحالات الخاصه فقط, ولهذا نلاحظ ان برامج الدوس القديمه يمكن تشغيلها على الانظمه الجديده , كما يمكنك تنصيب dos على المعالجات الجديده مثل بنتيوم 4.

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

والسلام

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

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

#18

طيب في برنامج الديبغ ما بيعرض لي المسجلات الموسعة

في برنامج يعرضها كلها للمسجلات

شكرا لكم

#19

السلام عليكم

الاخ Desigen الدباجر القديمه والتى كانت تستخدم فى بيئة الدوس بالتاكيد لن تتعرف على المسجلات الموسعه امثال eax ولكن على حد علمى جميع انواع الدباجر الجديده لديها خاصية التعامل معى المسجلات الموسعه, مثل Olledbg و si ولم يواجهنى إلى الان اى دباجر لا يستطيع التعامل معا المسجلات الموسعه.

ننتظر تعليق من الاخ jaas لانه خبير فى الدباجر.

والسلام

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

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

#20

انا كان اصدي في تعريف كارت الشاشة ببرنامج مستقل مش برنامج يستخدمها بعد مايكون النظام خلاص عرف كارت الشاشة .(البرنامج نفسه هو اللي يقوم بالتعريف ) انت قلت ان ده ينفع بالسي بس بالتعامل مع سواقات الاجهزة ..طب ازاي اعمل سواقات للاجهزة ..انا شكلي هوجع دماغك jaas فممكن تديني مواقع بتتكلم عن الموضوع ده او تتفضل وتفهمهولي.

لا اله الا الله
#21

آسف على التأخر في الرد .. كنت مشغول شوية

المهم

بناء سواقات الأجهزة

أول شيء تحتاج حزمة التطوير DDK

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

أما الآن فلم تعد موجودة - ولكن أبحث عنها في النت

حجمها كاملة 400 ميجابايت تقريبا

ثاني شيء تحتاج أداة مساعدة لبناء هيكل السواقة ( وهذا الخيار لتسهيل العملية يمكن الإستغناء عنة )

أفضل أداة تجدها هنا

/index.php?showtopic=45632

وأي سؤال آخر تفضل

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>

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

#22

طب مفيش مواقع بتتكلم في الموضوع ده عن طريق دروس او اكواد .

علي فكرة الموضوع ده مهم بالنسباي وهيفتح نفسي للتقدم بالسي++ علي اساس ان انت مبتكتش مجرد برنامج كئيب كله tixt .

فهمتني؟ انا عاوز كلام عملي

ملحوظة (انت عندك كام سنة ؟)

عشان اقارن بيني وبينك علي اساس السن ...لو طلعت تدي هأتل نفسي !

لا اله الا الله
#23

مؤقتا حتى يأتيك jaas ,,

راجع الرابط انتقل اليه موضوع ال DDK جزئيا ,,

/index.ph...ic=47993&st=0

banner_60_468.gif

NOTHING IS IMPOSSIBLE

#24
اقتباس
طب مفيش مواقع بتتكلم في الموضوع ده عن طريق دروس او اكواد .

المواقع كثيرة .. فقط إكتب في ياهو أو جوجل Device Driver Development

وبالنسبة لملاحظتك ... فلا أريدك أن تقتل نفسك :)

أمزح.. عمري تقريبا ؟ دخلت في 20

أشكرك يا مديرنا HGB على المداخلة

لأنك لم تترك خير إلى ودليتنا علية :)

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>

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

#25

حتى أنا عمري قريب منك JASS

بس في إختلاف كبير بين معرفتي و معرفتك

من الأرض إلى السماء

لازم نعمل موضوع المشرفين المميزين

يعطونا السيرة الذاتية المبسطة لهم إلى أن وصلوا إلى مرتبتهم حاليا

شكرا لكم

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

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