View Full Version : تفریق دو عدد
r_s1389@yahoo.com
چهارشنبه 24 خرداد 1391, 09:57 صبح
سلام به همه
من یک عدد در ثبات ax دارم که وقتی یک عدد را از دیگری کم کردم ریخته شده در ثبات ax
12-20=-8 که در ثباتم این عدد وجود داره fff8 حالا من چطوری -8 را چاپ کنم
MostafaMohammadi
چهارشنبه 24 خرداد 1391, 12:26 عصر
یه ترفند اینه که وقتی می دونی عدد منفیه، اول یه کاراکتر "-" چاپ کن بعد عدد رو با استفاده از دستور NEG به صورت مثبت دربیاری و چاپ اش کنی.
r_s1389@yahoo.com
چهارشنبه 24 خرداد 1391, 12:55 عصر
خوب درسته اما یک مشکل دیگه اونم این که اگه عدد منفی اومد ار دستور neg استفاده کنم و اگر نیومد استفاده نکنم
خوب حالا چطوری بررسی کنم ببینم عدد منفی است یا نه
ssbostan
چهارشنبه 24 خرداد 1391, 13:13 عصر
با سلام؛
يك توضيح كلي در مورد اعداد منفي ميدم، كد نويسي با خودتون...
براي محاسبه اعداد منفي ابتدا بايد ببينيد اعداد منفي شما در چه بازه اي قرار دارند.
1- اعداد يك بايتي
2- اعداد يك كلمه اي
و...
با فرض اينكه عدد يك بايتي و علامت دار باشه، يعني از 8 بيت، 1 بيت به عنوان بيت علامت و 7 بيت ديگر به عنوان عدد در نظر گرفته بشه، بازه شما از عدد -128 تا +127 خواهد بود.
با فرض اينكه عدد يك كلمه اي و علامت دار باشه، يعني از 16 بيت، 1 بيت به عنوان بيت علامت و 15 بيت ديگر به عنوان عدد در نظر گرفته بشه، بازه شما از عدد -32768 تا +32767 خواهد بود.
حالا فرض ميكنيم شما ميخواي يك بازه از اعداد علامت دار يك كلمه اي ايجاد كني و به عنوان مثال عدد -1 رو ميخواي چاپ كني.
با دستور mov عدد منفي -1 رو در يكي از ثبات ها ذخيره ميكني و اين درحاليست كه عدد 65535 در اين ثبات ذخيره شده چراكه هنوز sign flag يك نشده كه اين عدد به عنوان عدد منفي در نظر گرفته بشه.
با مشحص نشدن پرچم علامت عدد -1 ذخيره شده همان 65535 هست.
حالا مقدار ثبات رو با صفر xor ميكنيد تا sign flag يك بشه.
همانطور كه گفتم بازه اعداد ما از -32768 تا 32767 هست با انجام عمليات xor دو حالت براي عدد موجود در ثبات پيش مياد:
1- اگر عدد از 0 تا 32767 باشد با انجام xor، پرچم علامت صفر ميشود يعني عدد مثبت است.
2- اگر عدد از 32768 تا 65535 باشد، با انجام xor، پرچم علامت يك ميشود يعني عدد منفي است.
حالا با تشخيص علامت، شما به راحتي ميتونيد به قسمتي از برنامه پرش كنيد كه به صورت زير پيدا سازي شده:
كد در صورت يك بودن پرچم علامت:
1- در خانه اول رشته كاراكتر - رو ذخيره مي كنيد.
2- عدد درون ثبات رو با دستور neg به متمم دوم تبديل ميكنيد.
3- عدد بدست آمده رو به رشته تبديل كرده و در نهايت چاپ ميكنيد.
كد در صورت صفر بودن پرچم علامت:
1- در خانه اول رشته كاراكتر + رو ذخيره مي كنيد.
2- عدد رو به رشته تبديل ميكنيد و در نهايت چاپ ميكنيد.
موفق باشيد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.