Navigation

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

تطرح هذه التعليمة عنصر الوجهة المعنون ب SI من عنصر المصدر المعنون ب DI ,كما تحدّث التعليمة SI و DI ليؤشروا إلى العنصرين التاليين من السلسلتين. لا تغير هذهالتعليمة من محتوى المصدر أو الوجهة وإنما ُتحدث فقط حالة الرايات تبعًا للعلاقة بينعنصر المصدر وعنصر الوجهة. يمكن أن يكون طول كل من معامل المصدر والوجهة بايت أو كلمة

التعليمة CMPS :

تطرح هذه التعليمة عنصر الوجهة المعنون ب SI من عنصر المصدر المعنون ب DI ,كما تحدّث التعليمة SI و DI ليؤشروا إلى العنصرين التاليين من السلسلتينلا تغير هذهالتعليمة من محتوى المصدر أو الوجهة وإنما ُتحدث فقط حالة الرايات تبعًا للعلاقة بينعنصر المصدر وعنصر الوجهةيمكن أن يكون طول كل من معامل المصدر والوجهة بايت أو كلمة.

التعليمة SCAS

تطرح هذه التعليمة عنصر الوجهة المعنون ب DI من محتوى المراكم، وُتحدّث التعليمةDI ليؤشر إلى عنصر السلسلة التاليلا تغيير هذه التعليمة من محتوى الوجهة أوالمراكم وإنما تحدّث فقط حالة الرايات تبعًا للعلاقة بين عنصر المصدر والمراكميجرياستخدام المراكم AL عندما يكون طول معامل الوجهة بايت، و AX عندما يكون طولمعامل الوجهة بايت.

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

أضف تعليق:

0 comments: