تعلميات لغة التجميع Assembly لمن أراد مع أمثلة :..
بسم الله الرحمن الرحيم ..
اذا لم تكن تعلم لغة التجميع فلا داعي لظياع وقتك هنا..
التعليمات المهمة :
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