اگر قصد داريد كه برنامهنويسي با زبان اسمبلي را آغاز كنيد و روشهاي قديمي ونزديك به زبان ماشين را براي رسيدن به هدفهاي برنامهسازي خود در پيش بگيريد، لازماست در زمينههاي مختلفي، اطلاعات كسب كنيد كه در ادامه به مهمترين آنها اشارهاياجمالي خواهيم داشت.
سيستم اعداد با اينكه با ورود بهدنياي اسمبلي، از زبان ماشين و كدهاي عددي مربوط به آن فاصله گرفتهايم، اما نبايدفراموش كرد كه اسمبلي يك زبان نزديك به زبان ماشين است و زبان ماشين نيز چيزي نيستجز عدد و رقم و صفر و يك. در واقع اگر ميخواهيم در سيستم اعداد قابل فهم رايانهمحاسبات و عمليات منطقي خود را انجام دهيم بايد با روشها و قوانين سيستم اعداد درمبناي 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 براي پاك كردن محتويات نمايشگر به كار ميرود. اطلاعات بسيارديگري هستند كه براي برنامهنويسي سيستم بايد به آنها احاطه داشت. هر دانشي در موردسيستم و كاركرد آن، به شما كمك خواهد كرد. با استفاده از كتابهاي مختلف وراهنماهاي زبان اسمبلي كه در اينترنت موجودند ميتوانيد شروع خوبي براي اين زبانداشته باشيد.