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

micro assembly

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

السلام عليكم ورحمة الله وبركاته

اتمنى ان اصبح في يوم من الايام عضوه فعالة في هذا المنتدى الملئ بكل ماجد في البرمجة واتمنى ان اجد اجابة على تساؤلاتي

التي قد تقابل بالازدراء لسهولتها بالنسبة للاعضاءالخبراء في هذا المنتدى ولكن اتمنى ان تجيبوني عليها . باسلوب سلس يتناسب

مع خبرتي الضئيلة جدا بهذه اللغة (الاسمبلي)

مشكلتي ببساطة :انني مطالبة بعمل بحث شامل وعام عن محررات الاسمبلي وانا ادرس الاسمبلي فقط من حوالي شهرين فقط

واعمل فقط على الdebug وقد قرات عنه كثيرا في بعض المواضيع

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

ومامعنى العمل على بيئة وندوز وعلى بيئة الدوس وهل هذا اختياري للفرد ام تبعا لنظام جهازه؟

ومالفرق بين الاسمبلي 16 والاسمبلي 32 لاني قد درست الاسمبلي الخاص بالمعالج 8086 ولم اسمع بهذين النوعين ابدا وقد قرات عنهما في بعض المواضيع ولكني واجهت بعض الصعوبة في فهمها .. فاريد الفرق الواضح والذي قد يفهمه المبتدئ بعيدا عن التعقيدات في الفترة الحالية ريثما اتعمق في الاسمبلي ؟

اسفه على الاطاله ... ولكن اذا اردت ان اعمل على غير الdebug فبماذا تنصحوني ؟ ولماذ؟

واهم سؤال اخبرني الدكتور بان علي البحث عن مايسمى micro assembly وقال بانه برنامج لكتابة برامج اسمبلي فمن لديه اي معلومه ليخبرني وببساطه؟

ولكم مني جزيل الشكر....

#2
اقتباس
التي قد تقابل بالازدراء

:rolleyes: هذا لا يحصل في منتديات الفريق العربي للبرمجة :D :D

البرمجة تختلف من نظام لاخر فبرمجة الاسمبلي على الوندوز تختلف عنها على اللينكس مثلا .

قليل من التفصيل : احد هذه الاسباب -مثلا- هو ان مكتبات API المتوفرة في وندوز غير متوفرة في اللينكس لكن في المقابل يوجد syscall مع فارق التشبيه.

والدوس لا يختلف كثيرا عن هذه الفكرة...

الفرق بين asm16 و asm32 ببساطة وبدون تعقيد...هو ان الاولى قديمة والثانية احدث...

فالاولى مخصصة للمعالجات القديمة (لكنها تعمل على الحديثة ايضا) اما الثانية فلا تعمل الا على

المعالجات الحديثة .

قليل من التفصيل : المعالجات القديمة كانت تحتوي على 16 مسجل (registry) لذا البرمجة عليها اسمها

asm16 bit اما الحديثة فتحتوي على 32 مسجل (registry) لذا تسمى asm32 bit

معلومة : هناك معالجات احدث من هذه وتلك ، بها 64 مسجل (registry) وكما هو واضح فالبرمجة عليها مختلفة عن سابقيها.

هذا ببساطة و ان اردت التفاصيل فاطلبي. :rolleyes:

انتي تتكلمين عن المحررات...لا ادري لكن ما الذي تقصدينه من التالي "اقتباس من احد ردودي في موضوع اخر مشابه" :

اقتباس
developing environment

بيئة للعمل وهذه تشابه الـ visual studio بالنسبة للغات الاخرى...وللعلم فهذه البيئة ليست ضرورية ويمكن الاستغناء عنها. افضل برنامج لهذا العمل هو RADASM ويمكن الحصول عليه من هنــــــــــا . ولاستخدامه يلزبمك ربطه مع المجمع الذي تستخدمه. طريقة الربط موجودة في المواضيع المثبتة  هنــــــا.(11 + 12)

يلزمك ايضا الـ assembler

اي المجمع  ((وهذا يشتمل على linker )) وافضل ما يمكنك استخدامه هو masm32 من شركة micro$oft . يمكنك تحميله من هنــــــــا.

بخصوص برنامج debug فهذا لا ارى علاقة مباشرة له بالموضوع. هذا البرنامج يستخدم لتنقيح البرامج الاخرى الا انه قليل الاستخدام وفاعليته ليست كبيرة . الكثير من المبرمجين يفضلون استخدام Ollydbg لقوته وسهولته في آن. عموما ان احببت تعلم debug فاذهب الى هنـــــــــــــا.

