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 التعليقات:
إرسال تعليق