>دورة الاسمبلي : الدرس السابع

>

 

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

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

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

أضف تعليقاً

Filed under الاسمبلي - ASSEMBLY

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s