PDA

View Full Version : راهنمایی درباره ی عدد علامتدار



vistacali
سه شنبه 16 اسفند 1390, 09:43 صبح
سلم دوستان من یک برنامه نوشن به زبان اسمبلی که نمیدونم چرا با دست حساب میکنم یک پ چیزی میشه ولی وقتی با اسمبل حساب میکنم یک چیز دیگه میشه

تکه کد من اینه بخونید میگم کجاش مشکل هست


mov ax,-20000
mov bx,32000
add ax,bx
sub ax,bx


همه اعداد در مبنای 10 هستن حالا اول باید عددها تبدیل به مبنای 16 بشن که این میشه جواب هر کدومشون
ax=B1E0
BX=7D00
حالا میدونم که عدد اولی منفی بوده برای همین اول مثبت عدد رو در مبنای 16 حساب کردم بعد از اون مکمل 2 گرفتم .

حالا وقتی جمع میکنیم که باید بشه
add ax,bx=2EE0
تا اینجا رو کامپیوتر درست میگه حالا اینجا مقدار جدید داده به ax وباید 2EE0رو از 7D00کم کنه حالا مشکل همینجاست من میام از عدد دومی مکمل میگیرم چون قائده کامپیوتر اینه که تفریق رو به کمک جمع انجام میده یعنی عدد دوم باید بشه 9000 و با 2EE0جمع بشه و جواب بشه BEE0 ولی وقتی با امولاتور محاسبه میکنم جواب رو میده B1E0 کجای حساب دستی من اشتباه است ؟ در ضمن من دیدم که sing flage رو 1 میکنه یعنی نتیجه عددی منفی هست ولی من نمیفهمم چرا اینطور شده ممنون میشم راهنمایی کنید :ناراحت:

vistacali
سه شنبه 16 اسفند 1390, 14:25 عصر
کسی پیدا نمیشه جواب ما رو بده

xman_1365_x
سه شنبه 16 اسفند 1390, 19:02 عصر
شما صبح پیام گذاشتین و انتظار دارین تا ظهر جواب بدن ؟ کمی صبر کنید! و نیازی به این گونه پست ها نیست
در جواب سوالتون،شما در مرحله مکمل 2 آخر که 9000 بدست آوردین باید 8300h بدست بیارین که اشتباه بدست آوردین
جمع اول
-20000+32000=12000
جمع دوم با مکمل = تفریق
2ee0+8300=b1e0 = 12000-32000=-20000
جواب هم میشه 20000- برای همینsf=1 میباشد

vistacali
سه شنبه 16 اسفند 1390, 21:27 عصر
ببخشید ولی تازه فهمیدم چه سوتی بزرگی دادم وقتی دارم برای بار دوم مکمل میگیرم میام d رو از 15 کم میکنم و مقدارش رو به یک جمع میکنم این میشه 3 جواب ولی من حواسم نبوده میام 1 رو میبرم روی سر رقم بعدی در صورتی که رقم نباید میرفت اونور بازم ببخشید ممنون که راهنمایی کردید اگر عجله داشتم برای اینه که دارم داکیومنت اماده میکنم همش کال بود و فقط توی این مونده بودم هر چی از صبح تا حالا حساب کردم جواب اشتباه بود ولی ممنون دمت گرم داداش :قلب: