حلول لمشاكل الفصل الرابع من قاعدة بيانات علوم الكمبيوتر الكاملة عبر الإنترنت ودورة التوظيف عبر الإنترنت من البداية

Hlwl Lmshakl Alfsl Alrab Mn Qa Dt Byanat Lwm Alkmbywtr Alkamlt Br Alantrnt Wdwrt Altwzyf Br Alantrnt Mn Albdayt



المشاكل وحلولها

1) اكتب برنامج لغة التجميع الذي يبدأ بسعر 0200 دولار لـ 6502 μP ويضيف الأرقام غير الموقعة لـ 2A94 ح (إضافة) إلى 2ABF ح (أغسطس). دع المدخلات والمخرجات تكون في الذاكرة. قم أيضًا بإنتاج وثيقة البرنامج المجمعة يدويًا.







حل:



CLC
LDA 0213 دولارًا
أدك 0215 دولار
ستا 0217 دولارًا
LDA 0214 دولارًا
أدك 0216 دولار
ستا 0218 دولارًا



البرنامج المجمع:





2) اكتب برنامج لغة التجميع الذي يبدأ بسعر 0200 دولار، لـ 6502 μP، ويطرح الأرقام غير الموقعة، 1569 ح (مطروح) من 2ABF ح (التذكير). دع المدخلات والمخرجات تكون في الذاكرة. قم أيضًا بإنتاج وثيقة البرنامج المجمعة يدويًا.



حل:

ثانية
LDA 0213 دولارًا
اس بي سي 0215 دولار
ستا 0217 دولارًا
LDA 0214 دولارًا
اس بي سي 0216 دولار
ستا 0218 دولارًا

البرنامج المجمع:

3) اكتب برنامج لغة التجميع لـ 6502 μP الذي يصل من 00 دولار إلى 09 دولار باستخدام حلقة. يجب أن يبدأ البرنامج بسعر 0200 دولار. قم أيضًا بإنتاج وثيقة البرنامج المجمعة يدويًا.

حل:

LDA # 09 دولارًا
0220 دولارًا أمريكيًا ؛ لمقارنة X و $09
LDX # 00 دولار
حلقة INX
CPX 0220 دولارًا
حلقة بي إن إي

البرنامج المجمع:

4) اكتب برنامج لغة التجميع الذي يبدأ بسعر 0200 دولار لـ 6502 μP. يحتوي البرنامج على روتينين فرعيين. يضيف الروتين الفرعي الأول الأرقام غير الموقعة 0203 ح (أغسطس) و 0102 ح (الإضافة). يضيف الروتين الفرعي الثاني المجموع من الروتين الفرعي الأول وهو 0305 ح إلى 0006 ح (أغسطس). يتم تخزين النتيجة النهائية في الذاكرة. قم باستدعاء الروتين الفرعي الأول وهو FSTSUB والروتين الفرعي الثاني وهو SECSUB. دع المدخلات والمخرجات تكون في الذاكرة. قم أيضًا بإنتاج وثيقة البرنامج المجمعة للبرنامج بأكمله يدويًا.

حل:

SECSUB CLC
LDA 021 ألف دولار
أدك 0234 دولار
ستا 0236 دولارًا
LDA 021 مليار دولار
أدك 0235 دولار
ستا 0237 دولارًا
آر تي إس

FSTSUB CLC
LDA 0216 دولارًا
أدك 0218 دولار
ستا $021A
LDA 0217 دولارًا
أدك 0219 دولار
ستا 021 مليار دولار
آر تي إس

JSR FSTSUB

البرنامج المجمع:

5) ونظرا لذلك ¯IRQ يضيف المعالج 02 دولارًا إلى 01 دولارًا في المجمع كمعالجة أساسية أثناء ¯نمي يتم إصدارها، والتعامل الأساسي ل ¯نمي يضيف $05 إلى $04 في المجمع، ويكتب لغة تجميع لكلا المعالجين بما في ذلك مكالماتهم. الدعوة إلى ¯IRQ يجب أن يكون المعالج على عنوان 0200 دولار. ال ¯IRQ يجب أن يبدأ المعالج عند عنوان 0300 دولار. ال ¯نمي يجب أن يبدأ المعالج عند عنوان 0400 دولار. نتيجة ¯IRQ يجب وضع المعالج على عنوان 0500 دولار، ونتيجة لذلك ¯نمي يجب وضع المعالج على عنوان 0501 دولارًا.

