
نوشته شده توسط
badguy
مرسی فهمیدم مشکل کجاس.
ولی یه سوال : با این روش شرط اتمام حلقه چیه میشه؟؟ چون یقینا 0 نمییتونه باشه چون ممکنه باقی مانده داشته باشه و همچنین شرط بیشتر مساوی هم نمیتونه باشه چون وقتی عددمون در همون مثال قبلی به این مقدار برسه 0ffff/3 چون 0ffff=-1 هست برا همین از حلقه میزنه میاد بیرون!!!! برا این باید چکار کنیم؟؟ [ مثلا این شزطی بود که من گذاشته بودم و دلیل اینکه 0ffff/3 رو حساب نمیکردم این بود ]
وقتی با دست حساب میکنیم این مشکل وجود نداره؛ همون طور که گفتم تازه واردم من اینجا چکار کنم که برنامه به 0ffff با چشم یه عدد unsigned نگا کنه و به صورت unsigned مقایسش کنه؟؟
.
.
MOV AX,V2R4
CMP V1R4,AX
JAE START1
MOV AX,V2R3
CMP V1R3,AX
JAE START1
MOV AX,V2R2
CMP V1R2,AX
JAE START1
MOV AX,V2R1
CMP V1R1,AX
JL END
.
.
.
خوب مثال من و شما در نهایت صفر میشه چرا میگین نمیشه ؟(مجموع ارقامتون بر 3 بخشپذیره) اما اعدادی که صفر نمیشه چرا نمیشه ؟
چون بخشپذیر نیست و باقیمانده میاره،آیا باقیمانده بزرگتر از مقسوم الیه هست؟ البته باید تا زمانی انجام بشه که سمت چپ عددی نباشه اینم جواب
معلومه که روی کاغذ انجام نمیدین تا من نیام آموزش تفریق بدم
در مورد شرط هاتون از ذهنتون خارج کنید و از نوع فکر کنید برای UNSIGNED هم از دستورات شرطی مربوطه استفاده کنید
JB =JNAE=JC
JNB=JAE=JNC
JBE=JNA
JNBE=JA
به هر حال دیدین که استادتون چه سوالی بهتون داد که در نگاه اول گفتین نشدنیه،خودتون سعی کنید چون به اندازه کافی راهنمایی کردم باید بنویسید و به خطا بخورید و دیباگ کنید برای دیباگ کردن پیشنهاد میکنم از EMU8086 استفاده کنید که مقدار ثباتها و حافظه و فلگ هارو ببنید کمکتون میکنه زودتر حلش کنی
موفق باشی