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

إلى أهل الخبرة في لغة التجميع

مغلق
بدأه وليد العبدالله في 13 مايو 2004 · 3 رد · 707 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سعيد جدا ً بالانضمام إلى هذا المنتدى المتميز

سؤالي إلى أهل الخبرة واتمنى المساعدة بقدر المستطاع

أنا بحاجة إلى برنامج يقوم بجمع مصفوفتين ويضع ناتج الجمع في مصفوفة ثالثة

اتمنى القى الحل لديكم

مع خالص الشكر والتقدير ،،،،،،،،،،،

#2

السلام عليكم,

سأعطيك اقتراح كما يلي:

نفترض أنه عندنا مصفوفة مكونة من 10 أرقام من نوع Word ومصفوفة ثانية مثل الأولى وسنحاول جمع المصفوفتين أي جمع الرقمين الأولين والثانيين إلى آخره ووضع كل جمع في مصفوفة ثالثة هي الأخرى تتكون من 10 أرقام.

في المعطيات سنسمي المصفوفة الأولى Num1 والمصفوفة الثانية Num2 والمصفوفة Result ستحتوي على النتيجة التي ستكون على الشكل التالي :

Result(i)=Num1(i) + Num2(i)

في المعطيات سنعلن عن المصفوفات :

Num1  dw  1,2,3,4,5,6,7,8,9,10
Num2   dw  20,21,22,23,24,25,26,27,28,29
Result   dw  10 dup(0)

الأعداد أعطيتها كمثال ويمكن أن نستبدلها بالأعداد التي نريد حقا استعمالها.

والقطعة التي ستنجز هذا يمكن أن نكتبها كما يلي :

lea di,Result
lea si,Num1
mov bx,20
mov cx,10
TheLoop:
mov dx,[si + bx]
lodsw
add ax,dx
stosw
loop  TheLoop

وهذا يمكن أن نفسره كما يلي:

- نضع في DI عنوان المصفوفة Result وفي SI عنوان Num1 ونفترض أن Num2 ستأتي مباشرة بعد Num1 كما في المعطيات وهذا سيجعل عنوان Num2 يساوي عنوان Num1 زائد 20 لأننا اخترنا المصفوفة طولها 10 في المثال وبما أنها من نوع Word أي كل عدد سيأخذ 2 لهذا ستزيد عنها ب 20 وهو ما سنضعه في الرجستر BX

- نضع في CX وهو عداد ل LOOP عدد المرات وهو عدد الأرقام التي نريد جمعها

- نضع في dx العدد الموجود في المصفوفة الثانية

- lodsw ستضع الوورد الموجود في si في الرجستر ax

- نزيد إلى ax العدد الموالي في المصفوفة الثانية والموجود في dx

- stosw ستضع ما في ax أي المجموع في di

وهنا وكالعادة نفترض أننا أعطينا لمختلف Segments القيم اللائقة بهم.

هذا بعجالة وأتمنى أنني لم أكتب أو يزهق لي خطء ما .

هذه من بين الطرق المختلفة التي يمكن أن نكتب بها هذا البرنامج.

إلى اللقاء.

#3

أخي الكريم chik

يعطيك العافية

وكل الشكر لك على هذا الجواب الكافي

الله لايحرمنا تميزكم وتواصلكم

تحياتي ،،،،،،

#4

السلام عليكم

اولا اود ان اشكر الاخ chik

اما بعد فانا لي وجهة نظر اخرى بالنسبة للمصفوفة التي سوف تتلقى النتيجة اي result من المحتمل ان نحصل على نتيجة اكبر من word في حالة جمع قيمتين من نوع word لهذا السبب يجب ان تكون المصفوفة الثالثة من نوع dw اي كلمة مزدوجة الا اذا كانت معطيات السؤال تقول بان النتيجة لن تكون اكبر من word ولكن يمكن ان تكون من نوع word ولكن يجب مراعاة الرايات cf و of

وشكرا

تم تعديل هذه المشاركة بواسطة afeef في 13 مايو 2004 في 23:36

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

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

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

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

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

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