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

سؤال عن تنفيذ التعليمات في معالج i8086

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

السلام عليكم،

هذا مثال على المعالج i8086

Write the instruction Execution for this :
MOV DX, [Address]

Solution :

=> Fetch Phase :
step 1 : MAR <= PC
step 2 : Initiate Read ( MDR <= Memory )
step 3 : PC <= PC + 1 
step 4: IR <= MDR
step 5: Go to Execution phase

=> Execution phase:
step 6: MAR <= IR (operand)
step 7: Initiate Read
step 8: Acc <= MDR
step 9: DX <= Acc
step 10: Go to next fetch

انتهى المثال،

الآن أحاول الوصول لحل هذا السؤال وهو شبيه بنفس الطريقة التي تم بها حل المثال السابق:

ADD BX, [Address]

أعلم أن ال fetch phase هي نفسها ،

ولكن ماذا عن ال Execute phase ؟

كيف تتم عند استخدام ADD ؟

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

وشكراً مقدماً،

:)

تم تعديل هذه المشاركة بواسطة ala101 في 10 ديسمبر 2005 في 21:20

اللهم طهر أرض فلسطين من العملاء والخونة

#2

السلام عليكم

إذا لم تخنى الذاكرة اعتقد ان الاجابة هى

step9 BX<=BX+Acc

هذا هو الاختلاف الوحيد, حيث ان ALU له قناتين, ودائماً احد هذا القنوات تستطيع إستقبال احد المسجلات والاخرى تستطيع إستقبال اي شئ, وهذا هو فى الحقيقة السبب الذى يمنع إضافة متغير لمتغير اخر مباشرة.. على سبيل المثال السطر التالى غير مسموح به فى المعالج:

mov [memory1],[memory2]

لذلك نقوم دائماً بإيجاد حل اخر مثل

mov eax,[memory1]
mov [memory2],eax

او بإستخدام push و pop حتى نحفظ القيمة فى memory2 .

ربما افضل المراجع هو كتاب AoA والذى تجده على موقع webster.cs.ucr.edu وهناك الكثير من المواقع على الانترنت, يمكنك البحث عنها عبر جوجل لانها كثيرة جداً ومن الصعب وضعها هنا كروابط...

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#3

جزيتم خيراً أخي أحمد،

شكراً على المساعدة،

لكن حسب معلوماتي أن ال ALU يحتوي على مسجلين للإدخال:

two input registers وهما (AR1 , AR2 )

فلماذا لا نخزن القيمة الأولى في الAR1

والثانية في AR2

ثم تتم عملية ال ADD

ونخزن النتيجة في Acc

(Accumulator )

اللهم طهر أرض فلسطين من العملاء والخونة

#4

نعم اخى علاء ولكن احد هذه القنوات متصلة بالمسجلات فقط ولا يوجد إتصال معى الذاكرة, لذلك لا تستطيع التعامل معى مكانين مختلفين فى الذاكرة فى ان واحد, يمكنك فقط ان تقراء مكان واحد فى كل تعليمه..

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

جزاكم الله كل خير،

:)

اللهم طهر أرض فلسطين من العملاء والخونة

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

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