بسم الله الرحمن الرحيم
إلى من لديه خبرة في لغة الاسمبلي
أريد أن أعرف ماهو معنى الترميز في هذه اللغة وأيضا ماهو معنى
@data,offset
بسم الله الرحمن الرحيم
إلى من لديه خبرة في لغة الاسمبلي
أريد أن أعرف ماهو معنى الترميز في هذه اللغة وأيضا ماهو معنى
@data,offset
اقتباسdata,offset
انا مازلت جديد مثلك
لكن الداتا هى حقل البيانات للتعليمة والمسمى الصحيح لها Operand الا اذا كنت تقصد مسجلات المقاطع
اما الاوفسيت offset ايضا مثل الداتا ولكنه ياتى مع تعليمات التفريع حيث انه يبين الازاحة بالنسبة للعنوان الحالى
هذا والله اعلم
مبارك لشعب تونس ![]()
شكرا جزيل للأخ حريف برمجة
بس بعض الكتب تقول انdata@ : @ أي أينما وضعت البيانات فعنوانها(عنوان المقطع الذي وضعت فيه) هل المقصود العنوان في الذاكرة ؟؟؟؟؟؟؟؟
offset : عنوان موضع البيانات خلال مقطعنا الحالي
كلا الحالتين لم أفهم
أرجو المساعدة
أنا أيضا مبتدء مثلكم ،،
بالنسبه لموضوع الـ offset وال @data ،، فبرنامج الاسمبلي يتكون من عده مقاطع ، وحتى يعمل برنامجك يجب ان يحتوي على مقطع واحد على الاقل .
وعندما تقوم بتشغيل برنامجك ، يقوم نظام التشغيل بحجز منطقه في الذاكره 256 بايت وتسمى بادئه البرنامج program segment prefix واختصارا PSP ، هذه المنطقه تحتوي على معلومات عن البرنامج نفسه ..
بعد ذلك يقوم النظام بوضع عنوان مقطع التعليمات Code Segment داخل مسجل مقطع التعليمات Code Segment Register ، ونفس الامر بالنسبه لعنوان مقطع المكدس Stack Segment يوضع داخل Stack Segement register (SC) .
اما مسجل مقطع البيانات Data Segment Register فيوضع بداخله عنوان الpsp (نفس الامر بالنسبه الى ES ) .
لذلك اذا احتوى برنامجك على بيانات (تعريف متغيرات) يجب ان تقوم بوضع عنوان مقطع البيانات داخل مسجل مقطع البيانات .
MOV AX,@DATA
MOV DS,AX
في المعالجات (16 بت) ، كانت هناك مشكله وهي انها تعنون حوالي 20 بت من الذاكره ، وفي نفس الوقت كان طول المسجل هو 16 لذلك كان لابد من اللجوء لحل اخر وهي الازاحه.
بالنسبه الى offest فهي مقدار الازاحه من المقطع الحالي ، كل مقطع في برنامج الاسمبلي يأخذ حيز ما في الذاكره ، يبدأ هذا الحيز في أي عنوان يقبل القسمة على 16 (سوف يبدأ بالرقم 10H ) ويسمى بالفقره .
ولحساب الموقع الفعلي للذاكره ، نقوم بجمع عنوان بدايه المقطع مع الازاحه ، ليعطينا العنوان الحقيقي في الذاكره .
هذه هي الصوره التي في ذهني عن هذا الامر ، اعذروني على الاطاله ،
(اتمنى التصحيح في حال وجدت اخطاء) .
http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة
https://moalfat.com للكتب الالكترونية والكورسات التعليمية
Everything we see now is just an engineering solution based on old science
كلامك صحيح اخى لكن بالنسبة لموضوع ال Ofset واستخراج العنوان الفعال
اولا استخراج العنوان الفعال فى معالجات 8086 و 8088 بعمل اذاحة بالضرب فى عشرة 10H فينتج العنوان الفعال لبداية المقطع فى الذاكرة اما الوفسيت Ofset فيتم اضافته الى عناوين مسجلات المقاطع لعمل ازاحة بالنسبة لبداية المقطع فى الذاكرة حسب نمط العنونة المستخدم
وعمليه الحصول على العنوان الفيزيائى PA تتم داخل المعالج اى ان المبرمج ليس له دخل بها
اما بخصوص انظمة التشغيل فلها كلام اخر وتكتب به دوواوين ويختلف من نظام لاخر فنحن الان نتحدث عن برنامج تحكم على ذاكرة Microcontroller يكون هو النظام الاساسى المشغل للدائرة
كما قلت سابقا انا ماذلت مبتدا فى هذا المجال فاعزرونى اذا كان كلامى به اخطاء واذا وجد اح شئ فليقوم بتصحيحه
مبارك لشعب تونس ![]()
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…