نگفتم سادست
گفتم سطح پایینه
هر چه زبانی سطح پایین تر باشه به زبان ماشین خیلی نزدیک تر خواهد بود ( و از زبان انسان دورتر) و طبیعتا یادگیری اون بسیار سخت خواهد بود.
الان دیگه فکر نکنم کسی اسمبلی یاد بگیره البته زبان بسیار پرقدرتی هست
لطفا برای پرسش هاتون تگ بزارید قوانین جواب رو لطفا مطالعه کنید
مخصوصا 11 و 12 و 17ش که خیلی مهمه
اسمبلی باتوجه نزدیک بودن به زبان ماشین سرعت بیشتری نسبت به تمام زبانها داره
بنابراین واسه قسمتهایی از سیستم عامل که نیاز به سرعت بیشتری داره از این زبان استفاده میشه مثل (بوت)اگه به چنین سرعتی نیاز نداری ازش دوری کن و به زبانهای دیگر بچسب
assembly زبانیه که هر کی با سخت افزار سروکار داره بیش تر به دردش میخوره تا یه برنامه نوس برنامه های کاربردی.
این زبان توی Reverse Engineering هم کاربرد داره و تحلیلگرها و هکرها و کرکرها برنامه نویس ها میتونن فایل های باینری و کامپایل شده رو به زبان اسمبلی تبدیل کنن و از این طریق به طرز کار برنامه ها و الگوریتم های استفاده شده در اون پی ببرن.
زبان همگذاری[۱] یا اَسمبلی (به انگلیسی: Assembly) به مجموعه زبانهای برنامهنویسی سطح پایینی اطلاق میشود که در آن مستقیماً دستورالعملهای پردازندهٔ اصلی (CPU) نوشته میشود ( یعنی دستوراتی که ALU توانایی انجام آنها را دارد.)
به دلیل سطح پایین بودن این زبانها، نوشتن، اشکالزدایی و نگهداری برنامه سختتر است. برای هر خانوادۀ CPU یک زبان اسمبلی وجود دارد.
این زبان به زبان مادر کامپیوتر بسیار نزدیک میباشد بهطوری که تمامی برنامههای اولیه همچون ++C توسط زبان اسمبلی ساخته شده است و همچنین اکثر کارها در زمینۀ هک و مانند آن با این زبان انجام میشود. در زبان اسمبلی هر دستور زبان متناظر یک دستور باینری است. این زبان را با استفاده از اسمبلرها میتوان به زبان ماشین یعنی صفر و یک تبدیل کرد. نرمافزارهای اسمبلر بر روی سیستم نصب شده و با وارد کردن کدهای اسمبلی و اشکالزدایی کردن آن میتوان آنها را به زبان ماشین تبدیل کرد.
اسمبلر
اسمبلر یا همگذار نرم افزاری است که برنامه نوشته شده به زبان اسمبلی را به کدهدف (Object Code) تبدیل می کند و یک فایل با پسوند obj تولید می کند. توجه شود که این فایل قابل اجرا نیست و بوسیله نرم افزار Linker این فایل به یک فایل با پسوند exe تبدیل میشود که این فایل جدید قابل اجرا است.
اسمبلر های معروف برای معماری x86:
◾مایکروسافت اسمبلر (به انگلیسی: Microsoft Macro Assembler یا MASM) در ویندوز استفاده میگردد
◾جیاِنیو اسمبلر (به انگلیسی: Gnu Assembler یا GAS) در یونیکس استفاده میگردد
◾نتواید اسمبلر (به انگلیسی: Netwide Assembler یا NASM) در یونیکس استفاده میگردد
◾توربو اسمبلر (به انگلیسی: Turbo Assembler یا TASM) در داس و ویندوز استفاده میگردد
هر مجموعه دستورالعمل تعبیه شده در هر پردازندهای، زبان اسمبلی مخصوص خود را دارا میباشد. لذا اگر دو نوع پردازنده که ISA (یا مجموعه دستورالعمل) آنها متفاوت از یکدیگر میباشد را داشته باشیم، نمیتوانیم با یک زبان اسمبلی (یا زبان همگذاری) یکسان برای آن دو، برنامه بنویسیم. برای مثال زبان اسمبلی معماری x86 با زبان اسمبلی معماری MIPS تفاوت دارد. (MIPS توسط شرکتهای مختلف مانند ایسر، انایسی، و تعدادی دیگر از شرکتها مورد استفاده قرار میگردد).
همچنین هر کد اسمبلی مخصوص همان اسمبلری است که با آن اصطلاحاً اسمبل شده است، بنابراین برای مثال یک کد اسمبلی پردازنده x86 نوشته برای اسمبلر GAS (جیاِنیو اسمبلر) نمیتواند با اسمبلر MASM (مایکروسافت اسمبلر) برای پردازنده x86 اسمبل شود.
اَسِمبلی 64 بیتی 32 بیتی و 16 بیتی
در زبان اَسِمبلی با توجه به امکانات پردازنده و مقدار حافطهٔ آن از یک اسمبلر ۱۶، ۳۲، و یا ۶۴بیتی استفاده میشود.
◾در اَسِمبلی ۱۶ بیتی حافظه در ثباتهای AX BX CX DX AH AL BH BL CH CL DH DL IP CS DS ... قرار دارد.
◾در اَسِمبلی ۳۲ بیتی ثباتهای EAX EBX ECX EDX EIP اضافه میشوند.
◾و در اَسِمبلی ۶۴ بیتی نیز ثباتهای RAX RBX RCX RDX RIP اضافه میشوند.
حافظهٔ قابل دسترس در حالات فوق به ترتیب ۶۵۵۳۶، ۴۲۹۴۹۶۷۲۹۶ و ۱۸۴۴۶۷۴۴۰۷۳۷۰۹۵۵۱۶۱۶ بایت است.
نکته:
زبان اسمبلی را به دو صورت می توان پیاده سازی کرد یکی از طریق برنامه doc و دیگری با برنامه emu که این برنامه تحت ویندوز
می باشد و به صورت گرافیکی شما می توانید با این برنامه کار کنید