عملگرهای بیتی: عملگرهای بیتی مانند عملوندهای حسابی هستند با این تفاوت که روی بیت ها کار میکنند. این عملگرها عبارتند از : … AND/OR/XOR/SHR/SHL/RCL/RCR/ . عملگر AND : این اپراتور بیتهای دو عدد(متغیر) را با هم AND کرده و حاصل را در متغیر (یا ثبات ) سمت چپ قرار میدهد . اگر فرض کنیم که همیشه ۱ بودن بیت به معنای Trueو ۰و بودن آن به معنای False است ، AND همیشه در صورتیکه هر دوبیت مقایسه شونده ۱ باشند، حاصل ۱یا Trueا را بر میگرداند . جدول ارزشی AND : X | Y | X and Y | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | پس وقتی ما عملوند AND را با دو رجیستر بکار میبریم ، بصورتی که گفته شد بیتها با هم مقایسه شده و حاصل مقایسه در محل متناظر بیتها در ثبات سمت چپ قرار میگیرند . مثلا اگر دستور AND Ah/Dh را اجرا کنیم ، حالتی نظیر شکل زیر را داریم : AH : 01101010 DH : 01111101 AH :AH AND DH : 01101000 به نتیجه بدست آمده توجه کنید . هر وقت که بخواهیم بیت های خاصی از یک رجیستر را ۰ کنیم ، یک عدد باینری که همه بیتهای آن ، بجز بیتهای مورد نظر ۱ هستند را در نظر گرفته با رجیستر مورد نظرAND میکنیم . مثلا اگر بخواهیم بیتهای دوم و سوم ثبات AX را صفر کنیم : AND AX/11111001b عملگر OR : این عملوند بیتهای دو عدد را با هم مقایسه کرده و اگر یکی از آن دو ۱ بود ، بیت متناظر در ثبات سمت چپ را ۱ میکند . مثلا با دستور OR AH/DH بیتهای AHبا DHا مقایسه شده و هر دو بیت متناظر که با هم ۰ بودند ، بیت تناظر در AHهم ۰ میشود. AH : 01101010 DH : 01111100 AH : AH OR DH : 01111110 هرگاه که بخواهیم بیت های خاصی از یک متغیر یا رجیستر را ۱ کنیم ، یک عدد باینری که همه بیتهای آن غیر از بیتهای مورد نظر ۰ هستند در نظر گرفته و با ثبات مورد نظر OR میکنیم . مثلا اگر بخواهیم دو بیت پائین AHرا ۱ا کنیم منویسیم : OR AH/00000011b عملگر : XOR عملوند XOR تنها در صورتی نتیجه ۱ میدهد که دو بیت مقایسه شونده غیرهم ارزش باشند . یعنی یکی ۱ و دیگری ۰ باشد . بعنوان مثال با اجرای XOR AH/DH این عملیات روی بیتها انجام میشود AH : 01101010 DH : 01111100 AH : AH XOR DH : 11101001 وقتی بخواهیم یک مقدار ثبات را برابر صفر قرار بدهیم ، معمولا از آن را با خودش XOR میکنیم . مثلا XOR CX/CX محتوای ثبات CX را برابر ۰ قرار میدهد . عملگرهای SHRو SHL : این عملگرها، بیتها را به راست و چپ شیفت ( انتقال ) میدهند . SHR Reg.nnum و SHL Reg.nnum .Reg اسم یک ثبات است مثلا AXو numو معلوم میکند که چند بیت باید به طرف راست یا چپ انتقال پیدا کند . مثلا SHR AX/6 بیتهای AXرا ۶ا واحد به راست انتقال داده و بیتهای چپ را با ۰ پر میکند . AX :10100010 AX :SHR AX/4 : 00001010 SHL هم عکس این عمل را انجام میدهد . یعنی بیتها را به چپ شیفت داده و از طرف راست با ۰ پر میکند . AX :10100010 AX :SHR AX/4 : 00100000 مثال : اگر بخواهیم که محتوای نیم ثبات CL را به نیم ثبات CH منتقل کنیم ، کافیت که CXرا ۸ا بیت به سمت چپ شیفت بدهیم . یعنی SHL CX/8 CL CH | 10110100 | 00101101 | محتوای اولیه CX CX CL CH | 00101101 | 00000000 | محتوای CX بعد از SHL CX/8 انتقال ادامه این بحث را در قسمت بعد انجام میدهیم .