الحشد الشعبي

Recent Products RSS Feeds

فريق الهكر العراقي KAMINDOZ

TOOLS & EXPLOIT KAMINDOZ

DOWNLOAD VIDEO
 

اخر التغريدات
مقاطع الفيديو
‏إظهار الرسائل ذات التسميات لغة الاسمبلي. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات لغة الاسمبلي. إظهار كافة الرسائل

دورة الاسمبلي جزء ثامن

الموقع يدعم الحشد الشعبي
مازلنا بتعليمات #الأسمبلى ، هذا آخر درس بإذن الله فى تعليمات الأسمبلى الأساسيه قبل أن نبدأ بكتابة برامج بالأسمبلى من اليوم القادم ،،، و من ثم نكمل باقى تعليمات التحكم و الدورات و باقى التعليمات المهمه ....

أتذكر أن آخر تعليمات تناولناها سويا الدرس السابق هى التعليمات المنطقيه ، و نسيت ذكر واحده فقط ، سأذكرها هنا أولا :

NOT

هذه التعليمه مسؤوله عن عكس القيمه التى بداخل المكان الذى يذكر بعدها ، بمعنى ... مممممممممم ، أنظر المثال الأتى :

مثال :
-------

لو أنه يوجد بالمسجل AL قيمه ثنائيه على هذا الشكل 01110010
ونريد عكس هذه القيمه لتكون هكذا 10001101 ، نستخدم هذه التعليمه و هو مساويه للمقابل الأول First Complement ، كل بت يتم عكس قيمته .


 
CODE

MOV AL,01110010B
NOT AL
;AL = 100011010B NOW

 


 

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



نأتى لتعليمات الإزاحه و الدوران Shift And Rotate Instructions

- هذه التعليمات تتعامل مع التشكيل الثنائى المنطقى كما تتعامل التعليمات المنطقيه السابقه مع القيم المختلفه Logic Bit Instructions
-
تستخدم هذه التعليمات بكثره فى دوال التحكم فى وحدات الإدخال و الإخراج Control I/O Divices
-
تستخدم مع جميع أنواع المسجلات و الذاكره

أولا : تعليمات الإزاحه : Shift Instructions

- معنى الإزاحه هى إزاحة القيم الثنائيه المتتاليه إلى اليمين أو اليسار (>>> || <<<)
-
تستخدم فى العمليات الحسابيه مثل الضرب و القسمه (إزاحه لليسار بت واحده تعنى ضرب فى 2 و إزاحه لليمين بت واحد تعنى قسمه على 2)
-
هناك أربع تعليمات إزاحه عباره عن مجموعتين (إزاحه منطقيه Logical Shift و إزاحه حسابيه Arithmatic Shift)
-
جميع هذه التعليمات تتم من خلال علم الحمل Carry Flag
-
وكما ترى بالشكل الأتى ، كيفية عمل هذه التعليمات و الفرق بينهما .

user posted image


- تلاحظ أن الإزاحه المنطقيه إلى اليسار SHL تتم الإزاحه و يتم وضع من اليمين صفر ، وفى الإزاحه المنطقيه إلى اليمين SHR يتم وضع صفر من اليسار .
-
تلاحظ فى تعليمات الإزاحه الحسابيه إلى اليسار SAL مثل الإزاحه المنطقيه إلى اليسار ، أما الإزاحه الحسابيه إلى اليمين فيتم وضع نفس القيمه فى االبت الأخير كما هى و هذا بسبب عدم تأثر إشارة القيمه الموجوده و لذلك سميت إزاحه حسابيه .
-
يمكن إستعمال الإزاحه المنطقيه مع القيم التى بدون إشاره Unsigned Numbers .
-
يمكن إستعمال الإزاحه الحسابيه مع القيم التى بإشاره Signed Number .
-
لا يمكن إستعمال الإزاحه مع مسجلات المقاطع مطلقا وفيما عذا ذلك يمكن إستخدامها.

أمثله لتعليمات الإزاحه المختلفه :-
--------------------------------------


 
CODE

