صفحه 1 از 4

اسمبلي چيست ؟

ارسال شده: جمعه ۱۲ اسفند ۱۳۸۴, ۶:۵۲ ب.ظ
توسط Mahdi1944
اسمبلي چيست ؟
زبانهاي برنامه نويسي كامپيوتر عموما به دو دسته زبانهاي سطح بالا و زبانهاي سطح پايين تقسيم ميشوند . برخي اين زبانها را به سه دسته تقسيم بندي كرده اند . زبانهاي سطح بالا و زبانهاي سطح پايين و زبانهاي سطح مياني . زبان برنامه نويسي اسمبلي جز زبانهاي سطح پايين است .
زبان سطح پايين به زباني گفته ميشود كه از لحاض ساختاري و ترجمه بسيار به زبان ماشين نزديك است . يعني قابليت فهم ان براي ماشين بهتر و راحتتر است . اما زبانهاي سطح بالا با كاربر رابطه بهتري دارند و كاربر يا برنامه نويس با اين زبان راحتتر ارتباط برقرار ميكند .
در زبان اسمبلي به سبب پايين بودن سطح ان ويژگيهايي نهفته است كه در هيچ يك از زبانهاي ديگر اين ويژگيها را نميتوان يافت : يكي از ويژگيهاي مهم اين زبان باز گذاشتن دست كاربر در كنترل سخت افزار بويژه CPU است . در واقع كاربر ميتواند با جز به جز پردازشگر و سخت افزار كامپيوتر ارتباط برقرار كند . بنابراين سرعت اينگونه برنامه ها نسبت به زبانهاي سطح بالا بسيار بالاتر است .
البته اين زبان داراي مشكلاتي نيز هست . كه از جمله مهمترين انها زياد بودن تعداد دستوراتي است كه كاربر بايد براي انجام عملي خاص از انها استفاده كند .
برنامه نويس براي برنامه نويسي بايد بر ارشيتكت ساخت CPU ‌مسلط باشد .
سورس اين برنامه ها اصولا خطوط زيادي دارد .
اين برنامه ها بسته به ماشين عمل ميكنند . يعني اگر ساختار اصلي ماشين تغيير كند . اين برنامه ها قابليت اجرا ندارند .
اسمبلر چيست ؟
براي تبديل زبان اسمبلي به زبان ماشين بايد از اين مترجم استفاده كرد . در واقع زبان اسمبلي از طريق اسمبلر به زبان ماشين كه صفر و يك است ترجمه ميشود .
هر خط از زبان اسمبلي معادل يك خط است در زبان ماشين . اين ويژگي خاص دستورات اسمبلي است و در زبانها سطح بالا چنين اتفاقي نمي افتد .
نحوه اسمبل شدن برنامه را در شكل زير ميبينيد :
.تصویر
براي اسمبل كردن يك برنامه توسط اسمبلي بايد به يك اسمبلر دسترسي داشت . كه اين كار را ميتوان توسط يك نرم افزار ويژه انجام داد كه عموما از اسمبلرهاي TASM ‌يا MASM استفاده ميكنند . كه اولي محصول شركت turbo و دومي محصول مايكروسافت است . كه نسخه جديد MASM نرم افزاري است به نام ML ‌كه كار كردن با ان نسبت به دو نرم افزار بالايي بسيار ساده تر است .
با استفاده از TASM ‌يا MASM سورس برنامه اي كه در فايلي با پسوند asm نوشته ايد را به يك فايل obj تبديل ميكنيد . سپس با يك لينكر TLINK ميتوانيد فايل را به فايل اجرايي تسوط كامپيوتر تبديل كنيد كه پسوند exe دارد .
براي نوشتن سورس برنامه كافيست يك ويرايشگر متن داشته باشيد كه تمامي كامپيوتر ها چنين چيزي را اصولا دارند . اگر از سيتسم عامل ويندوز استفاده ميكنيد ميتوانيد از notepad استفاده كنيد اگر از word استفاده ميكنيد يادتان باشد كه تغييرات اتوماتيك انرا براي تصحيح كلمات از كار بياندازيد . پس از انكه سورس برنامه را نوشتيد كافيست انرا با پسوند asm ذخيره كنيد براي اينكار از منوي file ميتوانيد گزينه save as ‌را انتخاب كنيد و نام فايل را با پسوند asm در دو جفت كوتيشن قرار ميدهيد :
“parsx.asm” سپس به پرامپت داس ميرويد .
براي رفتن به محيط داس اگر از سيستم عامل win98 ‌ و نسخه هاي 9X استفاده ميكنيد كافيست در منوي استارت گزينه run را انتخاب كنيد و سپس بنويسيد command و اگر از ويندوزهاي با نسخه بالاتر استفاده ميكنيد ميتوانيد در منوي run بنويسيد cmd و ازانجا به محيط داس برويد و به ادرسي كه اسمبلر شما و فايل asm شما قرار دارد برويد . براي رفتن به اين مسير ها بايد كمي بر داس مسلط باشيد .
اما براي تغيير دايركتوري بدانيد كه ميزنيد cd namefolder و براي بيرون رفتن از ان ميزنيد cd\ و براي تغيير درايو نام درايو را بهمراه دو نقطه مينويسيد : c: به همين سادگي .
اگر از نرم افزار MASM استفاده ميكنيد . كافيست تايپ كنيد MASM ‌و سپس نام فايل سورس را بنويسيد و ترتيب را ادامه دهيد تا فايل obj ‌شما ساخته شود . سپس LINK ‌را مينويسيد و نام فايلي كه ساخته ايد و پسوند obj ‌بان اختصاص داده شده است را مينويسيد . مراتب را ادام ميدهيد .
اگر از ml استفاده ميكنيد . كافيست نام فايل asm ‌را جلوي ml بنويسيد . يعني مينويسيد ml parsx.asm و سپس برنامه شما به exe تبديل ميشود .
براي استفاده از turbo assembler هم كافيست نام فايل را جلوي tasm بنويسيد تا obj شما ساخته شود و سپس با tlink نام فايل با پسوند obj فايل exe رابسازيد .
tasm parsx.asm
tlink parsx.obj

