يتبع شرح المعالج 8086 – التعليمات CMPS , SCAS, LODS , STOS , REPNZ , REPNE ،REPZ،REPE ،REP يتبع شرح المعالج 8086 – التعليمات CMPS , SCAS, LODS , STOS , REPNZ , REPNE ،REPZ،REPE ،REP - اقرا معي وتعلم على الانترنت

يتبع شرح المعالج 8086 – التعليمات CMPS , SCAS, LODS , STOS , REPNZ , REPNE ،REPZ،REPE ،REP

أوامر المعالج الدقيق 8086


نكمل معكم ايها الاحبة اوامر المعالج 8086 وسنأخذ اليوم التعليمات التالية CMPS , SCAS, LODS , STOS , REPNZ , REPNE ،REPZ،REPE ،REP

ويمكنكم الاطلاع ايضا على الدروس السابقة من خلال الروابط التالية :


التعليمة 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        



الى اللقاء في التدوينة القادمة والتي ستكون فصل جديد وهو الذاكرة و المسجلات في المعالج انتظرونا 
لا تنسى دعمنا عزيزي الزائر بمشاركة افعالنا هذه لتعم الفائدة 
دمت بالف خير 
شارك الموضوع
تعليقات
محتوى قد يهمك

.