SHR AH,3                            ;AX is logically shifted Right 3 places
SHL CX,12                            ;CX is logically shifted right 12 places
SHR [1000] , 3                            ;The memory location adrresed by 1000 in the data segment is right shifted by 3 places
MOV CL,10
SAR DX,CL                            ;DX is arithmatically shefted to right by number in CL
;Note that CL Here called the sheft count register and can be used as above
SAL EDX,1                            ;EDX is arithmaticaly shifted by 1 place

 



مثال لإستخدام عملية الإزاحه إلى اليسار فى ضرب القيمه الموجوده داخل المسجل AX فى القيمه 1010 وهى مساويه ل10 فى النظام العشرى .


 
CODE

SHL AX,1
;AX = AX * 2B
MOV BX,AX
;BX = AX * 2
SHL AX,2
AX = AX * 8
ADD AX , BX
;AX =AX * 10
;AX = AX * 1010B
;  :)

 


 

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



ثانيا : تعليمات الدوران : Rotate Instructions


- تقوم هذه التعليمات بعمل إزاحه من طرف المسجل أو المكان بالذاكره إلى الطرف الأخر.
-
أربع تعليمات مقسمين إلى مجموعتين ( دوران خلال علم الحمل Rotate أو دوران خارج علم الحملRoate throught carry )
-
وكما ترى بالشكل الأتى ، كيفية عمل هذه التعليمات و الفرق بينهما .

 
user posted image



- يتضح من الشكل المبين سابقا أن تعليمات الدوران من خلال علم الحمل RCL , RCR تدور البتات من طرف إلى علم الحمل إلى الطرف الأخر .
-
أما التعليمات الأخرى ROR , RRL تدور البتات من طرف إلى الأخر ومن ثم وضع البت المنقوله إلى علم الحمل كما هو مبين بالشكل.
-
أمثله :-


 
CODE

ROL SI,14                          ;SI rotated left by 14 places
RCL BL,6                          ;BL rotates left through carry by 6 places
ROL ECX,18                          ;ECX rotates left by 18 places
RCR AH,CL                          ;AH rotates through carry by the number of places in CL
ROR WORD PTR[BP] , 2                          ;The word contents of the stack segment memory location addressed by BP rotate right by 2 places

 


 

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


تعليمات البحث عن البت 1 : Bit Scan Instructions

- وظيفة هذه التعليمات هى البحث عن بت واحد داخل مسجل ما أو مكان بالذاكره .
-
هذه التعليمات لها صيغتين وهما BSF (Bit Scan Forward) & BSR (Bit Scan Reverce) 2
- BSF
وتقوم بالبحث من اليسار إلى اليمين (من البت 0 إلى البت 15 فى AX )
- BSR
وتقوم بالبحث من اليمين إلى اليسار (من البت 15 إلى البت 0 فى AX)
-
تأخذ التعليمه مدخلان (Source & Destination) ،
-
عندما يجد المعالج 1 فإنه يقوم بتصحيح القيمه التى بعلم الصفر If a 1-bit is encountered , zero flag is set . ومن ثم يوضع رقم هذه البت فى المدخل الأول Destination .

مثال :-


 
CODE

MOV AL,00101000
BSF BL,AL
;Zero Flag is set
;BL contains 3 , the 1-bit position in Al from left
BSR CL,AL
;Zero Flag is set
;CL Contains 4 , the 1-bit position in AL from right

 


 

دورة الاسمبلي - جزء سابع

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

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

دورة الأسمبلى - الجزءالسادس

الموقع يدعم الحشد الشعبي
School Assembly


سنبدأ بتعليمات وأوامر #الأسمبلى ،،،
التعليمات الحسابيه Arithmatic Instructions
-------------------------------------------------------


1 - الجمع :-
--------------


التعليمه : Add
وتأخذ فى الحاله العاديه 2 وسيط ، المصدر و الهدف وهى تكافىء === المصدر = المصدر + الهدف
ADD Source , Destination === Source = Source + Destination

