ورود

View Full Version : سوال: تشخیص بیتها



behzad24be
پنج شنبه 09 خرداد 1387, 11:17 صبح
سلام ، برای اینکه تشخیص بدیم 2 بیت از یه عدد مثلا 8 بیتی یا 16 بیتی در چه حالتی قرار دارند ، چه کاری میتونیم انجام بدیم ؟
مثلا برای فهمیدن اینکه بیتهای 4و5 یه عدد 8 بیتی 00 هست یا 01 یا 10 یا 11 .

cemohsen
پنج شنبه 09 خرداد 1387, 12:47 عصر
با سلام
شما باید از دستورات بیتی AND و OR و ... استفاده کنید و بعدش CMP کنید
راه ساده تری هم هست
استفاده از دستور TEST
این دستور مثل دستور AND می کنه با این تفاوت که به جای تغییر عملوند ، بیت های ثبات FLAG رو تغییر می ده
برای مثال فرض کنید می می خواهیم بدونیم که آیا بیت های 3 و 4 یه عدد 8 بیتی هر دو با هم صفر هستند یا نه
برای این کار از دستورات زیر استفاده می کنیم (عدد مورد نظر تو AL)

test al,12
jz label
اگه هر دو بیت 3 و 4 با هم صفر بشن ، نتیجه دستور test صفر شده و ثبات Ziro یک می شود و شرط برقرار و پرش به label مورد نظر.

برای هر تعداد بیت می تونیم این کار رو انجام بدیم
مثلا اگه بخواهیم بدونیم بیت 7ام ثبات AL یکه یا نه از دستور زیر استفاده می کنیم (اگه 1 باشه پرش داریم)

test al,64
jnz label