زبان اسمبلی چیست؟
زبان اسمبلی چیست؟
2 مرداد 1395 ساعت 6:52 | بازديد : 78 | نويسنده : | ( نظرات )
هر خانواده ای از پردازنده ها دارای مجموعه ای از دستورالعمل های منحصر بفرد است که زبان ماشين ناميده می شود.

مجموعه دستورالعمل های يک پردازنده (Instruction Set) مجموعه ای از اعداد دودوئی است که ماشين می تواند آنها را درک و اجرا کند.

هر نوع CPU تنها زبان مخصوص خود را درک می کند و دارای مفسری بنام microprogram است که دستورات زبان ماشين را به سيگنال های سخت افزاری تفسير و ترجمه می کند.

مثال 1. اعداد دودئی زير يک دستورالعمل ماشين اينتل است که عدد 5 را در ثبات AL قرار می دهد.

1011 0000 0000 0101

مثال 2. دستور زير ثبات های EAX و EBX را جمع کرده و حاصل را در ثبات EAX ذخيره کند.

0000 0011 1100 0011

 

هر دستورالعمل زبان ماشين شامل کد منحصر بفردی دارد که کدعملياتی (Operation Code) يا Opcode ناميده می شود.

Opcode هميشه در ابتدای دستورالعمل قرار می گيرد. اکثر دستورات شامل داده هم هستند که توسط دستورالعمل استفاده می شود و عملوند (Operand) نام دارند.

 

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

خوشبختانه برای هر خانواده از پردازنده ها يک زبان اسمبلی ارائه می شود که دستورالعمل های زبان ماشين را به صورت نمادی و قابل فهم تر نشان می دهند.

 

زبان اسمبلی چيست؟

زبان اسمبلی که يک زبان برنامه نويسی سطح پايين است که ساختار و عملکردی وابسته به ماشين دارد.

بين عبارات آن و دستورالعمل های زبان ماشين کامپيوتر تناظر يک به يک برقرار است. يعنی هر دستورالعمل اسمبلی دقيقا يک دستورالعمل زبان ماشين را نشان می دهد،

در حاليکه در زبان سطح بالا يک عبارت معمولا به چندين دستورالعمل ماشين تبديل می شود.

يک برنامه اسمبلی مانند برنامه های سطح بالا به صورت text نوشته می شود.

هر دستورالعمل زبان اسمبلی يک نمايش نمادی (يک کد الفبائی کوتاه) از يک دستورالعمل ماشين است، که به اين صورت معنی دستور واضح تر از کد زبان ماشين می شود.

 

مثال 1. کلمه mov نمادی برای عمل انتقال داده است. دستور اسمبلی زير جمع ثبات AL و عدد 5 را نشان می دهد.

mov AL,5

مثال 2. کلمه add يک نماد برای دستورالعمل جمع است. دستور جمع ثبات های EAX و EBX به صورت زير نوشته می شود.

add EAX, EBX

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

مثال 3. دستوری که عملوندی ندارد و فلگ carry را صفر می کند.

clc

مثال 4. دستور زير عدد يک را به ثبات AX اضافه می کند.

inc AX

مثال 5. دستور جمع مقدار متغير Count با محتوای ثبات به صورت زير است.

mov AX,Count

 

هر دستور اسمبلی می تواند همراه با ليستی از عملوند ها باشد. فرم کلی دستورالعمل های اسمبلی به صورت زير است:

mnemonic operand(s)

عملوند دستورالعمل می تواند از انواع زير باشد :

• ثبات. عملوندهائی که مستقيما به محتوای ثبات های پردازنده مراجعه می کنند. مانند ثبات AL در مثال 1. 
• متغير يا حافظه ای. عملوندهائی که به داده ای در حافظه اشاره دارند. مانند متغير Count در مثال 5. 
• فوری. اين عملوندها مقادير ثابتی هستند که در داخل دستورالعمل قرار می گيرند. در مثال 1عدد 5 يک عملوند فوری است. 
• ضمنی. عملوندهائی که صريحا در دستور ذکر نمی شوند. در مثال 4عدد يک با ثبات AL جمع می شود. عدد يک عملود ضمنی است.

 

اسمبلر

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

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

البته کامپايلرها هم برنامه هائی هستند که عمل مشابه را برای زبان های سطح بالا انجام می دهند،

اما اسمبلر به مراتب از کامپايلر ساده تر است، زيرا هرعبارت زبان اسمبلی تنها يک دستورالعمل ماشين را نشان می دهد.

عبارات زبان سطح بالا پيچيده تر هستند و ممکن است به دستورالعمل های ماشين بيشتری نياز داشته باشند.

يک تفاوت مهم ديگر بين اسمبلی و زبان های سطح بالا اين است که هر نوع CPU زبان ماشين و زبان اسمبلی مخصوص به خود را دارد.

انتقال برنامه های اسمبلی روی معماری های مختلف کامپيوتر به راحتی برنامه های سطح بالا نيست.

