日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

當前位置:電子發(fā)燒友網(wǎng) > 圖書頻道 > 電子 > 《計算機組成原理與匯編語言》 > 第3章 指令系統(tǒng)與匯編語言設計

第4節(jié) 邏輯運算和移位指令

3.4.1 邏輯運算和移位指令

      1.邏輯運算指令

       (1)NOT OPRD

該指令對操作數(shù)進行求反操作,然后將結果送回。操作數(shù)可以是寄存器或貯器的內(nèi)容。該指令對標志位不產(chǎn)生影響。

        例如: NOT AL

     (2)AND指令

該指令對兩個操作數(shù)進行按位相“與”的邏輯運算。即只有參加相與的兩位全為“1”時,相“與”結果才為“1”;否則相“與”結果為“0”。相“與”結果送回。

AND指令可以進行字節(jié)操作,也可以進行字操作。

         AND指令的一般格式為

                     AND OPRD1,OPRD2
  
其中,目的操作數(shù)OPRD1可以是累加器,也可以是任一通用寄存器,可以是內(nèi)存操作數(shù)。源操作數(shù)OPRD2可以是立即數(shù)、寄存器,也可以是內(nèi)存操作數(shù),

           例如:
 
               AND AL,0FH
               ANDAX,BX
               ANDSI,BP
               ANDAX,DATA --WORD
               ANDDX,BUFFER[SI+BX]
               ANDDATA --WORD,00FFH
               ANDBLOCK[BP+DI],DX

        (3) TEST指令

該指令的操作功能與AND指令相同,其結果將反映在標志位上,但結果不送回,即TEST指令將不改變操作數(shù)的值。這條指令通常是在不希望改變操作數(shù)的前提下,

用來檢測某一位或某幾位的狀態(tài)。

             TEST 指令的一般格式為

                   TEST OPRD,im ;im是立即數(shù)

            立即數(shù)中哪一位為1,表示要對哪一位進行測試。

例如,若要檢測AL中的最低位是否為1,且為1則轉(zhuǎn)移。在這種情況下
        
            可以用如下指令:

               TEST AL, 01H
                JNZ THERE
         … THERE:MOV BL,05H

       (4) OR指令 

OR指令允許對字節(jié)或?qū)ψ诌M行相“或”運算。OR指令使標志位CF=0,OF=0;相“或”操作的結果反映在標志位PF、SF和ZF上;對AF標志位未定義。
             
       OR指令的一般格式為
             OR OPRD1,OPRD2

其中,目的操作數(shù)OPRD1可以是累加器,可以是任一通用寄存器,也可以是一個內(nèi)存操作數(shù)。源操作數(shù)OPRD2可以是立即數(shù),也可以是寄存器,也可以是內(nèi)存操作數(shù),

              例如:

                 OR AL,30H
                 OR AX,00FFH
                 OR BX,SI
                 OR BX,DATA --WORD
                 OR BUFFER,SI
                 OR BUFFER[BX+SI],8000H

              操作數(shù)自身相“或”將不改變操作數(shù)的值,但可使進位標志位CF清0。
 
          (5) XOR指令

該指令對兩個操作數(shù)進行按位“異或”操作,即進行“異或”操作的兩位值不同時,其結果為“1”;否則就為0,操作結果送回。

                 XOR 指令的一般形式為

                                   XOR OPRD 1 ,OPRD2

其中,目的操作數(shù)OPRD1可以是累加器、任一個通用寄存器,也可以是一個內(nèi)存操作數(shù)。源操作數(shù)可以是立即數(shù)、寄存器,也可以是內(nèi)存操作數(shù).
                    
                    例如: 
                         XOR AL,0FH
                         XOR AX,BX
                         XOR DX,SI
                         XOR CX,CONNT --WORD
                         XOR BUFFER,DI
                         XOR BUFFER[BX+SI],AX

當操作數(shù)自身進行“異或”時,由于每一位都相同,因此“異或”結果一定為0,且使進位標志位也為0。這是對操作數(shù)清0的常用方法。

                    例如:

                         XOR AX ,AX
                         XOR SI,SI

          2.移位指令

8088有3條移位指令。算術左移和邏輯左移指令:SAL/SHL OPRD,m ;m是移位次數(shù),可以是1或寄存器CL中的內(nèi)容算術右移指令:

                      SAR OPRD, m 

                 邏輯右移指令:SHR OPRD, m

             (1) SAL/SHL指令

這兩條指令的操作結果是完全一樣的。每移位一次在右面最低位補一個0,而左面的最高位則移入標志位CF,如圖3.16所示。  

          (2) SAR指令

該指令每執(zhí)行一次移位操作,就使操作數(shù)右移一位,但符號位保持不變,而最低位移至標志位CF,如圖3.17所示。
             
             SAR可移位由m所指定的次數(shù),結果影響標志位CF、OF、PF、SF和ZF。

 


                                     (3) SHR指令

該指令每執(zhí)行一次移位操作,就使操作數(shù)右移一位,最低位移 至標志位CF中。與SAR不同的是,左面的最高位將補0,如圖3.18所示。 該指令可以執(zhí)行由m所指定的移

位次數(shù)。

 
          3. 循環(huán)移位指令

                  8088有4條循環(huán)移位指令:

                    左循環(huán)移位指令 ROLOPRD,m
                    
                 右循環(huán)移位指令 ROROPRD,m
                    
                 帶進位左循環(huán)移位指令 RCLOPRD,m
                    
                 帶進位右循環(huán)移位指令 RCROPRD,m

          (1) ROL指令

該指令每做一次移位,總是將最高位移入進位位CF中,并且還將最高位移入操作數(shù)的最低位,從而構成一個環(huán),如圖3.19(a)所示。

                  (2) ROR指令

該指令每做一次移位,總是將最低位移入進位標志位CF中,另外,還將最低位移入操作數(shù)的最高位,從而構成一個環(huán),如圖3.19(b)所示。 

  
   
       (3) RCL指令

該指令是把標志位CF包含在內(nèi)的循環(huán)左移指令。每移位一次,操作數(shù)的最高位移入進位標志位CF中,而原來CF的內(nèi)容則移入操作數(shù)的最低位,從而構成一個大環(huán),

如圖3.19(c)所示。

       (4)RCR指令

該指令是把進位標志位CF包含在內(nèi)的右循環(huán)指令。每移位一次,標志位CF中的原內(nèi)容就移入操作數(shù)的最高位,而操作數(shù)的最低位則移入標志位CF中,如圖3.19(c)所示。

左移一位,只要左移以后的數(shù)未超出一個字節(jié)或一個字所能表達的范圍,則相當于原來的數(shù)乘以2;而右移一位相當于除以2,
    
              例如:
 
                    MOV AL,08H
                 SALAL,1 ;左移一位,相當于乘以2;該指令執(zhí)行后,AL中的內(nèi)容為16
                 MOVAL,16
                 SARAL,1 ;右移一位,相當于除以2 ;該指令執(zhí)行后,AL中的內(nèi)容為8
 

 

?
珠海市| 西乡县| 淄博市| 天水市| 日喀则市| 武穴市| 晋城| 龙胜| 日土县| 三都| 昌都县| 墨竹工卡县| 尼玛县| 安乡县| 交口县| 丹阳市| 陵川县| 洪江市| 东乡县| 静安区| 保靖县| 屏东市| 遵义市| 余干县| 白水县| 鞍山市| 莲花县| 武陟县| 遵义市| 元朗区| 南木林县| 广丰县| 张家港市| 丹凤县| 五大连池市| 新干县| 汉沽区| 揭西县| 东城区| 河东区| 惠安县|