اليوم السادس فى الأسمبلى ،،
سنكمل بإذن الله ما بدأناه فى اليوم السابق من سرد تعليمات الأسمبلى ،ولق إستعرضنا فى اليوم السابق(الخامس) التعليمات الحسابيه مثل 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 ،،،
| روابط هذه التدوينة قابلة للنسخ واللصق | |
| URL | |
| HTML | |
| BBCode | |
kamindoz
