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

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

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

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

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

الكاتب ayman

ayman

مواضيع متعلقة

التعليقات مغلقة