حل:

نمصر فا ؛ يبدأ روتين NMI هنا عند العنوان 0400 دولار
PHX
فاي
;
إل دي إيه #$04
أدك # $05
ستا 0501 دولار
;
رقائق
بليكس
جيش التحرير الشعبى الصينى
RTI

آي إس آر فا؛ هذه التعليمات موجودة على العنوان 0300 دولار
PHX
فاي
;
إل دي إيه #$01
أدك # $02
; JMP NMISR : تم التعليق عليه لأنه ليس جزءًا من الروتين
0500 دولار أمريكي؛ سوف تذهب إلى المكدس
;
رقائق
بليكس
جيش التحرير الشعبى الصينى
RTI
;
أحزاب اللقاء المشترك ISR؛ هذه التعليمات موجودة على العنوان 0200 دولار

6) اشرح بإيجاز كيفية استخدام تعليمات BRK لإنتاج مقاطعة البرنامج في جهاز كمبيوتر 65C02.

حل:

الطريقة الرئيسية لمقاطعة البرنامج لـ 65C02 μP هي استخدام تعليمات العنوان الضمنية BRK. افترض أن البرنامج الرئيسي قيد التشغيل، وأنه يواجه تعليمة BRK. من تلك النقطة، يجب إرسال عنوان التعليمة التالية في الكمبيوتر إلى المكدس عند اكتمال التعليمة الحالية. يجب استدعاء روتين فرعي للتعامل مع تعليمات البرنامج بعد ذلك. يجب أن يقوم هذا الروتين الفرعي للمقاطعة بدفع محتويات التسجيل A وX وY إلى المكدس. بعد تنفيذ جوهر الروتين الفرعي، يجب سحب محتويات السجلات A وX وY من المكدس إلى سجلاتها من خلال إكمال الروتين الفرعي. العبارة الأخيرة في الروتين هي RTI. يتم أيضًا سحب محتوى الكمبيوتر الشخصي من المكدس إلى الكمبيوتر الشخصي تلقائيًا، بسبب RTI.

7) قم بإنشاء جدول يقارن بين الروتين الفرعي العادي وروتين خدمة المقاطعة.

حل:

8) اشرح بإيجاز أوضاع العنونة الرئيسية لـ 65C02 μP مع إعطاء أمثلة تعليمات لغة التجميع.

حل:

كل تعليمات لـ 6502 هي بايت واحد، متبوعًا بصفر أو أكثر من المعاملات.

وضع المعالجة الفورية
في وضع العنونة المباشرة، بعد المعامل، تكون القيمة وليس عنوان الذاكرة. يجب أن تكون القيمة مسبوقة بـ #. إذا كانت القيمة بالنظام الست عشري، فيجب أن يتبع '#' '$'. تعليمات العنونة المباشرة لـ 65C02 هي: ADC، AND، BIT، CMP، CPX، CPY، EOR، LDA، LDX، LDY، ORA، SBC. يجب على القارئ الرجوع إلى الوثائق الخاصة بـ 65C02 μP لمعرفة كيفية استخدام التعليمات المدرجة هنا والتي لم يتم شرحها في هذا الفصل. مثال على التعليمات هو:

LDA # 77 دولارًا

وضع العنونة المطلق
مع وضع العنونة المطلقة، هناك معامل واحد. هذا المعامل هو عنوان القيمة الموجودة في الذاكرة (عادةً بالنظام الست عشري أو التسمية). يوجد 64K10 = 65,53610 عنوان ذاكرة لـ 6502 μP. عادةً ما تكون قيمة البايت الواحد موجودة في أحد هذه العناوين. تعليمات العنونة المطلقة لـ 65C02 هي: ADC، AND، ASL، BIT، CMP، CPX، CPY، DEC، EOR، INC، JMP، JSR، LDA، LDX، LDY، LSR، ORA، ROL، ROR، SBC، STA ، STX، STY، STZ، TRB، TSB. يجب على القارئ الرجوع إلى الوثائق الخاصة بـ 65C02 μP لمعرفة كيفية استخدام الإرشادات المذكورة هنا بالإضافة إلى بقية أوضاع العنونة التي لم يتم شرحها في هذا الفصل. مثال على التعليمات هو:

