دانلود رایگان آموزش صفر تا صد اسمبلی 2024 (فیلم+PDF)
بعد از حدود ۱ هفته گشت و گذار در اینترنت و از بین هزاران ویدیو، یک مجموعه بی نقص و کامل ویدیویی را برای یادگیری سریع برنامه نویسی اسمبلی گلچین کرده ایم. این مجموعه کامل برای شروع از صفر و برای همه سطوح مناسب می باشد. بعد از آن نیز بهترین جزوه PDF فارسی موجود در اینترنت را جهت تکمیل یادگیری می توانید دانلود کنید.
۱-توضیحاتی مفید درباره اسمبلی
زبان اَسمبلی (به انگلیسی: Assembly language) یا همگذاری یک زبان برنامهنویسی سطح پایین برای رایانهها و دیگر دستگاههای برنامهپذیر است که رابطهٔ یک-به-یک با دستورالعملهای زبان ماشین معماری رایانه دارد. هر زبان اسمبلی مختص به یک معماری رایانه خاص است، برخلاف بیشتر زبانهای برنامهنویسی سطح بالا که با معماریهای مختلف سازگار هستند ولی برای اجرا شدن به مفسر و مترجم نیاز دارند.
زبان اسمبلی با استفاده از یک برنامه جانبی به نام اسمبلر یا همگذار، به کد ماشین قابل اجرا تبدیل میشود؛ به این فرایند تبدیل، اسمبل کردن (به انگلیسی: Assembling) گفته میشود.
زبان اسمبلی از یادیارها برای نشان دادن هر دستور ماشین سطح-پایین یا آپکد استفاده میکند. بعضی آپکدها به یک یا چند عملوند به عنوان بخشی از دستورالعمل نیاز دارند و بیشتر اسمبلرها میتوانند لیبلها و نمادهایی را به عنوان عملوند، برای نشان دادن آدرسهای حافظه و ثابتهای عددی بپذیرند. ماکرو اسمبلرها نیز قابلیت درشتدستوری (به انگلیسی: Macroinstruction) را شامل میشوند که این امکان را به وجود میآورد که متن یک کد زبان اسمبلی با یک نام از پیش تعیین شده در خلال متن یک کد دیگر استفاده شود. بیشتر اسمبلرها مکانیزمهای اضافی برای تسهیل فرایند توسعهٔ برنامه، کنترل فرایند اسمبل کردن و پشتیبانی از اشکالزدایی ارائه کردهاند. (ویکی)
کاربردهای امروزی
بعد از روی کار آمدن این همه زبان برنامه نویسی سطح بالا چرا هنوز زبان اسمبلی کاربرد دارد؟ اسمبلی زبان نزدیک به زبان سطح ماشین است و نوشتن برنامه با آن بسیار زمان بر و دشوار است ولی هنوز دلایلی برای کاربرد زبان اسمبلی وجود دارد.
- زمانی که بخواهیم برای cpu خاصی برنامه بنویسیم یا باید کامپایلری مثل کامپایلر c++ را برای پردازنده مورد نظر طراحی کنیم و با کامپایلر نوشته شده برنامه مورد نظر را به زبان c++ بنویسیم. این روند مقرون به صرفه نیست و لذا در چنین مواردی که برای نوع خاصی از پردازنده کامپایلر زبان های سطح بالا وجود نداشته باشد باید با اسمبلی برنامه مورد نظر را نوشت.
- در زبان های سطح بالا سرعت اجرای برنامه کندتر است و از طرفی دقت برنامه مانند اسمبلی نیست. مثلا اگر بخواهید برنامه برای یک روبات درون کارخانه بنویسید که زمان بندی خیلی دقیقی باید داشته باشد و اگر این زمان بندی رعایت نشود دستگاه می سوزد باید از زبان اسمبلی استفاده کنید.
- هکر هایی که کار ساخت کرک و تروجان را انجام می دهند باید به زبان اسمبلی مسلط باشند زیرا هر برنامه ای که نوشته می شود به زبان ماشین تبدیل می شود و از آن جایی که هر برنامه به زبان ماشین را می توان decompile کرد و به زبان اسمبلی برگرداند پس شما می توانید هر برنامه ای به زبان اسمبلی برگردانید.
البته برنامه های بزرگ شاید تعداد خط آن بسیار بسیار زیاد باشد که این کار توسط هکر های بزرگ انجام می شود و در آن به بررسی برنامه و ساخت کرک برای آن می پردازند.به همین دلیل می گویند که یکی از کاربرد های زبان اسمبلی در مهندسی معکوس می باشد.
این اصطلاحات فوق العاده کاربردی اسمبلی رو الان یاد بگیرید:
مخفف "Operation Code" است و نشاندهنده دستور العملی است که پردازنده باید اجرا کند. اپکد مشخص میکند که چه عملیاتی (مانند جمع، تفریق، جابجایی و غیره) باید انجام شود.
۲. عملوند (Operand) داده یا آدرسی است که دستورالعمل روی آن عمل میکند. عملوندها میتوانند مقادیر ثابتی، آدرسهای حافظه یا رجیسترها باشند.
۳. رجیستر (Register) یک حافظه کوچک و بسیار سریع در داخل پردازنده است که برای ذخیره مقادیر موقتی استفاده میشود. برخی از رجیسترهای معمول عبارتند از:
- AX, BX, CX, DX: رجیسترهای عمومی
- SP (Stack Pointer): اشارهگر پشته
- BP (Base Pointer): اشارهگر پایه
- SI (Source Index), DI (Destination Index): شاخصهای منبع و مقصد
یک ساختار داده است که به صورت LIFO (Last In, First Out) عمل میکند. پشته برای ذخیره مقادیر موقتی، بازگشت آدرسها و پارامترهای تابع استفاده میشود.
۵. دستورالعمل (Instruction) مجموعهای از اپکد و عملوندها است که یک عملیات خاص را مشخص میکند. برخی از دستورالعملهای رایج عبارتند از:
- MOV: انتقال داده از یک مکان به مکان دیگر
- ADD: جمع دو مقدار
- SUB: تفریق دو مقدار
- MUL: ضرب دو مقدار
- DIV: تقسیم دو مقدار
- PUSH: قرار دادن مقدار در پشته
- POP: بیرون آوردن مقدار از پشته
روشی است که در آن آدرس دادهها مشخص میشود. انواع مختلفی از آدرسدهی وجود دارد:
- Immediate Addressing: داده به صورت مستقیم در دستورالعمل قرار دارد.
- Direct Addressing: آدرس مستقیم داده در حافظه مشخص میشود.
- Indirect Addressing: آدرس داده به صورت غیرمستقیم از طریق رجیسترها مشخص میشود.
- Indexed Addressing: آدرس داده با استفاده از ترکیب یک پایه (Base) و یک شاخص (Index) مشخص میشود.
یک نام نمادین است که به یک آدرس حافظه خاص اشاره میکند و معمولاً برای شاخهبندی (Branching) و پرشها (Jumps) استفاده میشود.
۸. پرشها و شاخهبندیها (Jumps and Branching) برای تغییر جریان اجرای برنامه استفاده میشوند. برخی از دستورالعملهای پرش عبارتند از:
- JMP: پرش به یک آدرس مشخص
- JE (Jump if Equal): پرش اگر دو مقدار مساوی باشند
- JNE (Jump if Not Equal): پرش اگر دو مقدار مساوی نباشند
- JG (Jump if Greater): پرش اگر مقدار اول بزرگتر باشد
- JL (Jump if Less): پرش اگر مقدار اول کوچکتر باشد
یک بلوک کد تکرارپذیر است که میتوان آن را در بخشهای مختلف برنامه استفاده کرد. ماکروها به بهینهسازی و کاهش کدنویسی کمک میکنند.
۱۰. بخشها (Sections) بخشهای مختلف کد اسمبلی هستند که برای سازماندهی بهتر برنامه استفاده میشوند. برخی از بخشهای رایج عبارتند از:
- .text: بخش کد اجرایی
- .data: بخش دادههای مقداردهی شده
- .bss: بخش دادههای مقداردهی نشده
ابزاری است که کد اسمبلی را به کد ماشین (باینری) تبدیل میکند تا پردازنده بتواند آن را اجرا کند.
۱۲. دیباگر (Debugger) ابزاری است که برای بررسی و رفع اشکالات کد اسمبلی استفاده میشود. دیباگرها امکان مشاهده مقادیر رجیسترها، حافظه و اجرای خط به خط کد را فراهم میکنند.
۱۳. وقفه (Interrupt) یک سیگنال از دستگاههای سختافزاری یا نرمافزاری است که باعث میشود پردازنده اجرای فعلی را متوقف کرده و به یک روتین وقفه برود. بعد از اتمام روتین وقفه، پردازنده به اجرای برنامه اصلی بازمیگردد.
۲-موارد آموزش داده شده در این پکیج رایگان
- اسمبلی چیست؟
- کاربردها و مبانی اصلی اسمبلی
- دستورهای SUB و MUL و DIV
- دستورهای AND ,OR ,XOR
- دستورهای SHL و SHR, ROR, ROL, RCR, RCL
- دستور CMP
- پیاده سازی IF و SWITCH
- پیاده سازی FOR و WHILE
- و …
۳- نمونه آموزش
۴-دانلود آموزش رایگان
حجم: ۹۸۰ مگابایت
سطح: از صفر تا صد
نسخه آموزش داده شده: مناسب برای همه نسخه های برنامه
به دنبال یادگیری سریع تر، حرفه ای تر، کامل تر و با کیفیت فول اچ دی هستید؟
5- ترفندهای کاربردی اسمبلی که باید بلد باشید
البته قبلا هم یاد گرفتید که برنامهنویسی اسمبلی، که یکی از زبانهای برنامهنویسی سطح پایین است، میتواند بسیار دقیق و قدرتمند باشد، اما همچنین پیچیده و دشوار برای یادگیری است. در اینجا 10 ترفند کاربردی برای کار با زبان اسمبلی آورده شده است:
- آشنایی با ساختار CPU و حافظه: دانش پایه در مورد نحوه کار CPU و ساختار حافظه برای درک بهتر نحوه عملکرد دستورات اسمبلی ضروری است.
- استفاده از نظرات (Comments): به دلیل پیچیدگی کد اسمبلی، استفاده گسترده از نظرات برای توضیح هر بخش از کد بسیار مهم است.
- کدنویسی تمیز و سازمانیافته: سعی کنید کد خود را به شکلی تمیز و منظم بنویسید، با استفاده از فرمتبندی و فاصلهدهی مناسب برای افزایش خوانایی.
- شروع با برنامههای ساده: قبل از پرداختن به پروژههای پیچیدهتر، با نوشتن برنامههای ساده شروع کنید تا با سینتکس و مفاهیم اساسی آشنا شوید.
- یادگیری و استفاده از ابزارهای دیباگ: استفاده از ابزارهای دیباگینگ برای شناسایی و رفع خطاها در کد اسمبلی بسیار مهم است.
- آشنایی با دستورالعملهای ماشین خاص: هر معماری پردازنده دستورالعملهای مخصوص به خود را دارد. لازم است با دستورالعملهای مربوط به معماری پردازندهای که با آن کار میکنید آشنا شوید.
- استفاده از ابزارهای مدیریت حافظه: یادگیری نحوه مدیریت حافظه و استک به صورت دستی در اسمبلی بسیار مهم است.
- آشنایی با دستورالعملهای شرطی و حلقهها: فهمیدن نحوه کار با دستورالعملهای شرطی و ایجاد حلقهها برای کنترل جریان برنامه.
- یادگیری مفاهیم بنیادی: مفاهیمی مانند Interrupts, Registers, و Memory Addressing باید کاملاً فهمیده شوند.
- صبر و تمرین مداوم: برنامهنویسی اسمبلی نیاز به صبر و تمرین زیاد دارد. تمرین مداوم و مطالعه نمونه کدها برای افزایش دانش شما بسیار مفید خواهد بود ضمن اینکه اسمبلی فررار است و مدام باید تمرین و بخاطر اوری داشته باشید.
هر گونه سوالی در زمینه این مطلب دارید در بخش نظرات مطرح کنید تا به آن پاسخ دهیم.
سلام - زبان آموزش هم pdf و هم ویدئو ها فارسیه؟
پاسخسلام وقت بخیر
پاسخبرای ادامه کار توی شرکت توسعه سخت افزار در لندن موظفمون کردن که اسمبلی فول باید باشیم ینی فوق العاده خواهان داره اینور. این ویدیوهای رایگانتون رو مرور کردم اما در حد شوخی بیشتر 😊 😊 دوره حرفه ای فروشگاه تون که تعریفش شنیده بودم خرید زدم، تازه فهمیدم اسمبلی ینی چییییی. اونم توی یک ماه شدم منتور اسمبلی توی شرکت با 30 درصد حقوق بالاتر.... فقط می تونم بگم هزاربار ممنون