ضمن دروس شرح البرمجة بلغة الاسمبلي ,نقدم اليكم اليوم تكملة لأوامر لغة الاسمبلي - تعليمات IN و OUT و تعليمات السلاسل الحرفية - شرح المعالج الدقيق 8086.
ويمكنكم الاطلاع ايضا على الدروس السابقة من خلال الروابط التالية :
الدرس الثاني معالجات 4CISC و معالجات RISC - computer interface
الدرس الثالث المعالجات التواردية pipelining
الدرس الخامس المتحكمات الصغرية Microcontroller
الدرس السابع البنية الداخلية للمعالج 8088/ 8086
الدرس الثامن السجلات الداخلية للمعالج 8088/ 8086
الدرس التاسع تنظيم ذاكرة المعالج 8086
الدرس العاشر انماط العنونة addressing modes
الدرس الحادي غشر البرمجة بلغة التجميع assembly language
الدرس الثاني عشر موجِّهات او ايعازات لغة التجميع Assembler Directives
الدرس الثالث عشر تعليمات المعالج 8088/ 8086 - لغة التجميع
الدرس الرابع عشر تعليمات القفز المشروط - شرح المعالج 8086
الدرس الخامس عشر تعليمات الإزاحة - شرح المعالج 8086
الدرس الخامس عشر تعليمات الإزاحة - شرح المعالج 8086
الدرس السادس عشر تعليمات المكدس - شرح المعالج 8086
الدرس السابع عشر تعليمات الحلقات والدوران اسمبلي- شرح المعالج الدقيق 8086
تعليمات IN و OUT
تسمح التعليمتان IN و OUT بتبادل المعطيات بين AL أو
AX مع بوابات دخل/خرج تقع في فضاء عنونة بوابات المعالج 8086/8088 .
تقرأ التعليمةIN
القيمة على مدخل بوابة وتضعها في المراكم، في حين تضع أو تُخرج التعليمة OUT محتوى المراكم على مخرج بوابة. يمكن عنونة البوابات، الواقعة في فضاء عنونة بوابات المعالج 8088/8086 بطريقة مباشرة أو غير مباشرة.
عنونة مباشرة: في هذه الحالة تحتوي تعليمة IN و
OUT على رقم البوابة الذي يتراوح بين 0 و 255 إذا جرى تعيين AL كمعامل وجهة فإنه يجري تبادل بايت بين AL والبوابة.
وإذا جرى تعيين
AX كمعامل وجهة فإنه يجري تبادل كلمة بين
AX والبوابة
.
مثال:
إذا علمت أن لوحة المفاتيح keyboard للحاسوب الشخصي موصولة على البوابة ذات الرقم 60h فيمكنك قراءة هذه البوابة كما يلي:
IN AL, 60h
عنونة غير مباشرة: يمكن للمعالج 8086/8088 أن يعنون حتى 64 كيلو بوابة دخل/خرج طول
كل منها 1 بايت أو 32 كيلو بوابة دخل/خرج طول كل منها 2 بايت.
ولعنونة كامل فضاء بوابات الدخل/خرج يجري وضع رقم البوابة في السجل DX ومن ثم ُتعنون البوابة على نحو غير مباشر.
مثال:
إذا علمت أن عنوان البوابة التفرعية LTP1 للحاسوب الشخصي هو 378h فيمكنك قراءة هذه البوابة كما يلي:
MOV DX, 378h ;Point at LPT1: data port
IN AL, DX ;Read data from printer port.
اختبار ذاتي: اكتب تعليمات ُتخرج موجة مربعة على البت الثانية من البوابة التفرعية.
الجواب:
MOV DX, 378h ;Parallel printer port
address.
LoopForever: IN AL,
DX ;Read character from input port.
XOR AL, 1 ;Invert the L.O. bit.
OUT DX, al ;Output data back to
port.
JMP LoopForever ;Repeat forever.
تعليمات سلاسل المحارف
يقصد بسلاسل المحارف String سلسلة من المعطيات (بايتات أو كلمات) مخزنة في مواقع متتالية في الذاكرة. َتضم تعليمات المعالج 8086/8088 مجموعة من تعليمات سلاسل المحارف ُتمكننا من:
-
نسخ سلسة محارف من مكان إلى آخر في الذاكرة .
-
مقارنة سلسلتي محارف.
-
البحث عن قيمة في سلسلة محارف.
كما َتضم تعليمات ُتمكننا من نقل عناصر سلسلة محارف من المراكم وإليه. يمكن أن تحتوي تعليمات سلاسل المحارف على معامل مصدر أو معامل وجهة أو كليهما. وتفترض هذه التعليمات أن معامل المصدر يقع في مقتطع المعطيات الحالي , DS , وأن معامل الوجهة يقع في مقتطع المعطيات الإضافي ES .
تفترض هذه التعليمات أيضًا أن SI يعنون العنصر الحالي من سلسلة محارف المصدر، ويعنون DI العنصر الحالي من سلسلة محارف الوجهة.
تُحدث تعليمات سلاسل المحارف محتوى SI و/أو DI ليؤشروا إلى العنصر التالي من سلاسل المحارف بعد تنفيذ كل تعليمة. في حال كان DF=0 , فإنه يجري زيادة SI و DI بواحد (إذا كان
طول عنصر من السلسلة يساوي بايت) أو باثنين
(إذا كان طول عنصر من السلسلة يساوي
كلمة)، تصبح عملية الزيادة إنقاصًا إذا كان DF=1 .
التعليمتان MOVSB و MOVSW :
تنسخ التعليمة MOVSB بايت من سلسلة محارف المصدر )المعنونة ب SI ) إلى بايت من سلسلة محارف الوجهة (المعنونة ب .(DI
تنسخ التعليمة MOVSW كلمة من سلسلة محارف المصدر)المعنونة ب SI ) إلى كلمة من سلسلة محارف الوجهة ) المعنونة ب DI ).
الى اللقاء في التدوينة القادمة ان شاء الله
لا تنسى دعمنا بالمشاركة عزيزي الزائر
ممكن اسأل سوال ارجو الرد
ردحذفيمكنك ,,, لعلي استطيع الاجابه عليه ^__^
حذف