اسمبلي - كوتاه از اسمبلي مادر همه زبانها
اسمبلي - كوتاه از اسمبلي مادر همه زبانها
اين زبان مادرهمه زبانها http://www.jamejamonline.ir/Media/im...0946056362.jpg اگر قصد داريد كه برنامهنويسي با زبان اسمبلي را آغاز كنيد و روشهاي قديمي و نزديك به زبان ماشين را براي رسيدن به هدفهاي برنامهسازي خود در پيش بگيريد، لازم است در زمينههاي مختلفي، اطلاعات كسب كنيد كه در ادامه به مهمترين آنها اشارهاي اجمالي خواهيم داشت. سيستم اعداد با اينكه با ورود به دنياي اسمبلي، از زبان ماشين و كدهاي عددي مربوط به آن فاصله گرفتهايم، اما نبايد فراموش كرد كه اسمبلي يك زبان نزديك به زبان ماشين است و زبان ماشين نيز چيزي نيست جز عدد و رقم و صفر و يك. در واقع اگر ميخواهيم در سيستم اعداد قابل فهم رايانه محاسبات و عمليات منطقي خود را انجام دهيم بايد با روشها و قوانين سيستم اعداد در مبناي 2(binary) آشنايي داشته باشيم. اعدادي كه ما در دنياي واقعي با آنها به انجام محاسبات خود ميپردازيم در مبناي 10 (decimal) هستند. يعني از ارقام صفر تا 9 تشكيل شدهاند. بنابراين علاوه بر انجام محاسبات در مبناي 2، بايد بتوانيم اعمال تبديل از مبناي 10 به 2 و برعكس را نيز انجام دهيم. زماني كه محاسبات در مبناي 2 انجام ميشود هر عدد شامل تعداد زيادي رقم خواهد بود كه تعداد اين ارقام در مبناي 2 از هر مبناي ديگري بيشتر خواهد بود. در نتيجه كار با آن كمي مشكل خواهد بود. در سيستم اعداد مبناهاي ديگري مثل مبناي 8 و 16 كه به ترتيب به آنها اكتال(octal) و هگزادسيمال (hexadecimal) گفته ميشود نيز به كار ميرود. در واقع در مبناي 8 و 16 به ترتيب هر 3 و 4 رقم مبناي 2 تنها به يك رقم تبديل ميشود و به اين ترتيب حجم ارقام نوشته شده به يكسوم و يكچهارم كاهش مييابد. پس با دانستن اعمال تبديل اين مبناها به يكديگر و انجام محاسبات مربوط به آنها ميتوان به سيستم اعداد در دنياي رايانه وارد شد. ساختمان پردازنده شما بايد با ساختمان پردازنده، تعداد و انواع ثباتها، پرچمها و ... و كاربرد هريك از آنها آشنا باشيد. هنگام برنامهنويسي معمولا يك سري قراردادها و پيشفرضها براي به كارگيري ثباتها در محاسبات وجود دارد كه بدون اطلاع از آنها، برنامهنويسي به اين زبان غيرممكن خواهد بود.منابع مورد نياز براي اجرا به هنگام ساخت يك فايل اجرايي نيازمند يك سري اعمال و رزرو كردن منابع مورد نياز براي برنامه خود خواهيد بود. در زبانهاي سطح بالا، اين امور توسط مترجم زبان به طور خودكار انجام ميشود، اما در اسمبلي، اين كار به عهده برنامهنويس است. بايد با انواع ساختمان دادههاي قابل استفاده در حافظه و طريقه كار هر كدام آشنايي داشته باشد تا بتواند در مواقع لزوم به درستي از امكانات موجود بهره گيرد.دستورالعملها هر زبان برنامهنويسي تعدادي كلمه كليدي و يك گرامر دارد. هر برنامهنويس علاوه بر اينكه بايد به اين كلمات كليدي و گرامر آشنايي كامل داشته باشد بهتر است به طريقه كار آنها نيز احاطه داشته باشد.هر چه اين آگاهيها بيشتر باشد، خلاقيت در برنامهنويسي بيشتر بروز ميكند و تفاوت برنامهنويسها و برنامههاي مختلف در همين نكات خواهد بود. به عنوان يك مثال ساده دستور mov براي عمل انتساب به كار ميرود. اگر بخواهيم مقدار ثباتAX را برابر با صفر قرار دهيم ميتوانيم از دستورQ، mov AX استفاده كنيم. اين اولين چيزي است كه براي اين كار به ذهن ميرسد. اما اگر طريقه عملكرد دستورXor را بدانيم و همچنين آگاه باشيم كه سرعت دستور Xor بيشتر از mov است، ميتوانيم براي انتساب مقدار صفر به ثبات AX از دستور AX ،Xor AX استفاده كنيم. البته هر دوي اين دستورات در مقايسه با كارهاي ما بسيار سريع هستند و اگر قرار باشد يك بار اجرا شوند، تفاوت محسوسي در سرعت برنامه نخواهيم ديد، اما تفاوت در جايي احساس ميشود كه همين دستور در يك چرخه يا loop قرار ميگيرد و قرار است هزاران بار انجام شود. در آن زمان است كه تفاوتها چشمگير و محسوس خواهد شد. وقفهها در سيستم تعدادي وقفه وجود دارد كه هر كدام كاربرد خاصي دارند. وقفه سيگنالي از دستگاه جانبي يا برنامه در حال اجراست كه عمل خاصي را درخواست ميكند. وقتي برنامه در حال اجرا، وقفهاي را دريافت ميكند، اجراي برنامه به تعويق ميافتد و كنترل اجراي برنامه به زيربرنامهاي ميرود تا به وقفه پاسخ دهد. هر وقفه زيربناي خاصي دارد كه به آن پاسخ ميدهد. بعد از اتمام كار وقفه، اجراي برنامه از همان نقطه كه قطع شده بود ادامه پيدا خواهد كرد. به عنوان مثال: تابع06H از وقفه 10Hبراي پاك كردن محتويات نمايشگر به كار ميرود. اطلاعات بسيار ديگري هستند كه براي برنامهنويسي سيستم بايد به آنها احاطه داشت. هر دانشي در مورد سيستم و كاركرد آن، به شما كمك خواهد كرد. با استفاده از كتابهاي مختلف و راهنماهاي زبان اسمبلي كه در اينترنت موجودند ميتوانيد شروع خوبي براي اين زبان داشته باشيد. روزنامه جام جم ضميمه كليك |
سلام بر دوستان.
دانه جان این توضیحات مختصر و گنگی که شما در مورد اسمبلی داده اید واقعا در مورد قدرت و توانایی های آن ظلم به حساب می آید . کارهایی که با این زبان میشه انجام داد تقریبا در هیچ زبان دیگه ای نمیتونیم مشاهده کنیم. سرعت بسیار زیاد در انجام امور، حجم ناچیز برنامه ها ، دسترسی نسبتا مستقیم به ثبات های سیستم و ...... . این زبان که برای خود من خیلی کاربرد داشته، مثلا با اون تونستم خیلی راحت یک نرم افزار برای برسی قطاع های دیسک و تغییر آنها و همچنین تغییر هدر فایلها برای حذف پسوردشان و ... و هر وقت به این زبان فکر می کنم به یاد سرنوشت خودت می افتم دانه جان. فکر می کنم بهتره که خودت اگه صلاح دونستی اونو به دیگران بگی تا شیرینی این زبان برای دیگران هم دو چندان بشه. |
ذکریا میدونی چیکار باحال دیکه ای میکنن ؟
بعضی از نرم افزار ها رو میشه با دیس اسمبلر باز کرد فایل ست اپش رو بعد دنبال شماره سریال بگردی هر کجا جامپ نات این شماره سریاله بود رو نگاه کن شماره سریالو کش میری میای بیرون البته خب الان دیگه اکثر نرم افزار های مهم باید از طریق اینترنت اکتیویت بشه اما به هر حال یه بارم که این کارو بکنی لذت خودشو داره ... فایلهای اگزه و ستاپ رو معمولا با یه نرم افزارهایی مثلا aspack کامپرس میکنن (هنوز اگزه میمونه) اونقوت دیگه اینکریپت هم میشه این دیس اسمبلرها نمیتونن به راحتی سورسش رو بکشن بیرون حالا پروژه با کی برداشتی کلک ؟ |
کورش جان اگه دوست داشتی آموزش اینکار رو هم برای بچه ها بزار تا دوستان هم این کارا رو یاد بگیرن و ازش استفاده کنن.
چون خودت تجربه ی دیس اسمبلر کردنت بیشتر از منه بهتره خودت آموزشش رو بزاری . یا اگه وقت نداری خودم بعدا این کارو بکنم. (( نکته خصوصی برای دانه: افسردگی نمیخواد عزیزم. شتره دیگه، این بار در خونه شما خوابید. حالا هر وقت با بابا و مامانت رفتین، شیرینی ما یادت نره. بازم مبارکه)) |
این چه پستی هست من سر در نیارم؟http://www.en.kolobok.us/smiles/arti...dinginwall.gif
|
اکنون ساعت 03:10 AM برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد. |
Powered by vBulletin® Version 3.8.4 Copyright , Jelsoft Enterprices مدیریت توسط کورش نعلینی
استفاده از مطالب پی سی سیتی بدون ذکر منبع هم پیگرد قانونی ندارد!! (این دیگه به انصاف خودتونه !!)
(اگر مطلبی از شما در سایت ما بدون ذکر نامتان استفاده شده مارا خبر کنید تا آنرا اصلاح کنیم)