المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : دورة الأسمبلى - اليوم السادس



MaX2arab
14-01-2008, 10:10 PM
السلام عليكماليوم السادس فى الأسمبلى،،سنكمل بإذن الله ما بدأناه فى اليوم السابق من سرد تعليمات الأسمبلى،ولق إستعرضنا فى اليوم السابق(الخامس) التعليمات الحسابيه مثل 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 (http://ezzuz.tk/) " !!!!!!!!

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

http://file7azm.info/do.php?img=807