پیشنیازها:
تو این بخش میخوام خیلی سریع چیزایی که برای یاد گرفتن اسمبلی نیاز دارید رو براتون بگم.
اول خیلی سریع مروری بر این میکنیم که کامپیوتر چطوری با داده ها برخورد میکنه؟
کامپیوتر یک سیستم مداری هست. توی این سیستم قطعات زیادی به کار رفته، ولی به طور خلاصه کل سیستم بر مبنای یک سری سویچ کار میکنه. حافظه ها یک سری ترانزیستور مجتمع هستند و ترانزیستورا سویچ الکترونیکی هستن، یا برق رو عبور میدند یا نمیدند. به دلیل همین محدودیت و البته یک سری محاسن دیگه سیستم دودویی (Binary) اساس کار کامپیوتر در نظر گرفته شد. ما با این سیستم تو اسمبلی خیلی کار داریم، پس مجبوریم یه کم توضیحش بدیم.
سیستم اعداد:
سیستمی که ما انسان ها در فعالیت های روزانه ازش استفاده میکنیم، سیستم دهدهی (Decimal) هست. داستان از انگشتان دستتون شروع میشه!! اونایی که در ابتدا شرو به شمارش کردند با کمک دستاشون برای شمردن تا عدد 10 مشکلی نداشتند، ولی برای شمردن 43 ، چهار بار همه ی انگشتها رو میشمردند و به ازای هر دفعه که انگشتاشون تموم میشد یک علامت یه جا میزدند و دوباره از انگشت اول شروع میکردند. این شد پایه سیستمی که تا همین امروز ما ازش استفاده میکنیم. به این سیستم ، سیستم پایه ده (Base 10) هم میگویند.
حالا سیستم یایه دو، فکر کنید کلا دو تا انگشت داشتید!! برای شمردن 3 چه کار میکردید؟
2 تاشو میشمردید، یه علامت میزدید، و یکی دیگه براتون میموند. یکی باقیمانده رو با عدد 1 نشون میدادید، و به جای علامتی که زدید یک دانه 1 میذاشتید بغلش. عددتون نهایتا میشد 11
تبدیل از مبنای 10 به 2:
راه حل کلی برای تبدیلات از مبنای 10 به مبناهای دیگر تقسیمات متوالی هست. با یک مثال یاد بگیرید تا زود ازش رد بشیم!
49 رو میخوام تبدیل کنم به مبنای 2:

همونطور که میبینید این تقسیمات متوالی بر 2 رو باید تا جایی ادامه بدید که خارج قسمت صفر بشه، عدد نهایی باقیمانده ها از آخر به اول خواهد بود. عدد نهایی اینجا شد 110001
تعریف بیت:
به هر رقم در کل عدد، یک بیت میگویند. یک بیت میتونه صفر یا یک باشه. هر بیت دارای ارزشی هست که این ارزش از راست به چپ زیاد میشه. کم ارزشترین بیت، بیت سمت راست و پر ارزشترین بیت، بیت سمت چپ هست. ارزش اولین بیت از سمت راست 0^2 یعنی 1 هست، دومین بیت 1^2 یعنی 2، سومین بیت 2^2 یعنی 4، همینطور تا انتهای عدد.
در کامپیوتر هر 8 بیت را در یک دسته قرار میدهند و به این عدد 8 بیتی یک بایت میگویند.
تبدیل از مبنای 2 به 10:
روش کلی برای تبدیل به مبنای 10ضربهای متوالی هست، برای این کار مقدار هر بیت رو در ارزشش ضرب میکنیم و نتیجه ها را با هم جمع میکنیم:
مثلا 110001 رو میخوایم به مبنای 10 تبدیل کنیم:
49 = 32 + 16 + 1 = 5^2*1 + 4^2*1 + 3^2*0 + 2^2*0 + 1^2*0 + 0^2*1
مبناهای کمکی:
مبناهای 8 و 16 به دلیل دارا بودن خاصیتی به عنوان مبناهای کمکی استفاده میشوند.
اعداد 0 تا 15 سیستم Decimal , HexaDecimal , Binary رو به خاطر بسپارید، خیلی کارشون داریم:
Decimal , HexaDecimal , Binary
========================
0 , 0 , 0000
1 , 1 , 0001
2 , 2 , 0010
3 , 3 , 0011
4 , 4 , 0100
5 , 5 , 0101
6 , 6 , 0110
7 , 7 , 0111
8 , 8 , 1000
9 , 9 , 1001
10 , A , 1010
11 , B , 1011
12 , C , 1100
13 , D , 1101
14 , E , 1110
15 , F , 1111
خاصیت باحال مبنای 16 یا همون HexaDecimal اینه که هر 4 بیت یک عدد Binary معادل 1 بیت عدد معادل Hex اون هست. 10110101 یه عدد باینری هست. با استفاده از روشهای بالا برای تمرین ابتدا با ضربهای متوالی این عدد رو به مبنای 10 تبدیل کنید ، بعد با استفاده از تقسیمات متوالی به مبنای 16 یا همون Hex (راهنمایی: اگر باقیمانده در تقسیم مثلا 13 شد، رقم D را باید بنویسید.)
ولی بدون این کار من بهتون میگم جواب میشه B5 چون چهاربیت سمت راست معادل 5hex هست و چهاربیت سمت چپ معادل Bhex هست.