دورة الأسمبلى - اليوم السابع

مازلنا بتعليمات الأسمبلى ، هذا آخر درس بإذن الله فى تعليمات الأسمبلى الأساسيه قبل أن نبدأ بكتابة برامج بالأسمبلى من اليوم القادم ،،، و من ثم نكمل باقى تعليمات التحكم و الدورات و باقى التعليمات المهمه ....

أتذكر أن آخر تعليمات تناولناها سويا الدرس السابق هى التعليمات المنطقيه ، و نسيت ذكر واحده فقط ، سأذكرها هنا أولا :

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
-
وكما ترى بالشكل الأتى ، كيفية عمل هذه التعليمات و الفرق بينهما .


user posted image



- تلاحظ أن الإزاحه المنطقيه إلى اليسار 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 )
-
وكما ترى بالشكل الأتى ، كيفية عمل هذه التعليمات و الفرق بينهما .

 

user posted image




- يتضح من الشكل المبين سابقا أن تعليمات الدوران من خلال علم الحمل 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

 



 

 

 

 

 


Copyright © www.kettaneh.net