و بدين ترتيب فايل شما ساخته ميشود .
البته روش ديگري براي ساخت فايلهاي اسمبلي نيز وجود دارد . كه داراي محدوديتهاي زيادي است . كافيست در اعلان داس در هر مسيري كه هستيد تايپ كنيد debug تا وارد محيط debug ‌شويد .
براي ورود دستورات اسمبلي كليد a ‌را ميزنيد و enter ميزنيد و براي خروج از محيط دستورات كافيست بدون نوشتن چيزي دكمه اينتر را بزنيد . براي خروج از محيط ديباگ نيز كافيست دكمه q را بزنيد و اينتر را بعد از ان بزنيد . و براي اجراي دستورات g را بزنيد . كه كار كردن با اين محيط اموزش ويژه اي را ميطلبد .
[External Link Removed for Guests]

ارسال شده: شنبه ۲ اردیبهشت ۱۳۸۵, ۱:۰۲ ق.ظ
توسط Elahe
اسمبلي واقعا سخته؟
من cpu centrino هست و واقعا نمي شه برنامه نوشت باهاش
اسمبلي واقعا برنامه داقونيه مخصوصا واسه من که هفته يک برنامه بايد تحويل بدم
کسي مي تونونه تو برنامه نويسي بهم کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ :sad:

