# برنامه نویسی سطح پایین > برنامه نویسی اسمبلی خانواده x86 > مبتدی: تفریق دودویی

## mr-adler

سلام دوستان عزیز
شب همگی خوش و مهتابی :لبخند: 
در واقع میخواستم طرز تفریق 1 از صفر رو یاد بگیرم.اگه ممکنه این مثال رو حل کنید:
10010
1001
این دوعدد بالا رو منهای هم کنید و جواب رو بنویسید.
در یکی از تاپیکا خوندم دوستمون نوشته بودن:



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


متوجه نمیشم چطوری از رقم بعدی قرض میگیریم. :متفکر: 
مثلا در مثال باید طبعا اگه قرض میگرفت باید اولین عدد جواب میشد صفر.و دومین عدد جواب چون عدد یک رو به ستون اول انتقال دادیم میشد 0.یعنی باید جواب به شکل زیر در میومد:
0000(که طبیعتا غلطه!)
نمیدونم متوجه منظورم شدید یا نه اما امیدوارم متوجه منظورم شده باشید... :لبخند: 

ممنونم..

----------


## امید خطیبی

با سلام خدمت دوست عزیز
جواب تفریق شما: 1001
حالا چگونه جواب این شد؟
جواب شما این است که زمانی که شما 10=1+1 می شود و زمانی که تفریق هم می کنید باید همین عمل را برعکس انجام بدهید شما در اصل 1 را نباید جابجا کنید چون این 1 وزن دارد در اصل 10=2 در اسمبلی می باشد بنابر این زمانی که ما 2 تا 1یش رو بر می داریم میشه 1. شما زمانی که 1 رو از صفر کم می کنین 1 قبل از صفر 0 میشود و صفر جلوی 1 مساوی با 10 یا همان 2 میشود و شما 1 را از 10 کم کرده و  جواب شما 1 میشود و جواب را بدست می اورید.
باز اگر نفهمیدین به من بگویید تا راهنمایی کنم.

----------


## mr-adler

سلام
بابت راهنماییتون ممنونم....
متاسفانه اصلا متوجه نشدم شما چطوری جواب رو بدست اوردید.خیلی خوب و مفهومی گفتید اما متاسفانه برای من قابل درک نیست.
فقط این رو متوجه شدم که وقتی صفر منهای یک میشه در واقع یعنی یک رو از عدد 2 کم کردیم و جواب میشه یک . حالا متوجه نمیشم این کار چه تاثیری روی ستون بعدی(در تفریق)میزاره؟
منظورم اینه که وقتی عمل 1+1 صورت میگرفت جواب صفر میشد و عدد یک به ستون بعدی میرفت تا در محاسبات شرکت کنه.اما اینجا چه اتفاقی میفته؟
در ضمن شما گفتید:



> شما در اصل 1 را نباید جابجا کنید چون این 1 وزن دارد


من متوجه نمیشم در همین عمل 1+1 مگه ما یک رو به ستون بعد انتقال ندادیم؟(همین عمل رو در جمع در مبنای 10 هم انجام میدیم یعنی وقتی در جمع عددی از مبنا بالاتر بره دهگان را به ستون بعدی منتقل میکنیم.)

(((اگه دیر به دیر به تاپیک سر میزنم خیلی خیلی شرمنده ام سرم واقعا شلوغه و حسابی گرفتارم))))


باز هم تشکر میکنم.ایشالا عمری باقی باشه وقت بیشتری رو اسمبلی خواهم گذاشت....

----------


## majid1605

دوستمون توضیحات کاملی دادند منم واستون به صورت تصویری میزارم.
فقط یاتون باشه توی 16 بیتی هر یدونه قرض دادن 16 تا حساب میشه توی 8 بیتی 8 تا 
توی 2 بیتی هر یدونه قرض گرفت دو حساب میشه

----------


## mr-adler

سلام
دقیقا متوجه شدم...
متشکرم بابت توضیحاتتون و عکس ضمیمه....
از اقای خطیبی هم تشکر ویژه دارم. هر مدت یکبار نوشتتون رو خواهم خوند تا نکات جدید رو یاد بگیرم.
در واقع تفریق دودویی مثل ده دهی بود با تفاوت این که در اونجا موقع انتقال یک 10 منتقل میشد و اینجا2 .یعنی همون عدد مبنا....


 :قلب:

----------


## فروزان علوی

چرا عکس رو باز نمیکنه؟

----------


## hushaa

سلام 
ممنون از توضيحات دوستان.
 من مثال بالا رازمتوجه شدم اما در مورد مثال زير نمى توانم متوجه شوم كه چطور قرض مى گيريم ، اگر ممكن است مثال ١٠١-١٠٠٠٠را هم تصويرى انجام دهيد.

----------


## the king

> سلام 
> ممنون از توضيحات دوستان.
>  من مثال بالا رازمتوجه شدم اما در مورد مثال زير نمى توانم متوجه شوم كه چطور قرض مى گيريم ، اگر ممكن است مثال ١٠١-١٠٠٠٠را هم تصويرى انجام دهيد.


به تصویر مراجعه کنید :
subtract.png

----------

