عملگرهای بیتی
عملگرهای بیتی مانند عملوندهای حسابی هستند با این تفاوت که روی بیت ها کار
میکنند. این عملگرها عبارتند از : … 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
انتقال
ادامه این بحث را در قسمت بعد انجام میدهیم .
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن