لازم به ذكر است كه دستورات منطقي به صورت بيت به بيت عمل مي كنند .
يعني دستوراتي كه بيت به بيت هر بايت را با بيت به بيت هر بايت ديگر در عملگرهاي منطقي كه دو عملوند ميپذيرند مقايسه و عمليات را بر انها انجام ميدهند .
براي عملگر not كه هميشه يك عملوند دارد نيز عمليات تنها برروي هان عملوند انجام ميشود .
دستورات منطقي شامل دستورات زير مي باشند :
الف ) دستور منطقيAnd كه بروي دو عملوند (مثلا يك بايتي) در مبناي دو عمل مي كنند به اين صورت كه دستور And بيت اول از عملوند اول را با بيت اول از عملوند دوم And ميكند و حاصل را در بيت اول از عملوند اول ميريزد . اين عمل به همين ترتيب براي بيت هاي بعدي دو عملوند تا انتهاي بايت يعني هشت بيت ( هشت بار تكرار عمليات فوق ) انجام ميپذيرد .
ب ) دستور منطقي Or كه بروي دو عملوند عمل مي كند و طرز كار ان دقيقا مانند and بالا است با اين تفاوت كه بيت هاي دو عملوند را بيت به بيت با يكديگر or ميكند
پ ) دستور منطقي Not كه بروي يك عملوند عمل ميكند تمامي بيت هاي عملوند خود را برعكس ميكند . يعني مكمل يك عملوند خود را در همان عملوند ميريزد .

مثال: And , Or دو عدد 7 و 14 وهمچنين Not عدد 14 را به وسيله يك تكه برنامه محاسبه كنيد ؟

کد:
Mov al,7 
Mov bl,14 
And al,bl 
Mov cl,al 
Mov al,7  
Or al,bl 
Mov ch,al 
Not bl
در مثال فوق با دستور Mov al,7 عدد 7 را در al و به همين ترتيب عدد 14 را در bl مي ريزيم . در al عدد 7 به صورت 00000111 و در bl عدد 14 به صورت 00001110 ذخيره مي شود زيرا عددها در كامپيوتر در مبناي دو ذخيره مي شوند . با دستور And al,bl عمل And منطقي به صورت بيت به بيت انجام مي شود و در نهايت عدد 00000110 ( كه نمايش عدد 6 است ) در al ذخيره مي شود و با دستور Mov cl,al عدد را در cl نگه مي داريم . دوباره در al عدد 7 را قرار داده و al و bl را Or منطقي كرده و حاصل را در ch نگه مي داريم . حال با دستور Not bl عدد 14 را Not منطقي كرده و حاصل را در bl نگه مي داريم .
ت ) دستور shift به چپ كه به صورت shl در زبان اسمبلي استفاده ميشود به اين صورت عمل ميكند كه بيت ها را همگي با هم باندازه عملوند دوم خودش به سمت چپ منتقل ميكند فرضا مثال زير بيت ها را سه بار به سمت چپ منتقل ميكند
shl al,3
دستور shl در واقع بازاي هر بار حركت دادن بيت ها يك صفر به سمت راست عدد اضافه ميكند ( عدد را در مبناي خودش ضرب ميكند : مبناي مفروض 2 است بنابراين حاصل را ميتوان اينطور در نظر گرفت كه عدد در 2 ضرب شده است ) منتهي از ان طرف بيت ها را بيرون ميريزد و در اينصورت CF يا همان Carry Flag ما در صورت خارج شدن يك هاي همان بايت يك ميشود .
ث ) دستور shift به راست كه به صورت shr در زبان اسمبلي ميباشد نيز مانند دستور فوق است منتهي اين بار بيت ها را به سمت مخالف يعني سمت راست منتقل ميكند . بنابراين ميتوان در صورتي كه بدانيم عدد بدون علامت است از ان بعنوان تقسيم بر مبناي عدد ( كه در اينجا دو است ) استفاده كنيم منتهي اين تقسيم در خروجي عدد صحيح ميدهد و مانند عملگر DIV در پاسكال عمل ميكند . البته با عملگر DIV در اسمبلي كاملا متفائت است . ميتوان عمليات انجام شده توسط انرا به اين صورت در نظر گرفت كه جزؤ صحيح عملوند اول را حساب ميكند و بر عملوند دوم تقسيم ميكند .
مثال : به وسيله يك تكه برنامه عدد 7 را يك با شيفت به چپ ويك بار شيفت به راست دهيد ؟
کد:
 Mov al,7 
Shl al,1 
Mov cl,al 
Shr  al,2
در مثال فوق عدد 7 كه به صورت 00000111 مي باشد با دستور Shl al,1 يك بار شيفت به چپ مي دهيم و نتيجه آن 00001110 مي شود ( كه نمايش عدد 14 مي باشد ) و آن را در cl نگه مي داريم . با دستور Shr al,2 عددي كه در al است را دو بار شيفت به راست ميدهيم اولين بار براي اينكه عدد 7 حاصل شود و دومين بار عدد 7 را يك بار شيفت راست مي دهيم . و عدد 00000011 حاصل مي شود كه معادل عدد 3 مي باشد .
همان طور كه در مثال بالا مي بينيد هر بار شيفت به چپ عدد ، عدد دو برابر مي شود و با هر بار شيفت به چپ جزؤ صحيح عدد تقسيم بر 2 حاصل مي شود .

نكته :
در اعداد علامت دار اگر عدد منفي باشد و شيفت به راست بدهيم عمل تقسيم بر 2 انجام نمي شود زيرا در صورت يك بودن سمت چپ ترين بيت به سمت چپ شيفت داده شده و جاي آن 0 مي نشيند كه در اين صورت عدد مثبت مي شود . براي جلوگيري از اين مشكل كافيست به جاي دستور Shr از دستور Sar استفاده كنيم . دستور Sar بدين صورت عمل مي كند كه اگر سمت چپ ترين عدد 1 بود 1 واگر 0 بود 0 از سمت چپ وارد مي شود .
معادل با دستور Shl نيز دستور Sal وجود كه باهم هيچ گونه تفاوتي ندارد .
تكميليه دارد ...