بخصوص الـ micro assembly فعلى حد علمي تستخدم في برمجة الـ BIOS .

وفي الختام اسف على الاختصار فليس لدي الوقت الكافي للرد الكامل بسبب امتحاناتي (ارجوا ان تدعوا لي B) )

allko

تم تعديل هذه المشاركة بواسطة allko في 10 أبريل 2006 في 21:57

#3

تصحيح بسيط, 16, 32, 64بت لا تعني وجود 16 مسجل, 32 مسجل والخ.. هذه تعني مقدار ما يستطيع المسجل ان يقوم بعنونته من الذاكرة, مسجلات 16بت تعنون بايتن فقط والدليل هو ان المسجل مثلا يكون AX المقسوم الى AL (بايت) و AH (بايت ثان)

وهكذا لبقية المسجلات, EAX, مسجل 16بت موسع فاضيف له E (extended) والذي اصبح بامكانه عنونة 4 بايتات بدلا من اثنين

لم ارى اسماء المسجلات الخاصة بـ 64bit بعد لكن الفكرة انها تسمح بعنونة 8 بايتات.

لماذا 2, 4, 8 بايتات؟ ما الفائدة؟

بكل بساطة سرعة نقل البيانات وعنونة الذاكرة.

غـــلا كتب:
ولكن اريد معرفة الانواع الاخرى من محررات الاسمبلي وماهي مميزات كل منها؟

ليس هناك فرق كبير بين المحررات فجميعها في النهاية, لو ذكرنا على سبيل المثال masm, tasm, fasm, nasm, wasm .. الخ تقوم على كتابة تطبيقات 32بت.. الاختلافات تكون فقط في كيفية كتابة الكود لكن الفرق ليس كبير فمبرمج masm يستطيع قراءة كود مكتوب بـ nasm على سبيل المثال بدون اي مشاكل. لم استخدم البقية لذا لا استطيع التعمق اكثر.

اقتباس
ومامعنى العمل على بيئة وندوز وعلى بيئة الدوس وهل هذا اختياري للفرد ام تبعا لنظام جهازه؟

اختياري او تبعا لنظامه.. اعتقد ما تقصدين هو ما نظرة المبرمج وليس المستخدم, بالتالي, ان اردت كتابة برنامج بحيث يجب ان يعمل على ويندوز 95 وما قبله 3.xx :P فيجب ان اقوم بالكتابة ببيئة 16بت لان هذه الانظمة لا تدعم العنونة الاطول. اما لو كان برنامجي للانظمة التي تلي 98 فاستطيع كتابته على 32بت لانها ستقدم لي تسهيلات اكثر.

اقتباس
اسفه على الاطاله ... ولكن اذا اردت ان اعمل على غير الdebug فبماذا تنصحوني ؟ ولماذ؟

اي منقح اخر وافضلهم واكثرهم استخداما هو Olly.. طبعا يمكن ان نقول IDA افضل منه بدون شك لكنه للمختصين اكثر.

Olly يملك واجهة مرئية يسمح بالتنقل بين جميع الخصائص والنوافذ بطريقة بسيطة وسهلة ناهيك عن الاضافات المكتوبة له. لكن مثل هذه المنقحات خاصة بـ 32بت.

من اجل تطبيقات 16بت هناك CodeView, تم ارفاقه في القسم استخدمي خاصية البحث في الاسفل.

اقتباس
واهم سؤال اخبرني الدكتور بان علي البحث عن مايسمى micro assembly وقال بانه برنامج لكتابة برامج اسمبلي فمن لديه اي معلومه ليخبرني وببساطه؟

لم اتعامل بهذه البيئة من قبل للاسف. وهي تستخدم في برمجة المعالجات ودوائر التحكم.

فينه ASM4ALL, عنده باذن الله الجواب :)

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

يبدوا انني بدات افقد تركيزي (زهايمر؟ B) )

ال 16 بت تعني ان المسجل حجمه 16 بت وهكذا...

وكمعلومة للاخت السائلة وللاخ الذي سالني ، فان نظام التشغيل يكون مخصص للعمل على معالج من نظام محدد (اما 16 بت او 32 او 64)

وبالتالي فالـ XP يوجد منه نسختان نسخة مخصصة لمعالجات 32 بت واخرى لـ 64 بت...