محبوب ترين اسمبلرها برای پردازنده ها ی خانواده اينتل عبارتند از:

• ماکرواسمبلر Microsoft’s Assembler MASM
• توربو اسمبلر Borland’s Assembler TASM
• و ASM86

 

برنامه ديگری که برای رديابی اجرای برنامه و بررسی محتوای حافظه کاربرد دارد ديباگر(Debugger) است که

استفاده از آن بهترين راه برای يادگيری برنامه های اسمبلی و روند اجرای آنهاست. ديباگر برنامه ای است که

اجازه بررسی ثبات ها و حافظه را بعد از اجرای هر دستور برنامه می دهد و خصوصا برای تست برنامه های اسمبلی مفيد است.

برنامه Debug از جمله ساده ترين ديباگرهاست که توسط MS-DOS عرضه شده است. CodeView همراه با ميکروسافت اسمبلر می آيد که اجازه می دهد

کد منبع برنامه ها، بلاک های حافظه و ثبات ها را مشاهده کنيد. Turbo Debugger بورلند هم به همين صورت است.

يک برنامه ديگر همراه با اسمبلر برنامه لينکر(Linker) است که فايل های مجزای توليد شده توسط اسمبلر يا کامپايلر را به يک برنامه اجرائی تبديل می کند.

برنامه Link که همراه فايل های MS-DOS می باشد يکی از متداولترين برنامه های لينکر می باشد.

 

هدف از يادگيري زبان اسمبلي

يادگيری زبان اسمبلی بايد با فراگيری مفاهيم سيستم عامل و معماری کامپيوتر توام باشد تا به درک بهتر برنامه های اسمبلی و تعامل آن با کامپيوتر کمک کند.

به چند دليل ممکن است کسی بخواهد زبان اسمبلی را ياد بگيرد و از آن استفاده کند:

• زبان اسمبلی وسيله خوبی برای يادگيری نحوه کار کامپيوتر، کامپايلرها و زبان های سطح بالا

است و به درک عميق تر معماری کامپيوتر، مفاهيم سيستم عامل، نمايش داده ها و دستگاه های سخت افزاری کمک می کند که دانستن آنها باعث می شود برنامه نويس از عهده

اشکالزدائی و رفع مسائل برنامه نويسی در سطح بالا بهتر برآيد و نرم افزارهای پربارتری را در زبان های سطح بالا مانند ++C پياده سازی کند.


• برنامه های اسمبلی سريع تر، کوچکتر و با توانائی های بيشتر از زبان های ديگر هستند و معمولا حافظه و زمان اجرای کمتری را نياز دارد.

گاهی نوشتن کد در اسمبلی سريعتر و کوتاهتر از کدکامپايل شده می شود. يک برنامه ويژوال بيسيک می تواند

زيربرنامه های DLL نوشته شده در زبان اسمبلی را برای افزايش سرعت برنامه در حالات بحرانی فراخوانی کند.


• برنامه های اسمبلی می توانند براحتی از محدوديت های موجود در زبان های سطح بالا عبور کنند و کنترل بيشتری نسبت به نيازمندی های سخت افزاری خاص ارائه دهند.

برخی از اعمال در زبان های سطح بالا دشوار يا غير ممکن است، مانند ارتباط با سيستم عامل يا دسترسی مستقيم به کنترلرها. يک برنامه نويس مجرب می تواند

با نوشتن کد بيشتر راهی برای گذشتن

از اين محدوديت ها پيدا کند اما خوانائی برنامه کاهش پيدا می کند. زبان اسمبلی، در مقابل، محدوديت های کمی دارد و تقريبا همه چير را به نظر برنامه نويس واگذار می کند. 

اين دلايل نشان می دهند که فراگرفتن اسمبلی می تواند مفيد باشد حتی اگر هيچوقت با آن برنامه ای نوشته نشود.

امروزه توليد برنامه ای که کاملا با زبان اسمبلی باشد غير معمول است، زيرا برنامه نويسی در زبان سطح بالا بسيار ساده تر از اسمبلی است علاوه براين استفاده از اسمبلی باعث می شود

حمل برنامه به کامپيوترهای مختلف دشوارتر شود.

در حقيقت بندرت کسی کاملا در زبان اسمبلی برنامه می نويسد. در عوض اسمبلی برای بهينه سازی بخش های حساس برنامه و افزايش سرعت

و دسترسی به سخت افزار و نوشتن برنامه های PROM استفاده می شود.

البته زبان برنامه نويسی C کيفيت منحصر به فردی در عرضه کردن مصالحه بين ساختار سطح بالا و جزئيات سطح پايين دارد.

اکثر کامپايلرهای C توانائی توليد کد منبع اسمبلی را دارند. برنامه نويسان اغلب ترکيب C و اسمبلی را در برنامه های کاربردی به کار می برند.



|
امتياز مطلب : 0
|
تعداد امتيازدهندگان : 0
|
مجموع امتياز : 0


مطالب مرتبط با اين پست
مي توانيد ديدگاه خود را بنويسيد


