5- التعليمة MOV






1-  التعليمة MOV:
تستخدم هذه التعليمة لنقل بيانات معينة من المتأثر المصدر إلى المتأثر الهدف مهما كانت نوعية هذا المتأثر أما الاحتمالات التي تتعامل معها هذه التعليمة فهي كثيرة وتتم وفق الآتي:
·       من المراكم ِإلى الذاكرة والعكس صحيح أيضاً
·       من المسجل إلى المسجل
·       من الذاكرة إلى المسجل والعكس صحيح
·       من مسجل 16بت إلى مسجل مقطع
·       من ذاكرة إلى مسجل مقطع
·       من مسجل مقطع إلى مسجل 16بت
الآن سنقوم بأخذ أمثلة على هذه التعليمة وعلينا التدقيق بكيفية كتابتها بالطريقة الصحيحة
المثال الاول هو مثال سابق لاحظ في البداية كيفية نقل قيمة الى مسجل باستخدام هذه التعليمة:

;عملية حسابية لجمع قيمة مسجلين ثم طرح قيمة من احد المسجلات
MOV AX,4
MOV BX,3
ADD AX,BX
SUB AX,2


التعامل مع المسجلات من نوع 8 بت أو حتى 16 بت طبعاً مشابه لما جاء في العمليات الحسابية السابقة لاحظ المثال التالي


;عملية حسابية لجمع قيمة مسجلين من نوع 8بت ثم طرح قيمة من احد المسجلات
MOV Al,4
MOV Bl,3
ADD Al,Bl
SUB Al,2
;عملية حسابية لجمع قيمة مسجلين من نوع 32بت ثم طرح قيمة من احد المسجلات
MOV EAX,4
MOV EBX,3
ADD EAX,EBX
SUB EAX,2


يمكن أخذ بعض الأمثلة الأخرى بالنسبة للتعليمة MOV وستكون هذه التعليمات خاطئة لاحظ معنا فكل ما ينطبق في السابق على ما سبق ذكره من تعليمات ينطبق هنا


;عملية حسابية لنقل قيمة الى مسجلين من نوع 8بت و16 بت وجمعهما وهي عملية خاطئة
MOV Al,4
MOV BX,3
ADD Al,BX

;عملية حسابية لنقل قيمة الى مسجلين من نوع 32بت و16 بت وجمعهما وهي عملية خاطئة
MOV AX,4
MOV EBX,3
ADD AX,EBX


الآن سنقوم بأخذ مثال لتعامل هذه التعليمة مع عناوين داخل ذاكرة وللعلم فإن ما ينطبق على ما سبق من تعليمات رياضية ينطبق على هذه التعليمة أي أنه لا يمكن نقل موقع داخل ذاكرة الى موقع داخل الذاكرة مباشرة دون استخدام وسيط غالبا هو المسجل على كل حال لاحظ المثال التالي:


;عملية حسابية لنقل قيمة في الذاكرة  ثم طرح قيمة من احد المسجلات
MOV AX , FFFF
MOV CX,1
SUB AX , CX


تستخدم التعليمة MOV كما ذكرنا سابقاً للتعامل مع المكدس ومسجلات المقطع وسنقوم بأخذ مجموعة من الأمثلة لمعرفة كيفية استخدامها بالطريقة الصحيحة لكن قل كل شيء يجب التذكير ببعض التعاريف الهامة المتعلقة بالمكدس حتى نتقن الكتابة بشكل صيح وللعلم فإن ما سيرد الآن تم شرحه سابقاً لكنه ذو أهمية بالنسبة للمبتدئين فوجب التذكير به لاحظ الجدول:
الوصف
نوع المسجل
شيفرة المقطع
CS
بيانات المقطع
DS
مكدس المقطع
SS
مؤشرات مقطع إضافية
ES-FS-GS

المسجلات السابقة هي مجموعة مسجلات من نوع 16 بت لذلك علينا الانتباه إلى هذه الملاحظة على كل حال المثال التالي يشرح كيفية نقل محتويات ثلاث خانات في المكدس وذلك دون تغيير محتويات المكدس


MOV BP , SP
MOV AX , [ BP]
MOV BX , [ BP + 2]
MOV CX , [ BP + 4]


ملاحظة هامة: مسجل مؤشر القاعدة Base Pointer BP يحوي قيمة تدل على الإزاحة بالنسبة لمقطع المكدس SS وهو يستخدم لقراءة المعطيات ضمن مقطع المكدس بدون إزالتها من المكدس ودون إحداث تبديل داخل المكدس وللعلم فإن هذا المسجل هو من فئة 16 بت ويمثله مسجل رديف له من فئة 32 بت في المعالجات الأحدث EPP
الآن سنقوم بإعطاء مثال عن كيفية التعامل مع عنوان ذاكرة حيث سنقوم بعملية نقل جزء من عنوان إلى أحد المسجلات وللعلم فإن تمثيل القيمة العددية يكون بطريقة الازاحة على كل حال انظر الى المثال التالي


هنا عملية نقل قيمة عنوان إلى المسجل AL لاحظ كيفية كتابة التعليمة
mov al, Byte ptr [0000005Bh]
في حال تم عملية نقل قيمة بمقدار كلمة أي اربع كيلوبايت فيتم بالطريقة التالية
moveax, Dowrdptr [0000005Bh]


شاركه على جوجل بلس

عن حذيفة مهيار

    تعليقات بلوجر
    تعليقات فيسبوك

0 التعليقات:

إرسال تعليق