کتاب تسلط بر برنامه‌نویسی x86 با زبان اسمبلی: دروازه‌ای به اعماق سخت‌افزار با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB

تسلط بر برنامه‌نویسی x86 با زبان اسمبلی: دروازه‌ای به اعماق سخت‌افزار تسلط بر برنامه‌نویسی x86 با زبان اسمبلی: دروازه‌ای به اعماق سخت‌افزار آیا می‌خواهید پرده از رازهای درونی کامپیوترها بردارید؟ آیا ب...

انتخاب پلن

انتخاب پلن برای ادامه خرید الزامی است.

پرداخت اقساطی
در صورت خرید اقساطی هر قسط: 87,488 تومان
۴ قسط ماهانه. بدون سود، چک و ضامن.
پرداخت اقساطی با دیجی‌پی پرداخت اقساطی با ترب‌پی

🎓 دوره آموزشی جامع

📚 اطلاعات دوره

عنوان دوره: دوره تسلط بر برنامه‌نویسی x86 با زبان اسمبلی: دروازه‌ای به اعماق سخت‌افزار

موضوع کلی: معماری کامپیوتر و برنامه‌نویسی سیستمی

موضوع میانی: مبانی زبان اسمبلی و ساختار پردازنده‌های x86

📋 سرفصل‌های دوره

  • 1. مقدمه: چرا زبان اسمبلی یاد بگیریم؟
  • 2. مروری بر معماری کامپیوتر: مدل Von Neumann
  • 3. سیستم‌های عددی: باینری، هگزادسیمال و دسیمال
  • 4. تبدیل بین سیستم‌های عددی
  • 5. نمایش اعداد صحیح علامت‌دار: مکمل دو
  • 6. عملیات حسابی باینری: جمع و تفریق
  • 7. مفاهیم پایه منطق دیجیتال: گیت‌های AND, OR, NOT, XOR
  • 8. ساختار پردازنده‌های x86: از 8086 تا مدرن
  • 9. حالت‌های عملیاتی پردازنده: Real-Address, Protected, Long Mode
  • 10. معرفی ثبات‌های (Registers) عمومی x86
  • 11. ثبات‌های EFLAGS و EIP
  • 12. معرفی حافظه و آدرس‌دهی
  • 13. نصب و راه‌اندازی محیط برنامه‌نویسی (MASM/NASM)
  • 14. ساختار یک برنامه اسمبلی پایه
  • 15. اولین برنامه: "Hello, World!" در اسمبلی
  • 16. دستورالعمل MOV: انتقال داده‌ها
  • 17. دستورالعمل‌های حسابی پایه: ADD و SUB
  • 18. دستورالعمل‌های INC و DEC
  • 19. معرفی دستورالعمل‌های منطقی: AND, OR, XOR
  • 20. دستورالعمل NOT: معکوس کردن بیت‌ها
  • 21. تعریف داده‌ها: بایت، کلمه و کلمه مضاعف (BYTE, WORD, DWORD)
  • 22. تعریف متغیرهای مقداردهی نشده در سگمنت .BSS
  • 23. آدرس‌دهی مستقیم حافظه
  • 24. آدرس‌دهی غیرمستقیم حافظه
  • 25. اپراتورهای OFFSET و PTR
  • 26. دستورالعمل XCHG: تعویض مقادیر
  • 27. دستورالعمل LEA: بارگذاری آدرس مؤثر
  • 28. دستورالعمل‌های پرچم (Flag): بررسی نتایج عملیات
  • 29. پرچم‌های Carry و Overflow
  • 30. پرچم‌های Zero و Sign
  • 31. دستورالعمل CMP و مقایسه داده‌ها
  • 32. پرش‌های بدون شرط: JMP
  • 33. پرش‌های شرطی بر اساس پرچم‌ها (JZ, JNZ, JC, JNC)
  • 34. پرش‌های شرطی برای اعداد علامت‌دار (JG, JL, JGE, JLE)
  • 35. پرش‌های شرطی برای اعداد بدون علامت (JA, JB, JAE, JBE)
  • 36. ساختار حلقه‌ها با استفاده از JMP و CMP
  • 37. دستورالعمل LOOP
  • 38. مثال عملی: محاسبه فاکتوریل با حلقه
  • 39. ساختارهای شرطی: پیاده‌سازی if-else
  • 40. پیاده‌سازی ساختار switch-case
  • 41. پشته (Stack): مفاهیم پایه
  • 42. دستورالعمل‌های PUSH و POP
  • 43. بررسی ثبات‌های ESP و EBP
  • 44. تعریف رویه‌ها (Procedures) با PROC و ENDP
  • 45. دستورالعمل‌های CALL و RET
  • 46. ایجاد رویه‌های تو در تو (Nested Procedures)
  • 47. فریم پشته (Stack Frame) چیست؟
  • 48. پاس دادن آرگومان‌ها به رویه‌ها از طریق ثبات‌ها
  • 49. پاس دادن آرگومان‌ها به رویه‌ها از طریق پشته
  • 50. ایجاد متغیرهای محلی روی پشته
  • 51. حفظ و بازیابی ثبات‌ها در رویه‌ها
  • 52. قراردادهای فراخوانی (Calling Conventions): cdecl, stdcall
  • 53. کتابخانه‌های لینک (Linking Libraries): معرفی Irvine32/Irvine64
  • 54. استفاده از رویه‌های کتابخانه‌ای برای ورودی/خروجی
  • 55. بازگشت (Recursion): پیاده‌سازی تابع بازگشتی
  • 56. آرایه‌ها: تعریف و دسترسی به عناصر
  • 57. پردازش آرایه‌ها با حلقه‌ها
  • 58. آدرس‌دهی ایندکس‌دار (Indexed Addressing)
  • 59. رشته‌ها در اسمبلی: تعریف و نمایش
  • 60. دستورالعمل‌های پایه پردازش رشته (LODS, STOS)
  • 61. دستورالعمل‌های پیشرفته پردازش رشته (MOVS, CMPS, SCAS)
  • 62. پیشوندهای تکرار: REP, REPE, REPNE
  • 63. آرایه‌های دو بعدی: پیاده‌سازی و پیمایش
  • 64. دستورالعمل‌های ضرب: MUL و IMUL
  • 65. دستورالعمل‌های تقسیم: DIV و IDIV
  • 66. دستورالعمل‌های شیفت منطقی: SHL و SHR
  • 67. دستورالعمل‌های شیفت حسابی: SAL و SAR
  • 68. دستورالعمل‌های چرخش: ROL و ROR
  • 69. دستورالعمل‌های چرخش با کری: RCL و RCR
  • 70. مثال کاربردی: رمزنگاری ساده با XOR و چرخش
  • 71. وقفه‌ها (Interrupts): مفاهیم و کاربردها
  • 72. جدول توصیفگر وقفه (IDT)
  • 73. فراخوانی‌های سیستمی (System Calls) در ویندوز
  • 74. فراخوانی‌های سیستمی (System Calls) در لینوکس
  • 75. برنامه‌نویسی فایل: ایجاد و نوشتن در فایل
  • 76. برنامه‌نویسی فایل: خواندن از فایل
  • 77. مدیریت حافظه در سطح سیستم‌عامل
  • 78. تخصیص حافظه دینامیک
  • 79. ترکیب کدهای اسمبلی و C/C++: مقدمه
  • 80. فراخوانی توابع C از اسمبلی
  • 81. فراخوانی توابع اسمبلی از C
  • 82. پاس دادن متغیرهای ساده بین C و اسمبلی
  • 83. پاس دادن آرایه‌ها و رشته‌ها بین C و اسمبلی
  • 84. پاس دادن ساختارها (Structs) بین C و اسمبلی
  • 85. اسمبلی درون‌خطی (Inline Assembly) در C/C++
  • 86. معماری x86-64: حالت ۶۴ بیتی (Long Mode)
  • 87. ثبات‌های ۶۴ بیتی (RAX, RBX, ...) و ثبات‌های جدید (R8-R15)
  • 88. آدرس‌دهی نسبی RIP
  • 89. قرارداد فراخوانی در x86-64 (System V AMD64 ABI)
  • 90. برنامه‌نویسی ممیز شناور (Floating-Point): مقدمه‌ای بر FPU
  • 91. ثبات‌های x87 FPU و پشته ممیز شناور
  • 92. دستورالعمل‌های پایه ممیز شناور (FLD, FST, FADD, FSUB)
  • 93. مقایسه اعداد ممیز شناور
  • 94. مقدمه‌ای بر SIMD: پردازش موازی داده‌ها
  • 95. دستورالعمل‌های MMX
  • 96. دستورالعمل‌های SSE: ثبات‌های XMM و عملیات اسکالر/پک شده
  • 97. دستورالعمل‌های AVX: ثبات‌های YMM
  • 98. مدیریت حافظه پیشرفته: سگمنتیشن و صفحه‌بندی (Paging)
  • 99. بهینه‌سازی کد اسمبلی: هم‌راستاسازی و زمان‌بندی دستورالعمل‌ها
  • 100. نگاهی به بوت لودرها و فرآیند راه‌اندازی سیستم
تگ‌ها: ASM Assembly C# Computer Architecture Linux low-level programming System Programming Windows x86 برنامه‌نویسی سیستمی پردازنده زبان اسمبلی معماری کامپیوتر میکروپروسسور

نظرات

هنوز نظری ثبت نشده است.

وارد شوید تا نظر ثبت کنید.