البرمجة

ضرب الأرقام في لغة التجميع: برنامج تضاعف الأرقام.

في برنامج تجميع اللغة الآلية هذا، يتم تضمين تعليمات تجميع لتحقيق وظيفة معينة. سأقوم بشرح البرنامج بشكل مفصل، مركزًا على التفاصيل التقنية والمعلومات المهمة.

يبدأ البرنامج بتعريف عناصر أساسية مثل الاسم (name) والنموذج (model) والذاكرة (stack). يتم تحديد البيانات (data) التي تحتوي على رسائل نصية تستخدم للتفاعل مع المستخدم وتخزين النتائج.

الشيفرة (code) تبدأ باستعراض قيمة data segment، ثم يتم استخدام تعليمات mov لتحميل قيمة ax بعنوان @data وتحميل ds بقيمة ax. يتم استخدام lea لتحميل عنوان سلسلة النص “Enter a number <5:" إلى dx، ويتم استدعاء دالة الخدمة DOS برقم ah=9 لطباعة الرسالة.

ثم يتم استخدام دالة DOS لإدخال رقم من المستخدم (int 21h، ah=1) وتحويله من ASCII إلى رقم صحيح. بعد ذلك، يتم ضرب الرقم في 2 باستخدام التعليمات add و sub ويتم تحويل الناتج إلى ASCII مرة أخرى.

تتابع العملية بطباعة رسالة تعلم المستخدم بأن الرقم المدخل قد تم ضربه في 2، وأخيرًا يتم استخدام دالة DOS للخروج من البرنامج.

يُلاحظ أن هناك بعض الأخطاء في الشيفرة، على سبيل المثال move يجب أن تكون mov، وكذلك هناك خطأ في mo ax,4c00h حيث يجب أن يكون mov ax,4c00h. يجب تصحيح هذه الأخطاء لضمان تنفيذ البرنامج بشكل صحيح.

يمكن تحسين البرنامج أيضًا من خلال إضافة التحقق من أن الرقم المدخل أقل من 5 قبل ضربه في 2، وتحسين تعليمات التحويل بشكل أكثر فعالية.

المزيد من المعلومات

بالطبع، دعونا نستمر في تفحص البرنامج وتوضيح بعض النقاط الأخرى:

  1. في قسم .data، تجد تعريفات للنصوص التي سيتم استخدامها في التفاعل مع المستخدم وعرض النتائج. على سبيل المثال:

    • prompt: يتم استخدامها لعرض رسالة تطلب من المستخدم إدخال رقم أقل من 5.
    • msg: يتم استخدامها لعرض رسالة تخبر المستخدم بناتج ضرب الرقم في 2.
    • result: يتم استخدامها لتخزين الناتج النهائي.
  2. يتم استخدام التعليمة mov ax, @data لتحميل مسار البيانات إلى السجل ax، وبعد ذلك يتم نقل القيمة من ax إلى ds باستخدام mov ds, ax. هذا يربط المؤشر ds بمنطقة البيانات.

  3. يتم استخدام int 21h مع ah=9 لطباعة النصوص. هنا يتم استخدام lea لتحميل عنوان السلسلة إلى dx، ثم يتم استدعاء دالة الخدمة لطباعة السلسلة حتى يتم الوصول إلى الرمز $ الذي يشير إلى نهاية السلسلة.

  4. بعد قراءة الرقم المدخل من المستخدم، يتم تحويله من ASCII إلى رقم صحيح. يتم ذلك عن طريق تقليل قيمة 30h (ASCII للصفر) ثم إضافة الناتج مرتين باستخدام add al, al، وأخيرًا يتم إعادة تحويله إلى ASCII.

  5. يتم استخدام int 21h مع ah=9 مرة أخرى لطباعة رسالة “Double your number is:”، ثم يتم طباعة الناتج باستخدام نفس الدالة.

  6. أخيرًا، يتم استخدام int 21h مع ah=4Ch لإنهاء البرنامج والعودة إلى نظام التشغيل.

البرنامج يبدو واضحًا في هدفه الرئيسي وهو ضرب الرقم المدخل من قبل المستخدم في 2، ولكن يمكن تحسينه وتبسيطه بإضافة بعض التحسينات والتعليقات التوضيحية لفهم أفضل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر