السلام عليكماليوم السادس فى الأسمبلى،،سنكمل بإذن الله ما بدأناه فى اليوم السابق من سرد تعليمات الأسمبلى،ولق إستعرضنا فى اليوم السابق(الخامس) التعليمات الحسابيه مثل ADD,SUB,MUL,DIV
اليوم ، نبدأ بتعليمات عامه منها ما يستخدم بكثره ولقدحاولت قدر الإمكان أن أبتعد عن التعليمات التى لا تستخدم إطلاقا إلى فى حالات نادرهيمكن أن نتحدث عنها آن حدوثها ، المهم ... خذ نفس عميق ... ركز .... و Let's Go
MOV
-------التعليمه تستخدمفى المساواة بدلا من "=" أو لتحميل مكان ما بالذاكره( سواء مسجلات أو عناوين ذاكرهرام ) بقيم أو بمحتويات ذاكره أخرى و من هنا نستنتج أن هذه التعليمه تحتاج إلى 2مدخل Argument المصدر و الجهه Source and destination . ويذكر أن هذه التعليمه أشهرتعليمات الأسمبلى و أكثرها إستخداما ،،أمثله :-
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
.
.
.
لاحظ :-
---------
- لا يمكن نقل محتويات ذاكره رام إلى محتويات ذاكره رامبنفس التعليمه ، أو أى تعليمه أخرى .... وذلك لأن البروسسور لا يستطيع القيامبالتعامل مع الذاكره أكثر من مره واحده لكل تعليمه أسمبلى (المقابله لها بلغةالأله) >>>
MOV [1000],[2000] ;Error
- لا يمكن النقلبين مكانين مختلفى الحجم ، بمعنى أنه لا يمككنا أن ننقل ما بداخل مسجل بعرض 16 بتإلى مسجل آخر بعرض 32 بت أوالعكس .
MOV AX,AL ;Error
MOV AL,AX ;Error
- عند النقل من مكان فىالذاكره إلى مسجل فإن البيانات التى تنتقل حقيقاً هى بيانات إبتدأءا من هذا العنوانو بعرض المسجل ، وخذ فى إعتبارك ان الذاكره مقسمه BYTES بمعنى أنك أردت تحميل AX وهو بعرض 32 بت بمحتويات الذاكره عند 1000 فإنه يبدأ بتحميل 4 بايت من عند هذاالعنوان .
MOV CX,[0110] ;CX = 4 BYTES Contents starts from address 0110 at current data segment
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NOP
-------هذه التعليمه تعبر عن إضاعة الوقتو هى إختصار ل No Operation و هى تضيع و قت تعليمه قياسيه بحيث أنك إذا أردت عملإنتظار Delay فإن هذه التعليمه قياسيه و تستخدم و طبعا تستخدم فى دوره بحيث أنكمثلا لو اردت إنتظار ثانيه فإنك تكررها 100000 مره على الأقل ( لم احسبها و هىتتوقف على سرعة المعالج لديك ) .
أمثله :-
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
-------وتستخدم فى إنهاء عمل البروسسور ولست اقصد الجهاز نفسه ، يعنى إحتمال يهنج و إحتمال لا يفعل أى شىء ، يعنى هىإستخدامها كان زمان فى الإصدارات القديمه من اللغه ، أما فى الوقت الحالى ، فإنهتوجد تعليمات أخرى تخبر المعالج بإيقاف البرنامج أو إنهاءه وما شابه ...
أمثله:-
HLT ;No commant
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
INC
------تستخدم فى عمل زياده للمعطى بمقدار 1 ، وهى تقابل عملية جمع واح + القيمه الى بداخل المعطى و من ثم تخزين القيمهالجديده .
أمثله :-
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
أمثله :-
DEC [SI] ;[SI] = [SI] -1
DEC AX ;AX = AX - 1 === SUB AX,1
DEX CX
- عند إستخدام هذهالتعليمه مع مسجل أو مكان بالذاكره يحتوى على 0 فإنها تدخل فى النطاق السالب بعده ويتم تغيير علم الإشاره SIGN Flag فى مسجل الأعلام.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NEG
--------وهى تستخدم فى تغيير غشارةالمعطى Operand ، وهى إختصار للكلمه الإنجلييزيه Negiate بمعنى جعل القيمه سالبه وطبعا تعمل مع جميه القيم السالبه لتجعلها موجبه و الموجبه التى تحلها إلى سالبهأمثله :-
MOV AX,100 ;AX = 100
NEG AX ;AX = FF00 = -100
NEG AX ;AX = 100 Again
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
سننتقلالأن إلى تعليمات الأسمبلى المنطقيه Logic Instructions
AND
-------وهى تقوم بعملية "و" المنطقيه AND Gate بين 2 Operrand ومن ثم تخزن القيمه فى ألأول كالعاده ،،،أمثله :-
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 ،أمثله :-
OR AX,CX
OR [1020],CL
OR AX,0000
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
XOR
-------هذه التعليمه تستخدم فى العمليهالمنطقيه XOR ، كما سنرى فىالأمثله :-
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 ،،،
اليوم ، نبدأ بتعليمات عامه منها ما يستخدم بكثره ولقدحاولت قدر الإمكان أن أبتعد عن التعليمات التى لا تستخدم إطلاقا إلى فى حالات نادرهيمكن أن نتحدث عنها آن حدوثها ، المهم ... خذ نفس عميق ... ركز .... و 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
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------هذه التعليمه تعبر عن إضاعة الوقتو هى إختصار ل 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
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------وتستخدم فى إنهاء عمل البروسسور ولست اقصد الجهاز نفسه ، يعنى إحتمال يهنج و إحتمال لا يفعل أى شىء ، يعنى هىإستخدامها كان زمان فى الإصدارات القديمه من اللغه ، أما فى الوقت الحالى ، فإنهتوجد تعليمات أخرى تخبر المعالج بإيقاف البرنامج أو إنهاءه وما شابه ...
أمثله:-
CODE
HLT ;No commant
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------تستخدم فى عمل زياده للمعطى بمقدار 1 ، وهى تقابل عملية جمع واح + القيمه الى بداخل المعطى و من ثم تخزين القيمهالجديده .
أمثله :-
CODE
INC AX ;AX = AX + 1 === ADD AX,1
INC [BX] ;[BX] = [BX] + 1 === ADD [BX] , 1
INC CX ;CX = CX + 1
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------وهى عكس سابقتها و تستخدم فىإنقاص المعطى Operand بواحد . و هى تقابل التعليمه SUB .....,1 و بالطبع فإن المكانالخالى يتم وضع ال Operand
أمثله :-
CODE
DEC [SI] ;[SI] = [SI] -1
DEC AX ;AX = AX - 1 === SUB AX,1
DEX CX
- عند إستخدام هذهالتعليمه مع مسجل أو مكان بالذاكره يحتوى على 0 فإنها تدخل فى النطاق السالب بعده ويتم تغيير علم الإشاره SIGN Flag فى مسجل الأعلام.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------وهى تستخدم فى تغيير غشارةالمعطى Operand ، وهى إختصار للكلمه الإنجلييزيه Negiate بمعنى جعل القيمه سالبه وطبعا تعمل مع جميه القيم السالبه لتجعلها موجبه و الموجبه التى تحلها إلى سالبهأمثله :-
CODE
MOV AX,100 ;AX = 100
NEG AX ;AX = FF00 = -100
NEG AX ;AX = 100 Again
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 :-)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----وهذه التعليمه كما أستنتجت فهىتعبلر عن العمليه المنطقيه "أو" OR Gate و لها نفس شروط ال AND ،أمثله :-
CODE
OR AX,CX
OR [1020],CL
OR AX,0000
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-------هذه التعليمه تستخدم فى العمليهالمنطقيه XOR ، كما سنرى فىالأمثله :-
CODE
MOV AX,1000 ;AX = 1000
XOR AX , 2000 ;AX = 1080
XOR AX,2000 ;AX = 1000
"لقد صممت برنامج بسيك بالأسمبلى يقوم بتشفير نصوص مدخله من قبل المستخدم و منثم يعيد فكها ثانيا بإستخدام مفتاح ثابت بداخل البرنامج و لرؤية البرنامج و السورسكود الخاص به ، يمكنك الإطلاع على الدرس التاسع فى موقعى http://ezzuz.tk " !!!!!!!!
- لا حظ أيضاأنالتعليمات المنطقيه Logic Instructions تستخدم فى عمليات البت Bit Operation وكمانعلم أن البت هى اصغر وحدة تخزين بالحاسب ، ومن ثم تستطيع تسخير هذه التعليماتلمساعدتك فى تكوين و التعامل مع المتغيرات المنطقيه Boolean Variables والتى تحتملقيمتين فقط أما صح أو خطأ True or False ،،،