هر كس براي آن كه بتواند از آنچه در ذهن به عنوان يك نرمافزار دارد طراحي خوبيداشته باشد، بهتر است كه درك صحيح و نسبتا كاملي از كاركرد رايانه و منطق آن داشتهباشد و با اجزاي سيستم و منابع مورد نياز و نيز منابعي كه در اختيار است آشناباشد.
پردازنده پردازنده كه در واقع مهمترين بخش واصليترين منبع سختافزاري سيستم است، به واحد پردازش مركزي يا CPU معروف است. درون CPU دو بخش عمده وجود دارد كه به واحد محاسبه و منطق و واحد كنترل معروفاست. همانطور كه از نام اين واحدها مشخص است، تمامي كارهاي محاسباتي در واحدمحاسبه و منطق انجام ميگيرد و واحد كنترل، بخشي است كه به واحد محاسبه و منطقنظارت دارد و امور آن را كنترل ميكند. در كنار اين 2 واحد، حافظههاي كوچك و بسيارسريعي به نام ثبات (register) قرار دارند كه كار نگهداري موقت دادهها را به عهدهدارند. هر پردازنده تعداد مشخص و انواع معيني ثبات دارد كه وظيفه هر يك از آنهامشخص است. اندازه ثباتها نيز به نوع CPU بستگي دارد. به عنوان مثال، پردازندههايقديمي 8086, 8088,80286 پردازندههايي بودند كه هم اندازه ثباتها و هم اندازهگذرگاههاي دروني آنها 16 بيت بود. پردازندههاي 80386 و 80486 و پس از آنپردازندههاي پنتيوم، ساختار 32بيتي دارند. پردازندههاي 64بيتي نيز كه چند سالياست طراحي شدهاند گوياي اندازه ثباتها و گذرگاههاي خود هستند. در مورد ثباتهاكمي جلوتر، بيشتر صحبت خواهيم كرد. در كنار ثباتها حافظههاي ديگري هستند كه بهپرچم (Flag) معروف هستند. هر Flag يك بيت است كه ميتواند مقدار صفر يا يك رابپذيرد. البته پرچمها هم به صورت يك ثبات درون CPU قرار دارند، اما مانندثباتها از آنها استفاده نميشود. از ثباتها معمولا به صورت واحدهاي حافظه 8، 16و 32 بيتي استفاده ميشود، اما پرچمها به صورت بيت به بيت مورد استفاده قرارميگيرند.
پرچمها در صورتي كه از زبان اسمبلي استفادهكنيد، در ساخت برنامهها و نوشتن رابطهها، گاهي لازم ميشود كه حالتي بررسي شود كهدر صورت رخ دادن آن يك كار بخصوص و در غير اينصورت كار ديگر انجام شود. صفر يا يكبودن يك بيت ميتواند گوياي آن باشد كه آن حالت يا وضعيت رخ داده است يا خير. بهعنوان مثال فرض كنيد ميخواهيم محتواي دو ثبات را با هم مقايسه كنيم. بعد از آنكهعمل مقايسه انجام شد برابر بودن محتواي آن دو ثبات از بررسي يك بيت به نام Zero Flag انجام ميشود. به اين معني كه اگر آن بيت 1 باشد به آن معناست كه محتواي دوثبات با هم برابر بودهاند و اگر صفر باشد به معناي نابرابر بودن دو ثبات خواهدبود. پرچمهاي ديگري نيز وجود دارند كه هر كدام به منظور خاصي به كار گرفتهميشوند و معناي بخصوصي نيز دارند. گاهي نيز بررسي دو يا چند پرچم به طور همزمانميتواند ما را به يك نتيجه خاص برسانند. اغلب براي برنامهنويسان اين سوال مطرحميشود كه چرا اين بيتها بيت پرچم ناميده شدهاند. شايد دانستن علت نامگذاري اينبيتها به پرچم، شخص را به درك بهتري از كاربرد آنها برساند. هنگامي كه يك قله توسطشخص يا يك گروه كوهنورد فتح ميشود پرچمي در قله قرار داده ميشود. با قرار دادنآن پرچم، اگر اشخاص ديگري به آنجا راه بيابند متوجه ميشوند كه اين قله قبلا توسطگروه ديگري فتح شده است و اگر پرچمي وجود نداشت ميتوانند نتيجه بگيرند كه خوداولين كساني هستند كه قله را فتح ميكنند. با مفهومي مشابه، پرچم را ميتوان برايرخ دادن يا ندادن يك وضعيت در رايانه به كار برد.
وظايفپردازنده به طور كلي ميتوان وظايف پردازنده را در 3 عمل خلاصهكرد:
1 - واكشي
2 - رمزگشايي
3 - اجرا
واكشي عمل خواندن يكدستورالعمل از برنامه و قرار دادن آن در صف برنامه است. پس از اينكه اين كارانجام شد عمل رمزگشايي صورت ميگيرد. مفهوم رمزگشايي در اينجا با عمل رمزگشايي درامنيت و ارتباطات متفاوت است. رمزگشايي در امنيت معادل كلمه decrypt است، امادر اينجا معادل كلمه decode است كه به عمل ترجمه آدرس و واكشي عملوندهاي آن ازحافظه است. پس از اينكه عمل رمزگشايي نيز انجام شد نوبت به اجراي دستورالعملميرسد. به طور كلي اجرا در اينجا معناي انجام محاسبات مورد نياز ذخيره در ثباتهاو حافظه اصلي و تغيير وضعيت پرچمها است.
حافظه بدونشك هم براي ذخيرهسازي دائمي دادهها و هم براي نگهداري موقت آنها به حافظه نيازداريم. اما در ذخيرهسازي دادهها 2 مساله اهميت دارد. يكي حجم دادهاي است كهميخواهيم ذخيره كنيم و ديگري زمان نياز مجدد و رجوع به داده ذخيره شدهاست. ديسك سخت پرظرفيتترين، ارزانترين و در عينحال كندترين رسانه ذخيره دادهاست. حافظه اصلي يا RAM از ديسك سخت سريعتر و بهخاطر گرانتر بودن از آن،ظرفيت كمتري دارد. ثباتها نيز حافظههايي هستند كه فوقالعاده سريع و گرانقيمتهستند و در نتيجه ظرفيت آنها محدود و تعداد آنها براي هر پردازنده مشخص است. يكبرنامهنويس اسمبلي بايد بداند كه چه زمان بايد داده روي ديسك سخت يا حافظه اصلينوشته شود و چه زمان براي نگهداري داده از ثباتها استفاده كند. به عنوان مثالبراي محاسبات سريع و نگهداري نتايج مياني محاسبات بهتر است از ثباتها، براينگهداري نتايج و ثبت دادههاي بزرگتر از حافظه اصلي و براي ذخيرهسازي دائمياطلاعات از ديسك سخت استفاده شود. البته براي اين امور محدوديتي وجود ندارد، امااستفاده نادرست و نابجا از هر كدام از اين حافظهها ميتواند كارايي و سرعت برنامهرا به شدت تحت تاثير قرار دهد. به عنوان مثال، اگر براي نگهداري نتايج ميانيمحاسبات از ديسك سخت استفاده شود، خواندن و نوشتن روي ديسك سخت هزاران برابر بيشتراز آن محاسبات به طول خواهد انجاميد.
ثباتها ثباتهايداخل پردازنده به چند نوع تقسيمبندي ميشوند. يك سري از آنها به ثباتهاي عموميمعروف هستند كه از آنها براي ذخيرهسازي موقت دادهها در هر نوع پردازش و محاسباتياستفاده ميشود و در به كارگيري آنها محدوديت خاصي وجود ندارد. اين ثباتها درپردازندههاي 16 بيتي AX ،BX،CX،DX نام دارند. ثباتهايي نيز وجود دارند كه بهثباتهاي كنترلي معروفند. ثبات پرچم و ثباتي به نام IP از اين دسته هستند. ثبات IP ياInstruction pointer حاوي آدرس محلي است كه براي تعيين آدرس دستورالعمل بعديبه كار ميرود. ثباتهاي ديگري نيز به نام سگمنت ( (segmentو انديس (index) وجوددارند كه توضيح كاربردهاي آنها بحث و زمان بيشتري ميطلبد و ما قصد نداريم در اينجابه تمام جزئيات بپردازيم.