أتذكر أن آخر تعليمات تناولناها سويا الدرس السابق هى التعليمات المنطقيه ، و نسيت ذكر واحده فقط ، سأذكرها هنا أولا :
NOT
هذه التعليمه مسؤوله عن عكس القيمه التى بداخل المكان الذى يذكر بعدها ، بمعنى ... مممممممممم ، أنظر المثال الأتى :
مثال :
-------
لو أنه يوجد بالمسجل AL قيمه ثنائيه على هذا الشكل 01110010
ونريد عكس هذه القيمه لتكون هكذا 10001101 ، نستخدم هذه التعليمه و هو مساويه للمقابل الأول First Complement ، كل بت يتم عكس قيمته .
|
CODE
|
|
MOV AL,01110010B NOT AL ;AL = 100011010B NOW |
--------------------------------------------------------------------------------------------------------------------------
نأتى لتعليمات الإزاحه و الدوران Shift And Rotate Instructions
- هذه التعليمات تتعامل مع التشكيل الثنائى المنطقى كما تتعامل التعليمات المنطقيه السابقه مع القيم المختلفه Logic Bit Instructions
- تستخدم هذه التعليمات بكثره فى دوال التحكم فى وحدات الإدخال و الإخراج Control I/O Divices
- تستخدم مع جميع أنواع المسجلات و الذاكره
أولا : تعليمات الإزاحه : Shift Instructions
- معنى الإزاحه هى إزاحة القيم الثنائيه المتتاليه إلى اليمين أو اليسار (>>> || <<<)
- تستخدم فى العمليات الحسابيه مثل الضرب و القسمه (إزاحه لليسار بت واحده تعنى ضرب فى 2 و إزاحه لليمين بت واحد تعنى قسمه على 2)
- هناك أربع تعليمات إزاحه عباره عن مجموعتين (إزاحه منطقيه Logical Shift و إزاحه حسابيه Arithmatic Shift)
- جميع هذه التعليمات تتم من خلال علم الحمل Carry Flag
- وكما ترى بالشكل الأتى ، كيفية عمل هذه التعليمات و الفرق بينهما .
- تلاحظ أن الإزاحه المنطقيه إلى اليسار SHL تتم الإزاحه و يتم وضع من اليمين صفر ، وفى الإزاحه المنطقيه إلى اليمين SHR يتم وضع صفر من اليسار .
- تلاحظ فى تعليمات الإزاحه الحسابيه إلى اليسار SAL مثل الإزاحه المنطقيه إلى اليسار ، أما الإزاحه الحسابيه إلى اليمين فيتم وضع نفس القيمه فى االبت الأخير كما هى و هذا بسبب عدم تأثر إشارة القيمه الموجوده و لذلك سميت إزاحه حسابيه .
- يمكن إستعمال الإزاحه المنطقيه مع القيم التى بدون إشاره Unsigned Numbers .
- يمكن إستعمال الإزاحه الحسابيه مع القيم التى بإشاره Signed Number .
- لا يمكن إستعمال الإزاحه مع مسجلات المقاطع مطلقا وفيما عذا ذلك يمكن إستخدامها.
أمثله لتعليمات الإزاحه المختلفه :-
--------------------------------------
|
CODE
|
|
SHR AH,3 ;AX is logically shifted Right 3 places SHL CX,12 ;CX is logically shifted right 12 places SHR [1000] , 3 ;The memory location adrresed by 1000 in the data segment is right shifted by 3 places MOV CL,10 SAR DX,CL ;DX is arithmatically shefted to right by number in CL ;Note that CL Here called the sheft count register and can be used as above SAL EDX,1 ;EDX is arithmaticaly shifted by 1 place |
مثال لإستخدام عملية الإزاحه إلى اليسار فى ضرب القيمه الموجوده داخل المسجل AX فى القيمه 1010 وهى مساويه ل10 فى النظام العشرى .
|
CODE
|
|
SHL AX,1 ;AX = AX * 2B MOV BX,AX ;BX = AX * 2 SHL AX,2 AX = AX * 8 ADD AX , BX ;AX =AX * 10 ;AX = AX * 1010B ; :) |
--------------------------------------------------------------------------------------------------------------------------
ثانيا : تعليمات الدوران : Rotate Instructions
- تقوم هذه التعليمات بعمل إزاحه من طرف المسجل أو المكان بالذاكره إلى الطرف الأخر.
- أربع تعليمات مقسمين إلى مجموعتين ( دوران خلال علم الحمل Rotate أو دوران خارج علم الحملRoate throught carry )
- وكما ترى بالشكل الأتى ، كيفية عمل هذه التعليمات و الفرق بينهما .
- يتضح من الشكل المبين سابقا أن تعليمات الدوران من خلال علم الحمل RCL , RCR تدور البتات من طرف إلى علم الحمل إلى الطرف الأخر .
- أما التعليمات الأخرى ROR , RRL تدور البتات من طرف إلى الأخر ومن ثم وضع البت المنقوله إلى علم الحمل كما هو مبين بالشكل.
- أمثله :-
|
CODE
|
|
ROL SI,14 ;SI rotated left by 14 places RCL BL,6 ;BL rotates left through carry by 6 places ROL ECX,18 ;ECX rotates left by 18 places RCR AH,CL ;AH rotates through carry by the number of places in CL ROR WORD PTR[BP] , 2 ;The word contents of the stack segment memory location addressed by BP rotate right by 2 places |
--------------------------------------------------------------------------------------------------------------------------
تعليمات البحث عن البت 1 : Bit Scan Instructions
- وظيفة هذه التعليمات هى البحث عن بت واحد داخل مسجل ما أو مكان بالذاكره .
- هذه التعليمات لها صيغتين وهما BSF (Bit Scan Forward) & BSR (Bit Scan Reverce) 2
- BSF وتقوم بالبحث من اليسار إلى اليمين (من البت 0 إلى البت 15 فى AX )
- BSR وتقوم بالبحث من اليمين إلى اليسار (من البت 15 إلى البت 0 فى AX)
- تأخذ التعليمه مدخلان (Source & Destination) ،
- عندما يجد المعالج 1 فإنه يقوم بتصحيح القيمه التى بعلم الصفر If a 1-bit is encountered , zero flag is set . ومن ثم يوضع رقم هذه البت فى المدخل الأول Destination .
مثال :-
|
CODE
|
|
MOV AL,00101000 BSF BL,AL ;Zero Flag is set ;BL contains 3 , the 1-bit position in Al from left BSR CL,AL ;Zero Flag is set ;CL Contains 4 , the 1-bit position in AL from right |

