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

السلام عليكم
اليوم السادس فى الأسمبلى ،،

سنكمل بإذن الله ما بدأناه فى اليوم السابق من سرد تعليمات الأسمبلى ،ولق إستعرضنا فى اليوم السابق(الخامس) التعليمات الحسابيه مثل ADD,SUB,MUL,DIV

اليوم ، نبدأ بتعليمات عامه منها ما يستخدم بكثره ولقد حاولت قدر الإمكان أن أبتعد عن التعليمات التى لا تستخدم إطلاقا إلى فى حالات نادره يمكن أن نتحدث عنها آن حدوثها ، المهم ... خذ نفس عميق ... ركز .... و Let's Go

MOV
-------


التعليمه تستخدم فى المساواة بدلا من "=" أو لتحميل مكان ما بالذاكره( سواء مسجلات أو عناوين ذاكره رام ) بقيم أو بمحتويات ذاكره أخرى و من هنا نستنتج أن هذه التعليمه تحتاج إلى 2 مدخل Argument المصدر و الجهه Source and destination . ويذكر أن هذه التعليمه أشهر تعليمات الأسمبلى و أكثرها إستخداما ،،

أمثله :-


 

CODE


MOV AX,2345H                          ; AX = 2345H
MOV AL,34                          ;AL = 34 Decimal
MOV [2312] , BX                          ;Memory location 2312 IN current data segment = BX Contents
MOV [SI] , 30                            ;Memory location in SI Contents = 30 Decimal
.
.
.

 



لاحظ :-
---------

-
لا يمكن نقل محتويات ذاكره رام إلى محتويات ذاكره رام بنفس التعليمه ، أو أى تعليمه أخرى .... وذلك لأن البروسسور لا يستطيع القيام بالتعامل مع الذاكره أكثر من مره واحده لكل تعليمه أسمبلى (المقابله لها بلغة الأله) >>>


 

CODE


MOV [1000],[2000]                            ;Error

 



-
لا يمكن النقل بين مكانين مختلفى الحجم ، بمعنى أنه لا يمككنا أن ننقل ما بداخل مسجل بعرض 16 بت إلى مسجل آخر بعرض 32 بت أوالعكس .


 

CODE


MOV AX,AL                            ;Error
MOV AL,AX                          ;Error

 



-
عند النقل من مكان فى الذاكره إلى مسجل فإن البيانات التى تنتقل حقيقاً هى بيانات إبتدأءا من هذا العنوان و بعرض المسجل ، وخذ فى إعتبارك ان الذاكره مقسمه BYTES بمعنى أنك أردت تحميل AX وهو بعرض 32 بت بمحتويات الذاكره عند 1000 فإنه يبدأ بتحميل 4 بايت من عند هذا العنوان .


 

CODE


MOV CX,[0110]                          ;CX = 4 BYTES Contents starts from address 0110 at current data segment

 

 


------------------------------------------------------------------------------------------------------------------------------------------------------------------------



NOP
-------


هذه التعليمه تعبر عن إضاعة الوقت و هى إختصار ل No Operation و هى تضيع و قت تعليمه قياسيه بحيث أنك إذا أردت عمل إنتظار Delay فإن هذه التعليمه قياسيه و تستخدم و طبعا تستخدم فى دوره بحيث أنك مثلا لو اردت إنتظار ثانيه فإنك تكررها 100000 مره على الأقل ( لم احسبها و هى تتوقف على سرعة المعالج لديك ) .

أمثله :-


 

CODE


NOP                                ;Instruction tells the processor too do nothing this instruction cycle time
                                   ;and used to waste a small time according to cpu clocking speed

 

 


------------------------------------------------------------------------------------------------------------------------------------------------------------------------



HLT
-------


وتستخدم فى إنهاء عمل البروسسور و لست اقصد الجهاز نفسه ، يعنى إحتمال يهنج و إحتمال لا يفعل أى شىء ، يعنى هى إستخدامها كان زمان فى الإصدارات القديمه من اللغه ، أما فى الوقت الحالى ، فإنه توجد تعليمات أخرى تخبر المعالج بإيقاف البرنامج أو إنهاءه وما شابه ...

أمثله:-


 

CODE


HLT                              ;No commant

 

 


------------------------------------------------------------------------------------------------------------------------------------------------------------------------



INC
------


تستخدم فى عمل زياده للمعطى بمقدار 1 ، وهى تقابل عملية جمع واح + القيمه الى بداخل المعطى و من ثم تخزين القيمه الجديده .