تم تعديل هذه المشاركة بواسطة allko في 10 أبريل 2006 في 23:35

#5

السلام عليكم.

أرجو أن يكون قصد الأخت السائلة ب Micro Assembly قصدها هو MIcrosoft Assembler و هو المجمع Masm32.

أما إن كانت تقصد µControlor فهذا باب آخر.

يتميز كل معالج كيفما كان نوعه بلغة تجميع خاصة به ( Assembly Language Mnemonics). ويتميز بعدد السجلات الداخلية Registers.و حجم الذاكرة الذي يستطيع عنونتها بالMegaBytes وسعتها بالبتBits

4bits,8bits,16bits,32 and 64 bits.

مثلا: أول معالج لشركة Intel هو Intel 4004 سرعته 108KHz كان يحتوي على 16 سجل register من حجم 4 bits فقط و يستطيع عنونة ذاكرة بسعة قصوى 4KiloBytes , عرض العنونة هو 12Bits. لغة التجميع الخاصة به كانت تضم 46 تعليمة mnemonics, 41 منها تتعامل مع Operand عرض 8 bits, و 5 تعليمات للتعامل مع operands من عرض 16Bits.

المعالج في الحاسوب الشخصي يعمل لبيئات مختلفة تسى بنظم التشغيل مثل : unix, Lunix, BSD Family, Dos, Windows....

لكن بنفس التعليمات Mnemonics يجب ان تبرمج له حسب نظام التشغيل الذي سيعمل عليه البرنامج. لأن البرنامج سيعتمد في الأخير على البيئة التي برمج لها, فنظام التشغيل يقوم بتحميله إلى الذاكرة ثم توفير كل الدوال اللازمة لعمل التطبيق قبل تنفيذه.

لهذا فكل تطبيق يبقى "وفي" للمعالج الذي برمج له وكذلك لبيئة نظام التشغيل.

micro controler هو مركب إلكتروني يحوي مجموعة من المركبات الألكترونية- من بينها المعالجProcessor - في نفس العلبة package.

وله أهمية في الهندسة الإلكترونية خاصة ولا يصلح ان يبرمج ب Tasm, او Masm32 أو Nasm... أو غيرها.

لأنه يكون متميز ويحتاج لمجمع خاص به فقط.

من بين هذه المتحكمات µcontroler الأكثر شعبية:

Pic 16fxxx, Avr,motorolla 68HC11, atmel 93CXXX....

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#6

allko

Xacker

ikossan

شكرا جزيلا لكم على توضيحكم لي كثيرا من النقاط الغامضة

لكن سؤال واحد فقط .... مافهمته مما كتبتوه أن الdebug الذي اعمل عليه هو مجمع ؟ هل هذا صحيح ؟

وهل كل ما احتاجه لكتابة برامج الاسمبلي هوالـــ assembler?

وان ماياتي كله هو assembler :

.Codeview .masm, tasm, fasm, nasm, wasm.Olly

:P اما مالم افهمه هل نظام التشغيل xp الخاص بجهازي هو الذي يلزمني مثلا باستخدام مجمع دون اخر ؟

انا لم اتعلم الا الاسمبلي 16 هل استطيع تنفيذها باستخدام masm وعلى نظام التشغيل xp

واخيرا شكرا جزيلا لكم لاعطائكم اسئلتي جزءا من وقتكم ....زادكم الله علما ونفعنا واياكم ...

#7

الـ debug هو منقح لتطبيقات 16بت.

codeview ايضا منقح لتطبيقات 16بت

olly منقح لتطبيقات 32بت

الباقي مجمعات اسمبلي, صح

نظام التشغيل لا يتعلق بالمجمع المستخدم, انا اعمل على 2003 واستطيع استخدام nasm رغم ان استخدامه منتشر اكثر لدى مستخدمي linux, الفكرة في المجمع هو المعالج الذي يعمل عليه الجهاز.

تطبيقات 16بت تحتاج اصدار خاص من masm وهو خاص بتطبيقات 16بت, رقم الاصدار حسبما اذكر 5.xx, تطبيقات 16بت تستخدم المقاطعات, لا تعمل كافة المقاطعات على هذا النظام وقد تواجهي مشاكل في بعضها لذا يفضل استخدام برنامج يقوم بتحويل ملف com الناتج الى exe مثل exe2bin

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8

شكرا جزيلا :rolleyes:

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

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