ReverseEngineering
1.25K subscribers
41 photos
10 videos
55 files
666 links
Download Telegram
زبان اسمبلی assembly language:
با استفاده از یک برنامه به نام اسمبلر به کد ماشین قابل اجرا ترجمه میشه به این فرایند میگن اسمبل کردن حالا زبان اسلمبلی چیه ؟ یک زبان برنامه نویسی سطح پایینه برای کامپیوتر ها و دستگاه های دیگه است
#Assembly
#اسمبلی
👍3
سینتکس در‌ زبان اسمبلی:
یک برنامه اسمبلی می تونه به سه بخش زیر تقسیم شه:

بخش data این بخش برای اعلام داده ها های اولیه یا ثابت استفاده میشه این داده در زمان اجرا تغییر نمیکنه سینتکس به صورت زیره

section.data

بخش bss این بخش برای اعلام متغیر ها استفاده میشه سینتکس به سورت زیره

section.bss

بخش tetx این بخش برای نگه داشتن کد اصلی استفاده میشه این بخش با اعلام متغیر سراسری _start شروع میشه که به هسته (core ) میگه که اجرای برنامه از کجا باید شروع بشه سینتکس به صورت زیره

section.text

section_start

:start_

کامنت ها در زبان اسمبلی با (;) شروع میشن
مثال

This program a good;


برنامه های نوشته شده با زبان اسمبلی به سه دستور تقسیم میشن:

دستورالعمل اجرایی: یا دستور العمل های ساده

به پردازنده (CPU) میگن چه کاری انجام بده

هر دستورالعمل شامل یک نوع کد عملیاتیه که

بهش میگن opcode هر دستورالعمل اجرایی

یک دستورالعمل زبان ماشین تولید میکنه

دستورالعمل های اسمبلر:

در مورد جنبه ها مختلف روند مونتاژ به اسمبلر میگن که این دستورات غیر قابل اجران و دستورالعمل زبان ماشین تولید نمی کنن

ماکروها:

ماکروها اساسا مکانیسم جایگزینی متن هستن

هر کدام از دســتورات زبان اســمبلی در یک

سطر جدا نوشته میشن همه ی اون ها از قالب زیر استفاده میکنن

[lable] mnemonic operands

[comment]

یک‌ دستورالعمل شامل دو بخش هست یکی قسمت اول نام دستورالعمل mnemonic که قراره اجرا بشه و دومی ان عملوند ها operands یا پارامتر های دستور هستن


#syntax
#command
#Assembly
#CPU
👍2
ثبات ها (Registeres) در زبان اسمبلی
عملیات انجام شــده توسط پردازنده بیشتر شامل پردازش داده هاست این داده ها
میتوانند داخل حافظه ذخیره شن و از اون جا به اونا دسترسی داشت خوندن داده و ذخیره داده ها داخل حافظه فرایند پردازنده را کند میکنه چون این کار فرآیندهای پیچیده ای برای ارسال درخواست داده از طریق باس کنترل و به
واحد ذخیره سازی حافظه و گرفتن اطلاعات از طریق همون کاناله
برای سرعت بخشیدن به عملیات پردازنده، پردازنده شامل برخی از مکان های ذخیره
سازی داخلی به نام ثبات یا رجیستر هست
رجیسترها عناصر داده را برای پردازش بدون نیاز به دسترسی به حافظه اصلی، ذخیره
میکنن تعداد ثبات ها در تراشه پردازنده محدوده
ده معماری 32 بیتی و 6 پردازنده 16 بیتی در معماری IA32- وجود دارد. ریجستر
ها به سه دسته تقسیم میشن:

1- ثبات های عمومی Registers General

2- ثبات های کنترل Registers Control

3- ثبات های سمگنت Registers Segment

حالا خود ریجستر های عمومی به سه دسته تقسیم میشن

ثبات داده Registers Data

ثبات های اشاره گر Registers Pointer

ثبات های ایندکس Registers Index

Registers Data ثبات داده

چهار رجیستر داده 32 بیتی برای عملیات محاسباتی، منطقی و سایر موارد استفاده
میشه این رجیسترهای 32 بیتی به سه روش قابل استفاده ان
به عنوان ثبات 32 بیتی کامل EAX، EBX، ECX، EDX

بخش کم ارزش از رجیسترهای 32 بیتی میتوانند به عنوان چهار رجیستر داده
16 بیتی استفاده شن AX، BX، CX و DX.
بخــش کم ارزش و پر ارزش از چهــار ثبات 16 بیتی به عنوان
هشت ثبات داده 8 بیتی استفاده شود:

AH، AL، BH، BL، CH، CL، DH و DL.

#Registers
#Assembly
👍2
خب حالا دستور mov در اسمبلی برا چی استفاده میشه برای انتقال دادن مثلا

mov ebx,2

این یعنی 2 رو بریز یا انتقالش بده تو ریجستر ebx

انتقال داده ها از یک فضای
ذخیره سازی به فضای دیگه استفاده میشه

دستور mov به پنج شکل انجام میشه:

mov register,register

mov register,immediate

mov memory,immediate

mov register,memory

mov memory,register


نکته: هر دو عملوند (operand) داخل عملیات mov باید هم اندازه باشن
#mov
#operand
#assembly
#اسمبلی
3
دستورالعمل های منطقی در زبان اسمبلی

مجموعه دستورالعمل پردازشگر، دستورالعمل AND، OR، XOR، TEST و NOT
منطقی Boolean رو ارائه میدن که بیت ها را مطابق نیاز برنامه تســت، تنظیم
میکنه قالب این دستورالعمل ها به شکل زیره

#command
#not
#and
#or
#xor
#test
#assembly
🔥3
ساختار شرطی در زبان اسمبلی

اجرای شرط ها به زبان اسمبلی توسط چندین دستورالعمل حلقه و branching
پرش انجام میشه این دستورالعمل ها میتونن جریان کنترل رو داخل یک برنامه
تغییر بدن اجرای شرط ها در دو سناریو مشاهده میشن مثال:

روش غير شرطی Jump unconditional

توسط دســتورالعمل JMP انجام میشه اجرای شرط ها اغلب شامل انتقال
كنترل به آدرس دستورالعملیه كه از دستورالعمل اجرای الان پیروی
نمی کنه انتقال کنترل ممکنه رو به جلو باشه برای اجرای مجموعه
جدیدی از دستورالعمل یا قبلی اجرای دوباره همون مراحل

پرش شرطی jump Conditional

بســته به شــرایط توســط مجموعــه ای از دســتورالعمل هــای پرش j condition انجام میشه دستورالعمل های شرطی کنترل رو با
شکستن جریان پی در پی انتقال میدن و اونا رو با تغییر مقدار افست در IP انجام میدن
#assembly
#اسمبلی
#jump_conditional
#jump_unconditional
#loop
#حلقه
👍7