أمثله :-


 

CODE


INC AX                                      ;AX = AX + 1 === ADD AX,1
INC [BX]                                      ;[BX] = [BX] + 1 === ADD [BX] , 1
INC CX                                      ;CX = CX + 1

 

 


------------------------------------------------------------------------------------------------------------------------------------------------------------------------



DEC
-------


وهى عكس سابقتها و تستخدم فى إنقاص المعطى Operand بواحد . و هى تقابل التعليمه SUB .....,1 و بالطبع فإن المكان الخالى يتم وضع ال Operand

أمثله :-


 

CODE


DEC [SI]                                ;[SI] = [SI] -1
DEC AX                                ;AX = AX - 1 === SUB AX,1
DEX CX

 



-
عند إستخدام هذه التعليمه مع مسجل أو مكان بالذاكره يحتوى على 0 فإنها تدخل فى النطاق السالب بعده و يتم تغيير علم الإشاره SIGN Flag فى مسجل الأعلام.


------------------------------------------------------------------------------------------------------------------------------------------------------------------------




NEG
--------


وهى تستخدم فى تغيير غشارة المعطى Operand ، وهى إختصار للكلمه الإنجلييزيه Negiate بمعنى جعل القيمه سالبه و طبعا تعمل مع جميه القيم السالبه لتجعلها موجبه و الموجبه التى تحلها إلى سالبه

أمثله :-


 

CODE


MOV AX,100                          ;AX = 100
NEG AX                      ;AX = FF00 = -100
NEG AX                        ;AX = 100 Again

 



 


------------------------------------------------------------------------------------------------------------------------------------------------------------------------



سننتقل الأن إلى تعليمات الأسمبلى المنطقيه Logic Instructions

AND
-------


وهى تقوم بعملية "و" المنطقيه AND Gate بين 2 Operrand ومن ثم تخزن القيمه فى ألأول كالعاده ،،،

أمثله :-


 

CODE


MOV AX,10                        ;AX = 10
MOV BX,5                        ;BX  = 5
AND AX,BX                        ;AX = 0 Because that 10 (1010) and 5(0101) = 0000 :-)

 



تستخدم هذه التعليمه فى عمليه تسمى Masking ،


------------------------------------------------------------------------------------------------------------------------------------------------------------------------



OR
-----


وهذه التعليمه كما أستنتجت فهى تعبلر عن العمليه المنطقيه "أو" OR Gate و لها نفس شروط ال AND ،

أمثله :-


 

CODE


OR AX,CX
OR [1020],CL
OR AX,0000

 

 


------------------------------------------------------------------------------------------------------------------------------------------------------------------------



XOR
-------


هذه التعليمه تستخدم فى العمليه المنطقيه XOR ، كما سنرى فى الأمثله :-


 

CODE


MOV AX,1000                                ;AX = 1000
XOR AX , 2000                                ;AX = 1080
XOR AX,2000                                  ;AX = 1000

 



لاحظ أن هذه التعليمه تستخدم فى التشفير الأحادى Single Encyreption لأنه كما لاحظنا فى المثال السابق ، فإننا عملنا تشفير للقيمه بداخل المسجل AX فإستخدمنا المفتاح (القميه الأخرى التى تستخدم فى فك التشفير أو إرجاع القيمه الأصليه ثانيا) و هى 2000
ومن ثم عند القيام بنفس العمليه مع نفس القيمه فإنه يتم إرجاع القيمه الأصليه
"
لقد صممت برنامج بسيك بالأسمبلى يقوم بتشفير نصوص مدخله من قبل المستخدم و من ثم يعيد فكها ثانيا بإستخدام مفتاح ثابت بداخل البرنامج و لرؤية البرنامج و السورس كود الخاص به ، يمكنك الإطلاع على الدرس التاسع فى موقعى http://ezzuz.tk " !!!!!!!!

-
لا حظ أيضا أن التعليمات المنطقيه Logic Instructions تستخدم فى عمليات البت Bit Operation وكما نعلم أن البت هى اصغر وحدة تخزين بالحاسب ، ومن ثم تستطيع تسخير هذه التعليمات لمساعدتك فى تكوين و التعامل مع المتغيرات المنطقيه Boolean Variables والتى تحتمل قيمتين فقط أما صح أو خطأ True or False ،،،

 

 

 


Copyright © www.kettaneh.net