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

[ تمت الإجابة ]طلب مساعدة في كتابة برامج

بدأه عائشة وافي في 13 فبراير 2009 · 1 رد · 1,054 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

السؤال الاول

اكتب برنامج بلغة التجميع الاسمبلي يقوم بادخال عدد number ويقوم البرنامج بايجاد قيمة التعبير التالي وطباعة النتائج

(3*number+10)

السؤال الثاني

اكتب برنامج بلغة التجميع الاسمبلي يقوم بدمج سلسلتين رمزيتين طول كل منها 3 رموز

السؤال الثالث

اكتب برنامج بلغة التجميع اسمبلي يقوم بادخال سلسلة رمزية تتكون من 10 حروف كبيرة باللغة الانجليزية ويقوم بتحويلها إلى حروف صغيرة

السؤال الرابع

اكتب برنامج بلغة التجميع اسمبلي يقوم بطباعة رمز اشارة السؤال ؟ على الشاشة ثم تقوم بادخال عددين مجموعهما أقل من 10 وبعد ذلك يقوم بجمع العددين واظهار النتائج

تم تعديل هذه المشاركة بواسطة عائشة وافي في 13 فبراير 2009 في 08:47

#2

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

1. لنفرض أنك قمتي بكتابة الجزء المتعلق بإدخال الرقم وأن الرقم من المجال [0,65505] أي طوله الأعظمي 0FFE1h ونلاحظ أنه unsigned

لماذا طوله الأعظمي 0FFE1h وليس 0FFFFh؟ لأنه بعد الانتهاء من الجمع مع 30 لو كانت القيمة أكبر من 0FFE1h لأصبح هناك فيض كون أكبر قيمة في مسجل المعالج الذي نستخدمه هي 0FFFFh.

بفرض أن العدد تم تحميله للمسجل DX

سنقوم بتنفيذ عملية الضرب أولاً ضمن المعادلة أعلاه ثم الجمع

[color= #ff007f;]mov	[color= #7f7f40;]ax[color= #0000ff;],[color= #7f7f7f;]10

[color= #ff007f;]mov	[color= #7f7f40;]bx[color= #0000ff;],[color= #7f7f7f;]3

[color= #ff007f;]mul	[color= #7f7f40;]bx

[color= #ff007f;]add	[color= #7f7f40;]ax[color= #0000ff;],[color= #7f7f40;]dx

وتبقى عملية طباعة الناتج بعد تحويله إلى الشكل العشري المناسب وهنا تلزم استخدام قوانين التحويل المعروفة :D

2.

start[color= #0000ff;]:

	[color= #ff007f;]jmp main

arr1	[color= #7f00ff;]db	[color= #0000a0;]"foo$"

arr2	[color= #7f00ff;]db	[color= #0000a0;]"bar$"

arr3	[color= #7f00ff;]db	[color= #7f7f7f;]6 [color= #7f00ff;]dup [color= #0000a0; font-weight: bold;]([color= #7f7f7f;]0[color= #0000a0; font-weight: bold;])[color= #0000ff;],[color= #0000a0;]"$"

main[color= #0000ff;]:

	[color= #ff007f;]push	[color= #7f7f40;]cs

	[color= #ff007f;]pop	[color= #7f7f40;]ds

	[color= #ff007f;]lea	[color= #7f7f40;]si[color= #0000ff;],arr1

	[color= #ff007f;]lea	[color= #7f7f40;]di[color= #0000ff;],arr3

	[color= #ff007f;]mov	[color= #7f7f40;]cx[color= #0000ff;],[color= #7f7f7f;]3

	[color= #ff007f;]rep [color= #ff007f;]movsb [color= #0000a0; font-weight: bold;][[color= #7f7f40;]di[color= #0000a0; font-weight: bold;]][color= #0000ff;],[color= #0000a0; font-weight: bold;][[color= #7f7f40;]si[color= #0000a0; font-weight: bold;]]

	[color= #ff007f;]lea	[color= #7f7f40;]si[color= #0000ff;],arr2

	[color= #ff007f;]mov	[color= #7f7f40;]cx[color= #0000ff;],[color= #7f7f7f;]3

	[color= #ff007f;]rep [color= #ff007f;]movsb [color= #0000a0; font-weight: bold;][[color= #7f7f40;]di[color= #0000a0; font-weight: bold;]][color= #0000ff;],[color= #0000a0; font-weight: bold;][[color= #7f7f40;]si[color= #0000a0; font-weight: bold;]]

[color= #7f00ff;]end start

3. اكتب البرنامج ليدخل 10 أحرف ومن ثم اكتب حلقة تكرارية تمر فيها على كامل الأحرف العشرة وتضيف لها القيمة 20h لتحويلها إلى أحرف صغيرة طبعاً مع حفظها في نفس المكان وهذا أمر بسيط تنفيذه.

4. بسيط.

ملاحظة: لا يتم إعطاء حلول كاملة على واجبات عندما لا يقدم العضو حلوله لإظهار جهده المبذول بالتالي عليك بإكمال النواقص وعند الحاجة لسؤال تفضلي بالـ"سؤال" وسنجيب عليه إن شاء الله.

Do as I say, not as I do

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

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