ارسال شده: شنبه ۲ اردیبهشت ۱۳۸۵, ۲:۳۷ ق.ظ
توسط Mahdi1944
elahe,
به نظر من هنوز هم قلب برنامه نويسي با اسمبلي مي‌تپه، ممکنه در حالت عادي شما با کدهاي نزديک به CPU کاري نداشته باشيد اما قدرت اين اسمبلي رو قطعا کساني که انجنين‌هاي گرافيکي مي‌سازند و يا کرنل نويسان سيستم عامل و همينطور جايي که ساليانه ميليارها دلار به خاطر استفاده از اسمبلي و کد نويسي با اون به جاي C , C++ صرفه جويي مي‌کنند يعني برنامه نويسي کنترلهاي سويچهاي مخابراتي به خوبي ارزش اون رو مي‌دونند (سرعت اجراي برنامه‌ها و همينطور نياز به کمترين منابع سيستمي از خصوصيات منحصر به فرد اسمبلي هست که در هيچ زباني حتي C++ هم به اين قدرت نخواهيد يافت)
در مورد برنامه نويسي با اون ههم حق باشماست کدهاي نسبتا سختي داره و چون دقيقا در محيط CPU کار ميکنه براي کارهاي ساده بايد برنامه‌هاي طولاني نوشت، اما به شما پيشنهاد مي‌کنم هر طور که شده خودتون برنامه رو بنويسيد، يعني تنها راه يادگيري واقعي اون
اگر جايي مشکلي داريد هم اعلام کنيد تا اگر بتونم کمکتون کنم (اگر بتونم البته :o )

ارسال شده: شنبه ۲ اردیبهشت ۱۳۸۵, ۲:۴۷ ق.ظ
توسط Reibon2002
مهدي جان ممنون ... من برنامه نويسي کار نکردم ولي خيلي دوست داشتم در مورد اسمبلي اطلاعات کسب کنم ... خيلي کامل توضيح دادي !!! :smile: :)

ارسال شده: شنبه ۲ اردیبهشت ۱۳۸۵, ۳:۰۳ ب.ظ
توسط Elahe
مرسي اقا mehdi1944
واقعا ممنونم :smile:

ارسال شده: شنبه ۳۰ اردیبهشت ۱۳۸۵, ۲:۳۲ ق.ظ
توسط Elahe
Mahdi1944,

برنامه اسمبلی که بتونه یک عبارت infix رو به postfix تبدیل کنه رو اگه میتونین می خواستم؟؟مرسی :o o

ارسال شده: شنبه ۳۰ اردیبهشت ۱۳۸۵, ۲:۵۶ ق.ظ
توسط Mahdi1944
elahe جان
اين رو از ارشيو خودم پيدا کردم
اميدوارم به کارتون بياد
Please Login or Register to see this code

ارسال شده: شنبه ۳۰ اردیبهشت ۱۳۸۵, ۳:۴۳ ق.ظ
توسط Elahe
Mahdi1944,
مرسی واقعا :-)

خیلی حرفه ای هست استاد سریعا می فهمه که... :o

ارسال شده: جمعه ۱۲ خرداد ۱۳۸۵, ۱۰:۰۲ ق.ظ
توسط Elahe
Mahdi1944, سلام اگه زحمتي نيست برنامه اي مي خوام که جذر يک عدد هزار رقمي را بگيره

ارسال شده: چهارشنبه ۱۷ خرداد ۱۳۸۵, ۲:۴۳ ب.ظ
توسط Elahe
Mahdi1944, اين برنامه با اسمبلي 6.11 کار ميکنه؟

ارسال شده: چهارشنبه ۱۷ خرداد ۱۳۸۵, ۳:۱۲ ب.ظ
توسط Nokia N93
سلام

آقا مهدي واقعا ازت ممنونم .

در ضمن آقا مهدي اگه بتوني يک سري از اکشن اسکريپ هاي فلش ام ايکس رو در اختارم بگذاري ازت ممنون مي شم.

با تشکر :grin: :)

ارسال شده: چهارشنبه ۱۷ خرداد ۱۳۸۵, ۶:۳۳ ب.ظ
توسط Mahdi1944
elahe,
كدوم برنامه؟
اين برنامه براي اجرا stdlib رو فراخواني مي‌كنه، هر كامپايلري كه اين فايل رو داشته باشه بله
درخواتس دوم شما رو نديده بودم، ببخشيد، در صورتي كه هنوز نياز داريد اعلام كنيد تا چيزي پيدا كنم :-o
Nokia N93,
درخواست‌ها رو در بخش مخصوص به خودش ارسال كنيد (البته بده به فلش آشنايي بسيار محدودي دارم، اما حتما دوستاني كه در اين رشته فعال هستند شما رو راهنمايي خواهند كرد :-) )