نام
آدرس ایمیل
وب سایت/بلاگ
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

آپلود عکس دلخواه:








قدرتمند ترین پکیج رپورتاژ و بک لینک

منوي کاربري


عضو شويد


نام کاربری
رمز عبور

:: فراموشي رمز عبور؟

عضويت سريع

نام کاربری
رمز عبور
تکرار رمز
ایمیل
کد تصویری
نويسندگان
خبرنامه
براي اطلاع از آپيدت شدن وبلاگ در خبرنامه وبلاگ عضو شويد تا جديدترين مطالب به ايميل شما ارسال شود



تبلیغات متنی
چت باکس

نام :
وب :
پیام :
2+2=:
(Refresh)
ساخت وبلاگ
اپلود عکس
آپلود عکس با لینک مستقیم
دانلود سریال ایرانی طنز
خرید ساعت مچی
هاست ارزان | خرید هاست
طراحی سایت در تبریز
دانلود رمان

خرید کانکس مسکونی
کسب درآمد اینترنتی
چت روم
ثبت شرکت
ثبت شرکت در کرج
خرید بک لینک ارزان
طراحی سایت در کرج
چت روم
قاصدون

خرید ژل امیزشی
دانلود رمان عاشقانه
تایتان چت
دانلود فیلم ایرانی با لینک مستقیم
جملات زیبا از بزرگان | جملات مفهومی
دانلود کلیپ خارجی
اخبار حوادث
مجله زیبایی بانوان
مجله اینترنتی مد
والپیپر های زیبا
دانلود فیلم ایرانی
دانستنی های پزشکی
جملات عاشقانه | عکس های عاشقانه
انجم تفریحی حد و حدود
اس ام اس مناسبتی
دانلود برنامه آشپزی اندروید
دانستنی های جنسی | آموزش روابط زناشویی
مجله تفریحی و سرگرمی
جملات عارفانه | جملات درمورد خدا
دکوراسیون داخلی ایرانی
دانلود آهنگ ایرانی غمگین
دانلود نرم افزار اندروید جدید
مجله تفریحی سرگرمی خر تو خر
آموزش طراحی سایت
دانلود بازی اندروید دخترانه
قران انلاین
طراحی سایت در تبریز
دانلود آهنگ ایرانی
سایت تخصصی ماشین
آبادان نیوز
الوان وب
دانلود اهنگ جدید
چت روم
بیت کوین
چت روم
گالری مدل لباس کودک
فال و طالع بینی
زیست پلاس - مرجع جامع کنکوریها
دانلود آهنگ جدید ایرانی
خرید ساعت کاسیو
علی چت
جوک 19
پایگاه خبری سهامدار نیوز
وایبر سافت
آنتیک موزیک
مجله تفریحی غزاله چت
مجله سرگرمی آلاله چت
خدمات بلاگ | url shortener service
خرید بک لینک
دانلود عکس متن دار با کیفیت HD
مجله تفریحی سرگرمی فانیا
دانلود موزیک پاپ ایرانی
مجله اتو چت
رویا طرح
زرنا نیوز
مجله امگا چت
طنز بازار
شلیل چت
پورتال محیا چت
درهاج چت
چت ایمیل

اف سی بی چت
ابتین چت
مکس نیوز
گلچین 98
مجله فان گپ
پورتال ماهان چت
چت تاپ
نانسی چت
نوز چت
شیدا چت
بزرگترین سایت مرجع ماشین
چت نشین
سلکت موزیک | دانلود آهنگ پاپ
شطرنج اراک
دروغ چت
فروش محصولات ورزشی | ایران پولار
سایت پیچک چت
اسکای پاتوق
افسون چت
محبت چت
سایت تفریحی 200 لاو
باکس نیوز
مجله پارسا گپ
دانلود فیلم و سریال
نوا گیم - دانلود بازی کامیپوتر کم حجم
پی فور فیلم
دانلود والپیپر
جدیدترین عکس های هنرمندان و مد لباس

چت ققنوس
آرال چت
همراه چت
ماه پری چت
بهاره چت
تفریحی چت
پارسینا چت
بروز موزیک
آبنباتی چت
تمدن ها
برترین ها
شارژ0
خونه تو
عشق اول چت
نانو چت
هیدن چت
چت نت
سیاهی چت
کوه چت
رهام چت
چت نو
عشق ابدی
فروشگاه اینترنتی
او موزیک
دانلود کلیپ جدید | عکس خفن
چت ماتیار
پورتال با ما
آنیلا چت
پورتال رومنا
فور چت
دانلود رایگان
آزران دانلود
دانلود فیلم و سریال
پرنس چت
فرار چت
پورتال آرمین
پارسینا چت
پورتال همدان
چت تاپ ناب
فروش بک لینک
تهران روم
تاپ رمان
پورتال برف
سایت ره گوی
قالب وبلاگ

http://www.saclongchamp--pascher.fr/
http://buyviagransa.com/