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

الترميز في لغة الاسمبلي

مغلق
بدأه أمواج البحر في 18 أبريل 2007 · 4 رد · 1,922 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

إلى من لديه خبرة في لغة الاسمبلي

أريد أن أعرف ماهو معنى الترميز في هذه اللغة وأيضا ماهو معنى

@data,offset

#2
اقتباس
data,offset

انا مازلت جديد مثلك

لكن الداتا هى حقل البيانات للتعليمة والمسمى الصحيح لها Operand الا اذا كنت تقصد مسجلات المقاطع

اما الاوفسيت offset ايضا مثل الداتا ولكنه ياتى مع تعليمات التفريع حيث انه يبين الازاحة بالنسبة للعنوان الحالى

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

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#3

شكرا جزيل للأخ حريف برمجة

بس بعض الكتب تقول انdata@ : @ أي أينما وضعت البيانات فعنوانها(عنوان المقطع الذي وضعت فيه) هل المقصود العنوان في الذاكرة ؟؟؟؟؟؟؟؟

offset : عنوان موضع البيانات خلال مقطعنا الحالي

كلا الحالتين لم أفهم

أرجو المساعدة

#4

أنا أيضا مبتدء مثلكم ،،

بالنسبه لموضوع الـ 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

#5

كلامك صحيح اخى لكن بالنسبة لموضوع ال Ofset واستخراج العنوان الفعال

اولا استخراج العنوان الفعال فى معالجات 8086 و 8088 بعمل اذاحة بالضرب فى عشرة 10H فينتج العنوان الفعال لبداية المقطع فى الذاكرة اما الوفسيت Ofset فيتم اضافته الى عناوين مسجلات المقاطع لعمل ازاحة بالنسبة لبداية المقطع فى الذاكرة حسب نمط العنونة المستخدم

وعمليه الحصول على العنوان الفيزيائى PA تتم داخل المعالج اى ان المبرمج ليس له دخل بها

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

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

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…