خدای خدایان ( اسمبلی )


زبانی که تمامی زبان های برنامه نویسی به وجود اون هست که می درخشند ( به جز پایگاه داده و چیز هایی که مربوط به سایت و شبکه میشه‌)

زبانی که تا همین حالا هم قدرتمند می درخشد.زبانی که اگر بنده او بشوید شما را سر بلند می گرداند.

زبانی که به واسطه ما از این زندگی بهره می بریم.

و این زبانی نیست جز اسمبلی.



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

هر زبانه برنامه نویسی که با اون کار می کنیم به لطف اسمبلی هست.

شاید بپرسید چرا و اصلا این زبان برنامه نویسی اسمبلی چه هست؟؟ و چرا داری چرت و پرت میگی!!!؛ ولی صبر کنید دوستان شما حتی آشنایی کاملی با این زبان ندارید.

پس بزارید کامل توضیح بدم و بعد هرچی دلت خواست بگو!!



اسمبلی چیست؟

زبان اَسمبلی (به انگلی: Assembly language) یا همگذاری یک زبان برنامه‌نویسی سطح پایین برای رایانه‌ها و دیگر دستگاه‌های برنامه‌پذیر است که رابطهٔ یک-به-یک با دستورالعمل‌های زبان ماشین معماری رایانه دارد. هر زبان اسمبلی مختص به یک معماری رایانه خاص است، برخلاف بیشتر زبان‌های برنامه‌نویسی سطح بالا که با معماری‌های مختلف سازگار هستند ولی برای اجرا شدن به مفسر و مترجم نیاز دارند.

زبان اسمبلی با استفاده از یک برنامهٔ جانبی به نام اسمبلر یا همگذار، به کد ماشین قابل اجرا تبدیل می‌شود؛ به این فرایند تبدیل، اسمبل کردن (به انگلیسی: Assembling) گفته می‌شود.

این چرت و پرتی که خوندید کتابی بود؛ خیلی ساده بگم زبان اسمبلی همون زبان صفر و یک هست ولی نام گذاری شدن مثلا ۱۰۱۱۱ میشه mov هرچند که مطمعنا این نمیشه ولی برای یک مثال کافی هست.



چرا زبان اسمبلی سخت است؟

خب واضحه که این زبان خیلی سخته و دلایل روشنی هم داره اما هرچیزی سختی های خودش رو داره و یا بهتره بگیم هرچیزی بهای خودش رو داره.

  • شما باید درک کافی از معماری سیستم مخصوصا سی پی یو داشته باشید. ( که خودش پروسه پیچیده ایی هست )
  • ریاضی بلد باشید ( برای تبدیل مبنا و درک بهتر )
  • الگوریتم ساز خفنی باشید چون اگه اشتباه کنید کارتون تمومه
  • دقت کنید به هرچی که می نویسید
  • صبور باشید

شاید بگید این ها که کاری نداره اما سخت دراشتباهید؛ تا حالا سینتکس زبان اسمبلی رو دیدید؟؟ اونم فقط یک سلام دنیای ساده؟؟!!

پس بیا هضمش کن:

global _start ;must be declared for linker (ld)

_start: ;tells linker entry point

mov edx,len ;message length

mov ecx,msg ;message to write

mov ebx,1 ;file descriptor (stdout)

mov eax,4 ;system call number (sys_write)

int 0x80 ;call kernel

mov eax,1 ;system call number (sys_exit)

int 0x80 ;call kernel

section .data

msg db 'Hello, world!', 0xa ;string to be printed

len equ $ - msg ;length of the string

چی شد تو که فکر می کردی خیلی ساده است؟؟ تازه این اضافه کن هر معماری با معماری دیکه فرق میکنه‌(زبان های اسمبلی با هم فرق دارن البته بستگی به سیستم عامل و سی پی یو داره مثلا معماری لینوکس AT&T هست که با ویندوز فرق داره اما با اسمبلر های خاص میشه این زبان رو عوض کرد)

حالا هم که داری با خودت میگی فایده یاد گرفتن این زبان چیه؟!!!

خب بزار رک و پوست کنده بگم شما میتونید با مغز سیستم تون در ارتباط باشید ( سی پی یو ) که این خودش چیزه کمی نیست.

اما اگه هدف های پلید تر و کثیف تر هم داشته باشید شما میتوند خیلی کارهای دیگه بکنید مثلا:

  • کرک ( مهندسی معکوس )
  • ساخت بد افزار هایی که سیستم رو با خاک یک سان کنند یا سیستم رو در اختیار بگیرن ( بستکی به هدف طرف داره )
  • تجزیه و تحلیل بد افزار
  • رمزنگاری
  • رمزگشایی
  • کنترل کامل سخت افزار مثل رم ( چون سی پی یو در اختیار دارید )


اینا سه تا از دلایل اصلی برای یادگیری این زبان هست؛ هرچند شما فقط با یادگیری این زبان به این سطح نمی رسید و باید خیلی چیز های دیگه رو یاد بگیرید.

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

این زبان آزادی کامل داره ( هرچند که آزادی میتونه ترسناک باشه )

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



متاسفانه فرار از اسمبلی کاملا بی فایده هست چرا که در نهایت کد برنامه ما تبدیل به اسمبلی و بعد به ماشین تبدیل میشه ( صفر و یک )

ما هیچ نیازی به توابع زبانهای سطح بالا نداریم و می توانیم کماکان از همان توابع سیستم عامل ویندوز یا وقفه های بایوس استفاده نماییم . یا حتی خودمان با کمک زبان اسمبلی می توانیم ، توابع جدید بسازیم !



بله به همین دلیل این زبان واسه خودش غولی هست اما متاسفانه منابع یادگیری این زبان بسیار کمه ( حتی تو سایت های انگلیسی زبان ) اما به قدری هست که بشه یاد گرفت و اون رو درک کرد.



منابع:

ویکی پدیا

vahidmy.blog.ir

ایمیل من برای پرسش و پاسخ و نظر سنجی :

dhwqymhmdtaha@gmail.com

شماره کارت برای حمایت از من؛ حمایت شما باعث پشتکار و تلاش من میشه :)


6280-2313-4679-7441

شاد و پیروز باشید(: