مقدمه
زبانهای مختلفی برای برای انتخاب توسط شرکت برنامهنویسی وجود دارند که هر کدام از آنها، کاربرد خاص خودش را دارد. یکی از این زبانها که بسیار رایج است، زبان اسمبلی و ماشین است. البته باید گفت که زبان اسمبلی و زبان ماشین کاملا با یکدیگر متفاوتند. به سبب اینکه بین عبارات اسمبلی و دستورالعملهای زبان ماشین، تناظر یک به یک برقرار میباشد، نام این دو اکثرا در کنار هم میآید. در واقع هر یک از دستورالعملهای زبان اسمبلی، یک کد الفبایی کوتاه از یک دستورالعمل ماشین میباشد که لزوم وجود آن، واضحتر شدن معنی دستور از کد زبان ماشین است. برنامهای که به زبان اسمبلی نوشته میشود، شامل یک مجموعه از دستورالعملهای پردازنده، کامنتها، شبه دستورها و دادهها است. در ادامه مطلب به توضیح جزئیات این زبان برنامهنویسی خواهیم پرداخت.
زبان اسمبلی چیست؟
زبان اسمبلی یک زبان برنامه نویسی است که هر رایانه شخصی یک microprocessor دارد که محاسبات ریاضی، منطقی و کنترل کامپیوتر را مدیریت میکند.
هر خانواده پردازنده دستورالعمل خاص خود را برای رسیدگی به عملیاتهای مختلف مانند گرفتن ورودی از صفحهکلید، نمایش اطلاعات روی صفحه و انجام کارهای دیگر دارد. این مجموعه از دستورالعملها “دستورالعمل زبان ماشین” نامیده میشوند.
شماره های هگزادسیمال در محاسبات برای خلاصه کردن باینری های طولانی استفاده میشوند. اساسا، سیستم شماره hexadecimal نشاندهنده یک داده دودویی با تقسیم هر بایت به صورت نیمه و بیان مقدار هر بایت است.
هر سیستم عددی از نماد موقعیتی استفاده میکند، یعنی هر موقعیتی که در آن یک رقم نوشته میشود دارای یک ارزش موقعیتی متفاوت است. هر موقعیت، قدرت پایگاه است، که برای سیستم شماره دودویی دو برابر است، و این قدرتها در صفر شروع و تا ۱ افزایش مییابند.
سفارش طراحی اپلیکیشن و برنامه نویسی اختصاصی
سیستم شماره هگزادسیمال
سیستم شماره هگزادسیمال از پایه ۱۶ استفاده میکند. رقم این سیستم از ۰ تا ۱۵ است. از طریق کنوانسیون، حروف A از طریق F برای نشان دادن ارقام hexadecimal متناظر با مقادیر دهدهی از ۱۰ تا ۱۵ استفاده میشود.
شماره های هگزادسیمال در محاسبات برای خلاصه کردن باینری های طولانی استفاده میشوند. اساسا، سیستم شماره hexadecimal نشاندهنده یک داده دودویی با تقسیم هر بایت به صورت نیمه و بیان مقدار هر بایت است.
پردازنده اندازههای داده زیر را پشتیبانی میکند:
- کلمه: یک مورد ۲ بایتی
- :double word یک مورد ۴ بایتی (۳۲ بیتی)
- :Quad Word یک مورد ۸ بایتی (۶۴ بیتی)
- بند: یک ناحیه ۱۶ بایتی (۱۲۸ بیت)
- :kilobyte ۱۰۲۴ بایت
- :Megabyte ۱،۰۴۸،۵۷۶ بایت
سیستم شماره دودویی یا باینری
هر سیستم عددی از نماد موقعیتی استفاده میکند، یعنی هر موقعیتی که در آن یک رقم نوشته میشود دارای یک ارزش موقعیتی متفاوت است. هر موقعیت، قدرت پایگاه است، که برای سیستم شماره دودویی دو برابر است، و این قدرتها در صفر شروع و تا ۱ افزایش مییابند.
ویژگیهای اصلی سختافزار کامپیوتر
سختافزار اصلی داخلی یک کامپیوتر شامل پردازنده، حافظه و رجیستر است. Register ها اجزایی هستند که دادهها و آدرس را نگهداری میکنند. برای اجرای یک برنامه، سیستم آن را از دستگاه خارجی به حافظه داخلی کپی میکند. پردازنده دستورات برنامه را اجرا میکند.
واحد اصلی ذخیرهسازی کامپیوتر بیت است؛ میتواند در (۱) یا خارج (۰) باشد و یک گروه از ۸ بیت مرتبط یک بایت را در بیشتر کامپیوترهای مدرن تبدیل میکند.
بنابراین، بیت برابری برای ایجاد تعداد بیتهای یک بایت بکار میرود. اگر بیت برابری باشد، سیستم فرض میکند که خطای parity (هرچند کمیاب) وجود دارد، که ممکن است ناشی از خطای سختافزاری یا اختلال الکتریکی باشد.
پردازنده فقط دستورالعملهای زبان ماشین را میفهمد که تشکیل شده از رشتههای ۱ و ۰ هستند. با این حال، زبان ماشین برای استفاده در توسعه نرمافزار بسیار پیچیده است. بنابراین، زبان اسمبلی در سطح پایین برای یک خانواده خاص از پردازندهها طراحی میشود که دستورالعملهای مختلفی را در کد نمادین و شکل های قابل فهم دیگر نشان میدهد.
فواید زبان اسمبلی
داشتن درک زبان اسمبلی اطلاعاتی را به وجود میآورد:
- چگونگی ارتباط برنامهها با OS ، پردازنده و BIOS؛
- چگونه دادهها در حافظه و دیگر دستگاههای خارجی نمایش داده میشوند.
- چگونه پردازنده به آن دسترسی دارد و دستورالعمل را اجرا میکند؛
- نحوه دسترسی به اطلاعات و پردازش اطلاعات؛
- چگونه یک برنامه به دستگاههای خارجی دسترسی دارد.
فواید دیگر استفاده از زبان اسمبلی عبارتند از:
- نیاز به حافظه کمتر و زمان اجرا دارد؛
- باعث میشود که سخت افزار دستورها را به روش آسان تری انجام دهد.
- برای دستوراتی که به زمان بندی نیاز دارند، مناسب است.
- برای سرویسهای خدمات وقفه و برای دیگر حافظهها مناسب است.
زبان ماشین چیست؟
کد ماشین یا همان زبان ماشین مجموعهای از دستورالعملهاست که به صورت مستقیم توسط واحد پردازش مرکزی کامپیوتر اجرا میگردند و هر یک کار خاص را انجام میدهد. از کارهای آنها میتوان به بارگذاری، پرش، عملیات ریاضی و عملکردهای مربوط به حافظه اشاره کرد. کد ماشین عددی ممکن است به عنوان پایینترین سطح نمایش یک برنامه کامپیوتری کامپایلشده و یا به عنوان یک زبان برنامهنویسی وابسته به سختافزار اولیه محسوب شود. امکان نوشتن برنامهها مستقیما و به صورت کد ماشین عددی وجود دارد اما مدیریت کردن بیتهای تک و محاسبه آدرسهای عددی به صورت دستی، کاری خستهکننده و با احتمالا خطای بالاست. به همین علت است که کد ماشین تقریبا هیچوقت استفاده نمیشود.
تفاوتهای زبان اسمبلی و زبان ماشین
- زبان اسمبلی برای انسانها قابل درک بود اما زبان ماشین مانند اسمش برای ماشینها قابل درک است.
- کدهای اسمبلی بایستی به زبان ماشین تبدیل شوند تا برنامه اجرا گردد اما کدهای ماشین مستقیما توسط پردازنده اجرا میشوند.
- زبان ماشین جریانی از اعداد صفر و یک است که یعنی یک زبان دودویی محسوب میشود اما زبان اسمبلی یک کد الفبایی کوتاه دارد.
شباهتهای زبان اسمبلی و زبان ماشین
- هردوی آنها جزو زبانهای سطح پایین برنامهنویسی میباشند.
- هردوی آنها کاملا وابسته به معماری پردازنده هستند که یعنی هر خانواده از پردازندهها زبان اسمبلی و ماشین مخصوص خود را دارد.
سخن پایانی
زبان اسمبلی نوعی زبان برنامهنویسی است که سطح پایین است اما وسیله خوبی برای یادگیری نحوه کار کامپیوترها، کامپایلرها و زبانهای سطح بالاست. زبان اسمبلی قابل خواندن برای انسان و متناظر با آن، زبان ماشین مخصوص ماشینهاست. این دو، قدیمیترین زبانهای برنامهنویسی هستند که از نظر زمانبندی و صرفهجویی در حافظه مناسبند. برای اطلاعات بیشتر به وبسایت وب نگاه مراجعه کنید.