بسم الله الرحمن الرحيم ..

اذا لم تكن تعلم لغة التجميع فلا داعي لظياع وقتك هنا..


التعليمات المهمة :

dec : تنقص القيمة بمقدار 1
==============================================

inc : تزيد القيمة بمقدار 1
==============================================

sub : تنقص من متغير الأول من المتغير الثاني مثال :

sub [ebx+00000310],4 تعني "decrease the value on ebx+0310 with 4".
==============================================

add : ستزيد المتغير الأول + الثاني مثال :

. add [ebx+00000310],4 تعني "increase the value on ebx+0310 with 4".
==============================================
mov : تنسخ قيمة المتغير الثاني الى الأول:

mov [ebx+00000310],4 تعني "change the value on ebx+0310 to 4".
==============================================
lea: تنقل ناتج المتغير الأول الى الثاني:

lea eax,[esi+30] تعني copy esi+30 to eax.

جيده لحفظ ال pointers
==============================================

cmp : مقارنة سجلين أو مسجل وقيمة.

cmp esi,2 //compare esi to 2

cmp esi,ecx //compare esi to ecx

ملاحظة : الناتج يخزن في فلاج Flags
==============================================

jmp : يقفو لعنوان معين


jmp +0000000A //this instruction would mean to jump forward 10 bytes in the code.

Conditional jumps:

You can use conditional jumps to jump to a specific address, or to jump

forward or backward x bytes.

je : jump to a location if the previous compare's result was equal

e.g.


cmp esi,2

je 0f445566 //if esi is equal to 2, the program will jump to 0f445566 address.
jne: jump to a location if the previous compare's result was not equal
jg : Jump if Greater
jl : Jump if Less
push : save a register or flag in the stack
pop : load a register or flag from the stack
pushad : save all registers in the stack
popad : load all registers from the stack
pushfd : save all flags in the stack
popfd : load all flags from the stack