View Full Version : سوال: دستور OR
persianboy1993
دوشنبه 17 آذر 1393, 17:10 عصر
با احترام در رابطه با ساختار کد روبرو راهنمایی نیاز دارم
Mov al,126
mov bl,0fh
or al,b;
راستش من از عملکرد or مطلعم ولی سر کلاس ما به چنین نتیجه ای رسیدیم میخواستم بدونم چطور ؟
OR 0111 1110
0000 1111
------------
01111111
خلاصش چرا 126 میشه 01111110 ؟
و این تکه کد که برای دستور not هستش :
mov al,1
not al
که در نهایت al میشه 256 چرا ؟
masoud.8086
دوشنبه 17 آذر 1393, 19:18 عصر
سلام
ببین وقتی از عمگر ها مثل or , adn , not ,...استفاده میکنی اینو همیشه در نظر داشته باش که این عملگر ها بیتی هستند یعنی روی هر بیت تاثیر میزاره..تو مثال خودت وقتی اومدی عملیات or رو انجام دادی رو تک تک بیتا اعمال میشه یعنی بیت اول عدد اولت با بیت اول عدد دومت or میشه و توی not هم همین طور دقت کن به مثال پایین:
مگه مقدار عدد 1 تو مبنای 2 برابر با 00000001نیست؟؟؟خوب عملیات not میگه هرجا صفر دیدی یک کن و هر جا یک دیدی صفر !!!خوب اینجا به جای هفتا صفر اول یک میزاریم و بخ جای اون یک اخری صفر که جوابش میشه 254 نه 256
00000001 =1
11111110 =254
صفر ها یک و یک ها به صفر تبدیل شدن!!!
موفق باشی.
persianboy1993
دوشنبه 17 آذر 1393, 19:32 عصر
ممنونم این نکته که رو تک تک بیت ها تاثیر میذاره واقعا راهگشا بود.فقط یه سوال مبنای این ها بر 2 هستش ؟ منظورم اینه مثلا 5 در مبنای 2 میشه 0000101 چطور 126 میشه : 01111110 ؟ من به طور کل روش تقسیم متوالی رو میدونم ولی میخواستم ببینم میشه ذهنی بگم ؟
masoud.8086
دوشنبه 17 آذر 1393, 19:44 عصر
اره تقریبا میشه ببین همیشه برای تبدیل به مبنای دو ضریبی ار 2 رو در نظر بگیر مثلا:
1 2 4 8 16 32 64 128 256 512
0 1 0 1 0 0 0 0 0 0
مثلا عدد 10 رو میخوای ببری به مبنای 2 خوب با چه عددی از مضرب 2 مشیه عدد 10 رو در مبنای 2 ساخت؟؟
معلومه دیگه 8 و 2 که جمعش میشه 10 مثل مثال بالا که مقدار بیتی که ارزش 8 و ارزش 2 داره رو مقدارشو یک کردم.حالا فرضا اگه عدد 257 رو خواسته باشی مقدار بیتی که ارزشش 256 رو یک میزاری و مقدار بیتی که ارزشش 1 که 256+1=257
موفق باشی
persianboy1993
دوشنبه 17 آذر 1393, 21:27 عصر
طبق توضیح فوق 16 میشه : 000010000 یا 12 میشه 000001100 یا 24 میشه 000011000 درسته ؟ لطفا 119 رو خودتون محاسبه کنید ببینم چطور میرید ؟
masoud.8086
دوشنبه 17 آذر 1393, 22:19 عصر
عدد 119 در مبنای 2 میشه 01110111 درسته؟؟؟
کوچکترین مضربی که تو بالا بهش میخوره چنده؟؟ 64 چون 119از 128 کوچکتره!!
خوب پس ارزش گذاری 64 زیرش یک میزاریم
119-64=55
حالا با 55 کوچکترین مضرب چند میشه ؟؟ میشه 32
پس ارزش گذاری 32 بیتشو یک میاریم
55-32=23 و همین طور ادامه میدیم
1 2 4 8 16 32 64 128
1 1 1 0 1 1 1 0
حالا هرجا که یک میبینی عدد بالاشو باهم جمع کن 64+32+16+4+2+1=119
موفق باشی..
persianboy1993
دوشنبه 17 آذر 1393, 22:44 عصر
حالا شد خیلی هم عالی ممنونم مسعود جان من مرحله به مرحله رو کاغذ رفتم برای بچه ها واضح تر باشه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.