أمثله :
CODE


; A2H + 20H = C2
MOV AX , A2; 1st Number
ADD AX , 20; 2nd Num

 

نأخذ فى إعتبارنا أن العدد كون بالنظام السادس عشر إفتراضيا حالما يتم تغييره إلى عشرى أو ثنائى
بمعنى فى المثال السابق أول خطوه نقوم بتحميل A2 بالنظام السادس عشر إلى المسجل AX
وفى الخطوه الثانيه قمنا بجمع على ما بداخل المسجل الرقم السادس عشر A2


مثال آخر :
CODE
[/u]

; A111 + 2302 + 1203 + 4099 = 116AF
; OF COURCE AX IS 16 BIT RWG. SO IT WILL CONTAINS 16AF AFTER THE OPERATION
MOV AX , A111
ADD AX , 2302
ADD AX , 1203
ADD AX , 4099
; AX = 16AF AND CARRY FLAG IS BEEN SET

 


[u]
مثال آخر ( بإستخدام الذاكره ) :


نضيف محتويات الذاكره بالعنوان [A200] + [3409] >>>>

 
CODE

MOV AX , [A200]
ADD AX , [3409]

 


ملاحظه : يمكن القيام بكل هذه الأمثله على برنامج ال Debug والذى تم شرحه فى الدرس السابق ،،،

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


2 - الطرح :-
-------------


التعليمه : SUB

بالظبط نفس تعليمة الجمع

مثال :-

نطرح محتويات المسجل CX من محتويات المسجل SI

 
CODE

SUB SI , CX

 


مثال آخر :

نطرح محتويات المكان فى الذاكره المعنون بالعنوان الموجود فى المسجل BX من FFFF

 
CODE

MOV AX , FFFF
SUB AX , [BX]

 
 

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


3 - الضرب :-
---------------


التعليمه : MUL

يتم ضرب أى رقمين فى لغة الأسمبلى فى ثلاث أنظم ألى الآن :-

الأول : ال8-بت (البايت) :-

يتم وضع إحدى قيم الضرب فى AL و الآخر فى أى ريجستر آخر له نفس الحجم أو مكان فى الذاكره بجانب كود الضرب الذى هو فى حالتنا هنا [MUL] للأرقام الغير محددة الإشاره . و [IMUL] للأرقام المحددة الإشاره .وتوضع النتيجه فى ال AX .

مثال :

للحصول على حاصل ضرب 120 * 30 نقوم بالأتى :-


 
CODE
;----------------------------------
MOV CL,30D
MOV AL,120D
MUL CL
MOV [1000H] , AX    ;
لتخزين الناتج فى الذاكره المعنونه ب1000 بالنظام السادس عشر
;----------------------------------



الثانى : ال16-بت (الكلمه) :-

يتم وضع إحدى القيم فى AX و ألآخرفى أى ريجستر آخر له نفس الحجم أو مكان فى الذاكره بجانب كود الضرب و توضع النتيجه فى DX:AX . و هذا معناه أن الجزء ال Low من ناتج القسمه سيخزن فى ال AX و الجزء ال High سيوضع فى ال DX .

مثال :

للحصول على حاصل ضرب 20000 * 2365 سنقوم بالآتى :-


 
CODE
;----------------------------------
MOV CX,2365D
MOV AX,20000D MUL CX
MOV [1000H],AX    ;
تخزين الجزء الأول فى المكان فى الذاكره المعنون ب 1000
MOV [1001H],DX    ;
تخزين الجزء الثانى فى المكان فى الذاكره الذى يلى المكان السابق
;----------------------------------



الثالث : ال32 بت :-

يتم وضع إحدى القيم فى EAX و ألآخرفى أى ريجستر آخر له نفس الحجم أو مكان فى الذاكره بجانب كود الضرب و توضع النتيجه(64 بت) فى EDX:EAX . و هذا معناه أن الجزء ال Low من ناتج القسمه سيخزن فى ال EAX و الجزء ال High سيوضع فى ال EDX .

