نكمل معكم
ايها الاحبة اوامر المعالج 8086 وسنأخذ اليوم التعليمات التالية CMPS , SCAS, LODS , STOS , REPNZ , REPNE ،REPZ،REPE ،REP
ويمكنكم الاطلاع ايضا على الدروس السابقة من خلال الروابط التالية :
الدرس الثاني معالجات 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 و تعليمات السلاسل الحرفية - شرح المعالج الدقيق 8086
التعليمة CMPS :
تطرح هذه التعليمة عنصر الوجهة المعنون ب SI من عنصر المصدر المعنون ب DI , كما تحدّث التعليمة
SI و DI ليؤشروا إلى العنصرين التاليين من السلسلتين. لا تغير هذه التعليمة من محتوى المصدر أو الوجهة وإنما ُتحدث فقط حالة الرايات تبعًا للعلاقة بين عنصر المصدر وعنصر الوجهة. يمكن أن يكون طول كل من معامل المصدر والوجهة بايت أو كلمة.
التعليمة SCAS
تطرح هذه التعليمة عنصر الوجهة المعنون ب DI من محتوى المراكم، وُتحدّث التعليمة DI ليؤشر إلى عنصر السلسلة التالي.
لا تغيير هذه التعليمة من محتوى الوجهة أو المراكم وإنما
تحدّث فقط حالة الرايات تبعًا للعلاقة بين عنصر المصدر والمراكم.
يجري استخدام المراكم AL عندما يكون طول معامل الوجهة 1 بايت، و AX عندما يكون طول معامل الوجهة 2 بايت.
التعليمة LODS
تنسخ هذه التعليمة بايتًا أو كلمة معنونة ب SI إلى AL أو AX , وُتحدّثSI ليؤشر إلى العنصر التالي من السلسلة.
التعليمة STOS
تنسخ هذه التعليمة بايتًا أو كلمة من AL أو AX إلى العنصر من سلسلة المحارف المعنون بـ SI , كما
تحدث SI ليؤشر إلى العنصر التالي من السلسلة.
التعليمات REPNZ و REPNE
،REPZ ،REPE ،REP
تسمح هذه البادئات إذا أضيف إحداها قبل إحدى التعليمات ،CMPS ،MOVSW ،MOVSB SCAS , بتكرار تنفيذ هذه التعليمات على الأكثر CX مرة.
يجري إنقاص CX بـ 1 بعد كلتكرار، لذلك يجب وضع في CX عدد التكرارات الأعظم المسموح به قبل تنفيذ هذه التعليمات. تستخدم البادئة REP لتكرار تنفيذ تعليمات سلاسل المحارف عددًا من المرات محددًا ب CX وتستخدم البادئتين REPE و REPZ (المتكافئتين)
لتكرار تنفيذ تعليمات سلاسل المحارف مادام
ZF=1 وعلى الأكثر CX مرة. وتستخدم البادئتين
REPNE و REPNZ
(المتكافئتين) لتكرار تنفيذ تعليمات سلاسل المحارف مادام ZF=0 وعلى الأكثر CX مرة.
مثال: تنسخ التعليمات التالية ثمانية بايتات من سلسلة المحارف تبدأ بالعنوان 02000h إلى سلسلة محارف أخرى تبدأ بالعنوان
.02400H
MOV AX, 0h
MOV DS, AX
MOV ES, AX
MOV SI, 2000h
MOV DI, 2400h
MOV CX, 8h
CLD
REP MOVSB
اختبار ذاتي: اكتب برنامجًا يقرأ الاسم "Mr.Gohns" ويستعيض عن كل "G" بالمحرف ."J"
الجواب:
Data1 db
'Mr.Gones','$'
.code
MOV ES,DS
CLD ;set auto increment
bit D=0
MOV DI, offset Data1
MOV CX,09 ; number of chars to be scanned
MOV AL,'G' ; char to be compared against
REPNE SCASB ; start scan AL =? ES[DI]
JNE Over ; if Z=0
DEC DI ; Z=1
MOV byte ptr[DI],
'J'
Over: MOV AH,09
MOV DX, offset Data1
INT 21h ; display the resulting String
الى اللقاء في التدوينة القادمة والتي ستكون فصل جديد وهو الذاكرة و المسجلات في المعالج انتظرونا
لا تنسى دعمنا عزيزي الزائر بمشاركة افعالنا هذه لتعم الفائدة
دمت بالف خير
إرسال تعليق
لا تبخل علينا باقتراحك او قم بمشاركة الموضوع ليستفيد الاخرين ايضاً شكرا لزيارتك عزيزي الزائر