|
السلام عليكم
اليوم
السادس فى الأسمبلى
،،
سنكمل بإذن
الله ما بدأناه فى اليوم السابق من سرد تعليمات الأسمبلى
،ولق
إستعرضنا فى اليوم السابق(الخامس) التعليمات الحسابيه مثل
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
-------
وتستخدم فى
إنهاء عمل البروسسور و
لست اقصد الجهاز نفسه ، يعنى إحتمال يهنج و إحتمال لا يفعل أى شىء ،
يعنى هى
إستخدامها كان زمان فى الإصدارات القديمه من اللغه ، أما فى الوقت
الحالى ، فإنه
توجد تعليمات أخرى تخبر المعالج بإيقاف البرنامج أو إنهاءه وما شابه ...
أمثله:-
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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
،،،
|