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

سؤال حول المسجلات Ebx وغيره

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

السلام عليكم

أنا أقل من مبتدئ في أسمبلي، بس أعرف أن السجلات مثل Ebx , Eax وغيرها هي مثل المتغيرات، يعني مكان في الذاكرة يمكن أخزن فيه قيم معينة...

بس أنا سؤالي الآن هو:

افرض أني عملت برنامجين، وقمت بالبرنامج الأول بتغيير قيمة Ebx ، ثم شغلت البرنامج الثاني وقمت بتغيير قيمة Ebx أيضاً، ثم بعد ذلك أراد البرنامج الأول استعمال القيمة التي في المسجل نفسه .... !! بالتأكيد سيحصل على قيمة غير صحيحة، لأن البرنامج الثاني غيرها ؟؟؟ !! مش عارف " إيش وكيف " اللي يحصل في الذاكرة، وكيف تتعامل البرامج مع بعضها .. حقيقة هذا السؤال محير جداً،، وربما سبب هذا السؤال هو فقد لكثير من الأساسيات، أرجو توضيح هذه النقطة، لأنها بالفعل محيرتني...

ومشكورين مقدماً ..

#2
اقتباس
السجلات مثل Ebx , Eax وغيرها هي مثل المتغيرات، يعني مكان في الذاكرة يمكن أخزن فيه قيم معينة...

السلام عليكم

السجلات ليست موجودة في الذاكرة RAM بل داخل المعالج Processor

بالنسبة لسؤالك فالأمر من مهام نظام التشغيل، او لنقل البيئة التي يعمل بها البرنامج،

راجع:

http://en.wikipedia.org/wiki/Process_(computing)

http://en.wikipedia.org/wiki/Computer_multitasking

d4baa0.gif
#3

السلام عليكم أخي محمد

لكن، حقيقة أنا لم أقرأ كل الروابط التي وضعتها...

عموماً سؤال واحد على السريع... أرجو أن يفيدنا به الأعضاء أو المشرفين:

أفهم من كلام الأخ محمد: " أنه لا يوجد سوى Eax واحد في المعالج (الكمبيوتر) ، ولا يوجد سوى Ebx واحد في الكمبوتير، ولا يوجد سوى Ecx واحد في الكمبيوتر .. الخ ؟؟؟ "

يعني كل البرنامج تستعمل نفس الريجسترات ؟ لكن نظام التشغيل هو الذي ينظم العملية ؟؟

وشكراً مقدماً

#4

نعم

فيجهاز حاسوب به Processor واحد :)

d4baa0.gif
#5

السجلات مجرد ادة يستخدمها المعالج لاجراء بعض العمليات الحسابية السريعة

لكن اذا اردت ان تقوم بحفظ هذه القيم موقتا وليس دائما

تقوم بازاحة القيم الموجودة بالسجلات الى احدى عناوين RAM اما قطاع الكود او قطاع البيانات او قطاع المخزن

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

حسابية او منطقية او مقارنة

اما RAM فهى عبارة عن جدول ملىء بالصفوف يمكن لكل صف ان يحمل قيمة تتراوح بين 0 الى 255 وهو مايسمى byte وعندما يستهلك برنامجك اكتر من 1024 صف byte يكون حجمه 1 كيلو بايت وهكذا

اما يتم حفظ البيانات كانها 01011101 لابد ان كل صف يحمل 8 بت والبت ممكن ان يكون 0 او 1

asci code : عبارة عن جدول موجود على شريحة البيوس او شريحة القراءة فقط read only

يحتفظ بالقيم الثنائية

ان كل 8 بت تكون رقم محصور بين 0 الى 9 او حروف من A الى z

8 بت هى byte يعنى صف من RAM

اما اذا كنت تعامل مع نظام Eax او EBX فانت تتعامل مع النمط المحمى فى المعالج

تخيل انك وضعت قيمة داخل المسجل EBX مثلا وقمت بعد ذالك بازاحة هذه القيمة الى عنوان داخل RAM

فسيقوم بحجز 32بت

فاذا كان كل عنوان فى RAM حجمه 8 بت

اذن لكى يقوم بحجز مساحة 32 بت داخل RAM يحتاج اربعة صفوف 4 Byte

وسيكون 32 بت بهذا الشكل :

00110011 00110110 11110000 10001000

عدهم سيكون 32 بت اتوماتك سيقوم المعالج باخذ كل 8 بتات منهم داخل عنوان واحد فقط ولذالك سيتكون عندك اربع صفوف لكى تحفظ قيمة حجمها 32 بت ممكن ان تصل القيمة الى 1,455,562

تتخيل ذالك

نفس القصة عند تسجيل القيم على الذاكرة الدائمة HardDisk ولكن الفرق فى شىء واحد ان الذاكرة الدائمة تحتفظ بالبيانات حتى لو قمت باغلاق الحاسب اما RAM تفقد بياناتها بمجرد انقطاع الكهرباء عن الحاسب

تم تعديل هذه المشاركة بواسطة Nokia_2006 في 7 يونيو 2006 في 22:57

#6

شكراً لكم على الإجابات

بارك الله فيكم :-)

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

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