# برنامه نویسی سطح پایین > برنامه نویسی اسمبلی خانواده x86 >  جمع دو عدد در مبناي 8

## programer1389

ميخواستم بدونم رقم نقلي يعني چي؟
تو درس زبان ماشين من اين اصطلاح رو اونجا ديدم كه ميخواست دو عدد 175 و 164.62 كه هردو در مبناي 8 هستن رو از هم كم كنه و اومده بود مبناي كاهش يافته عدد دوم( يعني 164.62 )رو حساب كرده بود كه شده بود 613.15 و سپس اون رو با عدد اول جمع كرده بود و در نهايت با عدد يك در پايين ترين مرتبه جمع كرده بود 
   175.00    
+
  613.15    
----------------
   010.15    
تو اون جمع بالا چون 5+3 ميشه 8 اما اين عدد درمبناي هشت وجود نداره اومده يك صفر گزاشته و عدد ستون بعدي رو با يك جمع كرده ايا اين همون رقم نقلي ميشه

----------


## programer1389

اون 6+1 اخري هم همين وضعيت رو پيدا ميكنه يعني ميشه 6+1+1 كه ميشه هشت كه تو مبناي هشت اين عدد نيست پس براي تبديل اون از مبناي 10 به مبناي هشت ميبريمش كه ميشه يك صفر در مبناي هشت كه از اون يك صرف نظر ميكنيم يعني بايد جواب ميشد 1010.15 كه از اون يك اخري صرف نظر ميكنيم اون عدد اخري ميشه رقم نقلي خودم فهميدم :تشویق:

----------


## xman_1365_x

> ميخواستم بدونم رقم نقلي يعني چي؟


دو دفعه حرفام موقع ارسال از بین رفت واقعا حسشو ندارم اون همرو دوباره بگم :اشتباه:  پس خلاصه تر میگم
هر رقم در هر مبنا در چهار عمل اصلی میتونه کری یا بارو داشته باشه که به عدد بعدی بده یا از عدد بعدی قرض بگیره
وقتی شما در مبنای دو 0 و 1 دارین پس 1+1 کری به وجود میاد که در بازه مبنا نیست و به عدد بعدی میدیم و به همین صورت در تفریق 1-0 که از عدد بعدی قرض میگیریم بارو داریم و...



> تو اون جمع بالا چون 5+3 ميشه 8 اما اين عدد درمبناي هشت وجود نداره اومده يك صفر گزاشته و عدد ستون بعدي رو با يك جمع كرده ايا اين همون رقم نقلي ميشه


همونطور که گفتم در هر رقم میتونیم کری یا بارو داشته باشیم ، همونطور در عدد آخری که ذکر کردین که حاصل میشه 1010.15 اما چون شما r-1 در تقریق بدست آورین باید کری رو با حاصل جمع کنید 010.16 



> اون 6+1 اخري هم همين وضعيت رو پيدا ميكنه يعني ميشه 6+1+1 كه ميشه هشت كه تو مبناي هشت اين عدد نيست پس براي تبديل اون از مبناي 10 به مبناي هشت ميبريمش كه ميشه يك صفر در مبناي هشت كه از اون يك صرف نظر ميكنيم يعني بايد جواب ميشد 1010.15 كه از اون يك اخري صرف نظر ميكنيم اون عدد اخري ميشه رقم نقلي خودم فهميدم


قسمت اول حرفتون نفهمیدم و نمیدونم چه ربطی به مبنای 10 و تبدیل داشت اما رقم نقلی هر رقم  میتونه داشته باشه اما در زبان ماشین برای ما آخرین بیت مهم هست و ثباتی هم برای نشان دادن وضعیتش به کار رفته که برنامه نویس متوجه باشه و محاسباتش اشتباه نشه
اینبار اول اینارو بردم به کلیپ برد :لبخند گشاده!: 
موفق باشی

----------


## amirfz

:متفکر:  :متفکر:  :متفکر: وقتی محتوای چندین خانه از حافظه را با هم جمع نماییم ممکن است سرریز اتفاق بیفتد لطفا قطعه کدی جهت رفع سرریز می خوام؟

----------


## xman_1365_x

> وقتی محتوای چندین خانه از حافظه را با هم جمع نماییم ممکن است سرریز اتفاق بیفتد لطفا قطعه کدی جهت رفع سرریز می خوام؟


این یک چیز عادی هست شما به عنوان برنامه نویس کنترلش میکنید مثلا اگر دو عدد 16 بیتی ضرب کنید در بدترین حالت(بزرگ باشن اعداد) نیاز به 32 بیت برای نگهداری نتیجه داریم . شما هم حافظه دابل ورد تعریف میکنی و نتیجه نگه میداری برای جمع هم دستور  add و adc برای اینکار هست که موقعی که فکر میکنید کری رخ داده یکی به قسمت در نظر گرفته شده بعد اضافه میکنی (بایت های بعد در نظر گرفته شده)

----------