هم 1234 دولار

وضع العنونة الضمني
مع وضع العنونة الضمني، لا يوجد أي معامل. يتم تضمين أي تسجيل μP ضمنيًا في التعليمات. تعليمات العنونة الضمنية لـ 65C02 هي: BRK، CLC، CLD، CLI، CLV، DEX، DEY، INX، INY، NOP، PHA، PHP، PHX، PHY، PLA، PLP، PLX، PLY، RTI، RTS، SEC ، SED، SEI، TAX، TAY، TSX، TXA، TXS، TYA. مثال على التعليمات هو:

DEX: إنقاص تسجيل X بمقدار وحدة واحدة.

وضع العنونة النسبية
يتعامل وضع العنونة النسبي فقط مع تعليمات الفرع. في وضع العنونة النسبي، يوجد مُعامل واحد فقط. وهي قيمة من -12810 إلى +12710. وتسمى هذه القيمة إزاحة. وبناء على الإشارة، يتم إضافة هذه القيمة أو طرحها من التعليمة التالية لعداد البرنامج إلى النتيجة في عنوان التعليمة التالية المقصودة. تعليمات وضع العنوان النسبي هي: BCC، BCS، BEQ، BMI، BNE، BPL، BRA، BVC، BVS. أمثلة التعليمات هي:

BNE $7F : (فرع إذا كان Z = 0 في سجل الحالة، P)

الذي يضيف 127 إلى عداد البرنامج الحالي (العنوان المراد تنفيذه) وبدء تنفيذ التعليمات على هذا العنوان. بصورة مماثلة:

BEQ $F9 : (فرع إذا Z = : في سجل الحالة، P)

الذي يضيف -7 إلى عداد البرنامج الحالي ويبدأ التنفيذ على عنوان عداد البرنامج الجديد. المعامل هو رقم مكمل لاثنين.

معالجة الفهرس المطلق
باستخدام معالجة الفهرس المطلق، تتم إضافة محتوى سجل X أو Y إلى العنوان المطلق المحدد (في أي مكان من $0000 إلى $FFFF، أي من 010 إلى 6553610) للحصول على العنوان الحقيقي. يُسمى هذا العنوان المطلق بالعنوان الأساسي. إذا تم استخدام سجل X، فإن تعليمات التجميع تكون كالتالي:

LDA $C453,X

إذا تم استخدام السجل Y، فسيكون الأمر كما يلي:

LDA $C453,Y

تسمى قيمة السجل X أو Y قيمة العد أو الفهرس ويمكن أن تتراوح من 00 $ (010) إلى $FF (25010). ولا يسمى الإزاحة.

تعليمات معالجة الفهرس المطلقة هي: ADC، AND، ASL (X فقط)، BIT (مع المجمع والذاكرة، مع X فقط)، CMP، DEC (الذاكرة وX فقط)، EOR، INC (الذاكرة وX فقط)، LDA ، LDX، LDY، LSR (X فقط)، ORA، ROL (X فقط)، ROR (X فقط)، SBC، STA، STZ (X فقط).

المخاطبة غير المباشرة المطلقة
يُستخدم هذا فقط مع تعليمات القفز. وبهذا، يكون للعنوان المطلق المحدد عنوان مؤشر. يتكون عنوان المؤشر من بايتين. يشير المؤشر ثنائي البايت إلى (عنوان) قيمة البايت الوجهة في الذاكرة. لذلك، تعليمات لغة التجميع هي كما يلي:

أحزاب اللقاء المشترك (3456 دولارًا)

مع وجود الأقواس و$13 في عنوان $3456 بينما $EB موجود في عنوان $3457 (= $3456 + 1)، فإن عنوان الوجهة هو $13EB و$13EB هو المؤشر. المطلق 3456 دولارًا موجود بين قوسين في التعليمات.