بالطبع نحن نتعامل كبدايه على الأنظمه إلى ال 16 بت ،،،

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


4 - القسمه :-
---------------


التعليمه : DIV

أيضاً تتم فى نفس النظم السابقه والخاصه بالضرب :-

الأول : ال8بت (بايت) :-

يتم و ضع المقسوم فى AX و المقسوم عليه فى أى ريجستر حجمه بايت مثل BL,CL,DL,... أو مكان فى الذاكره لها حجم بايت مثل BYTE PTR [1234H] , BYTE PTR [BX] .و يوضع ناتج القسمه فى AL و باقى القسمه فى AH بإستخدام [DIV] .
لاحظ:- أنه فى حالة قسمة الأرقام المحددة الإشاره بإستخدام [IDIV]تكون إشارة ناتج القسمه هى الإشاره العاديه فى هذه الحالات . وتكون إشارة خارج القسمه Remender دائماً موجبه و صحيحه Integer.

لاحظ:- كل القيم هنا 8-بت إذاً , لابد من تحويل القيمه ال 8-بت للمقسوم إلى 16-بت ليمكن نقلها ألى AX ويتم ذلك فى حالة القيم غير محددة الإشاره بمسح ال AH ليكون كله أصفار و تكون قيمة المقسوم 16-بت . أما فى حالة القيم محددة الإشاره يتم ذلك عن طريق كود [CBW] المسئول عن تحويل البايت(8-بت) إلى كلمه (16-بت) لل AX فقط.

مثال :-

للحصول على ناتج قسمة(+16) على (-5) يمكننا عمل الأتى :-


 
CODE
;----------------------------------
MOV AL,16D
CBW
MOV BL,5D
NEG BL
IDIV BL
MOV PYTE PTR[1000H] , AL
MOV PYTE PTR[2000H] , AH
;----------------------------------


وهنا تم نقل المقسوم إلى AL وتم عمل مد له عن طريق [CBW] . ثم تم نقل قيمة المقسوم عليه إلى BL بعد وضع الإشاره السالبه عن طريق [NEG]. إذا القيم جاهزه لعملية القسمه ويتم حفظ الناتج فى الذاكره بعدها.


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

باقى النظم كما سبق من الممكن أن تقوم بإستنتاجها .

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


ملاحظه أخيره : إستخدمنا التعليمه MOV وهى مسئوله - كما توقعتم - على تحميل المسجلات أو أماكن الذاكره بقيم معينه أو محتويات مسجل أو أى قيم أخرى ،،

 
::جميع المشاركات المكتوبة تعبّر عن وجهة نظر كاتبها ... ولا تعبّر عن وجهة نظر إدارة الموقع::

C0DED BY IRAQ Electronic Army 2015-2016

iraq , syria , iran ,Afghanistan,Albania , Algeria , Andorra , Angola , Antigua , and , Barbuda , Argentina , Armenia , Aruba , Australia , Austria , Azerbaijan

Bahamas, , The , Bahrain , Bangladesh , Barbados , Belarus , Belgium , Belize , Benin , Bhutan , Bolivia , Bosnia , and , Herzegovina , Botswana , Brazil ,Brunei , Bulgaria , Burkina , Faso , Burma , BurundiCambodia , Cameroon , Canada , Cape , Verde , Central , African , Republic , Chad , Chile , China , Colombia , Comoros , Congo, , Democratic , Republic , of , the , Congo, , Republic , of , the , Costa , Rica , Cote , d'Ivoire , Croatia , Cuba , Curacao ,,,Cyprus , Czech , Republic.Denmark , Djibouti , Dominica , Dominican Republic

Ecuador , Egypt , El , Salvador , Equatorial , Guinea , Eritrea , Estonia , Ethiopia , Fiji Finland France , Gabon , Gambia, , The , Georgia , Germany , Ghana , Greece , Grenada , Guatemala , Guinea , Guinea-Bissau , Guyana , Haiti , Holy , See , Honduras , Hong , Kong , Hungary ,

Iceland,India, Indonesia Ireland Italy