9) أ) اكتب برنامج لغة الآلة 6502 لوضع عبارة 'أحبك!' سلسلة من رموز ASCII في الذاكرة، بدءًا من العنوان $0300 بطول السلسلة. يجب أن يبدأ البرنامج عند العنوان 0200 دولار. احصل على كل حرف من المجمع، على افتراض أنه تم إرسالهم إلى هناك واحدًا تلو الآخر بواسطة روتين فرعي ما. أيضًا، قم بتجميع البرنامج يدويًا. (إذا كنت تريد معرفة رموز ASCII لعبارة 'أنا أحبك!'، فإليك هذه الرموز: 'I':4916, space : 2016, 'l': 6C16, 'o':6F16, 'v':7616, ' e':65، 'y':7916، 'u':7516، و '!':2116. ملاحظة: كل رمز يشغل بايت واحد).

ب) اكتب برنامج لغة الآلة 6502 لوضع عبارة 'أحبك!' سلسلة من رموز ASCII في الذاكرة، تبدأ من العنوان 0300 دولار بدون طول السلسلة وتنتهي بالرقم 0016. يجب أن يبدأ البرنامج عند العنوان 0200 دولار. احصل على كل حرف من المجمع، على افتراض أنه تم إرسالهم إلى هناك واحدًا تلو الآخر بواسطة روتين فرعي. قم أيضًا بتجميع البرنامج يدويًا.

حل:

أ) الإستراتيجية: هناك 12 بايت للسلسلة: 1 بايت لطول السلسلة و11 بايت للسلسلة الحرفية. لذلك، يجب أن يكون هناك 12 تكرارًا (حلقات) تحسب من 0. أي: 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، 10، 11. هذه هي 12 رقمًا.

يتم وضع العدد الصحيح 0 في سجل X ويتم وضع الرقم 1110 = 1210 – 110 = B16 = $0B في موقع عنوان في الذاكرة، على سبيل المثال العنوان $0250. لكل تكرار، تتم زيادة القيمة الموجودة في سجل X، وتتم مقارنة النتيجة بـ $0B في موقع العنوان $0250. مباشرة بعد أن تساوي القيمة في X قيمة $0B، يتوقف التكرار. عند هذه النقطة، يشغل طول (عدد البايتات) من السلسلة والسلسلة الحرفية مواقع العناوين من 0300 دولار إلى 030 مليار دولار (شاملاً). من أجل زيادة عناوين الذاكرة من $0300، يتم استخدام السجل Y. الكود هو:

LDA # $0B
هم 0250 دولار
LDX # 00 دولار
LDY #$00
0300 دولار أمريكي؛ يتم وضع طول 11 في A بواسطة بعض الإجراءات الفرعية ويصل إلى 0300 دولار
حلقة INX
هناك
0250 بيزو بيزو
حلقة بي كيو

ب) الإستراتيجية: هناك 12 بايت للسلسلة: بايت واحد للفاصل Null $00 و11 بايت للسلسلة الحرفية. لذلك، يجب أن يكون هناك 12 تكرارًا (حلقات) تحسب من 0. أي: 0، 1، 2، 3، 4، 5، 6، 7، 8، 9، 10، 11. هذه هي 12 رقمًا.

يتم وضع العدد الصحيح 0 في سجل X ويتم وضع الرقم 1110 = 1210 – 110 = B16 = $0B في موقع عنوان في الذاكرة، على سبيل المثال العنوان $0250. لكل تكرار، تتم زيادة القيمة الموجودة في سجل X، وتتم مقارنة النتيجة بـ $0B في موقع العنوان $0250. مباشرة بعد أن تساوي القيمة في X قيمة $0B، يتوقف التكرار. عند هذه النقطة، عدد بايتات السلسلة الحرفية بالإضافة إلى الحرف Null يشغل مواقع العناوين (الشاملة) من 0300 دولار إلى 030 مليار دولار. من أجل زيادة عناوين الذاكرة من $0300، يتم استخدام السجل Y. الكود هو:

LDA # $0B
هم 0250 دولار
LDX # 00 دولار
LDY #$00
0300 دولار أمريكي؛ يتم وضع 'I' في A بواسطة بعض الإجراءات الفرعية ويصل إلى 0300 دولار
حلقة INX
هناك
0250 بيزو بيزو
حلقة بي كيو