平特心水报图
新網絡營銷基礎與實踐

你的位置:首頁 >網絡營銷 >移位指令

移位指令

名詞解釋

簡介
移位指令
  移位操作指令是一組經常使用的指令,屬于匯編語言邏輯指令中的一部分,它包括移位指令(含算術移位指令、邏輯移位指令),循環移位指令(含帶進位的循環移位指令),雙精度移位指令三大類。其功能為將目的操作數的所有位按操作符規定的方式移動1位或按寄存器CL規定的次數(0~255)移動,結果送入目的地址。目的操作數是8位(或16位)的寄存器數據或存儲器數據。
  下面將逐一詳述。所用到的名詞均為匯編語言中一般常用符號。若不懂可暫且當做一個普通名字來理解。

詳述

說明
  一般格式 移位操作符(如SHR) OPR,CNT.
  其中OPR用除立即數外的任何尋址方式。移位次數由CNT決定,在8086中可以是1或CL,CNT為1時只移一位;如果需要移位的次數大于1時,需要先將移位次數存入CL寄存器中,而移位指令中的CNT寫為CL即可。在其他機型中可使用CL和CNT,且CNT的值除可用1外,還可以用8位立即數指定范圍從1到31的移位次數。有關OPR和CNT的規定適用于以下所有指令操作。具體格式如下所述。以邏輯右移為例。
  如:MOV AX,62H
  SHR AX,1
  當移位數大于1時,需要先將移位數放進CL中然后再進行移位操作。
  如:MOV AL,62H
  MOV CL,4
  MOV AL,CL
  條件標志位
  CF(進位標志) = 移入的數值
  1 CNT=1時,最高有效位的值發生變化
  0 CNT=1時,最高有效位的值不變
  移位指令:
  SF(符號標志)、ZF(零標志)、PF (奇偶標志)根據移位結果設置,AF(輔助進位標志)無定義
  循環移位指令:
  不影響 SF、ZF、PF、AF
  條件標志位應用于具體的操作數中使用,以下敘述中未詳細寫明,初學者可不予理會。
算術指令
  SAL(shift arithmetic left) 算術左移
  格式:SAL OPR,CNT
  含義: 算術左移SAL把目的操作數的低位向高位移,空出的低位補0.
  (指將要移位的操作數換成二進制表示方法,如62H為01100010B.移位時只是尋常理解中的將這些二進制位逐個向左或向右移,移走的數根據操作符決定舍棄或者放入空出的位置,空出的位置根據操作符決定補0或者放入移走的數)。
  SAR(shift arithmetic right) 算術右移
  格式:SAR OPR,CNT
  算術右移SAR把目的操作數的高位向低位移,空出的高位用最高位(符號位)填補。
  如62H二進制表示法為01100010B,最高位為0,無論右移多少位左邊都用0補上。如果最高位是1,則都用1補上。
  注:算術移位指令常用于帶符號數*2或/2,受影響的標志位:CF、OF、PF、SF和ZF(AF無定義)。
邏輯指令
  邏輯左移SHL(Shift Logical Left)和邏輯右移SHR(Shift Logical Right)
  格式:SHL(或SHR) OPR,CNT
  邏輯左移/右移指令只有它們的移位方向不同,移位后空出的位都補0。
  注:邏輯移位指令常用于無符號數*2或/2,受影響的標志位:CF、OF、PF、SF和ZF(AF無定義)。
循環移位指令
  循環左移ROL(Rotate Left)和循環右移ROR(Rotate Right)。
  格式:ROL(或ROR) OPR,CNT
  循環左移/右移指令只是移位方向不同,它們移出的位不僅要進入CF,而且還要填補空出的位。可以理解為蛇咬尾巴型循環。
  帶進位的循環左移RCL(Rotate Left Through Carry)和帶進位的循環右移RCR(Rotate Right)。
  格式:RCL(或RCR) OPR, CNT
  帶進位的循環左移/右移指令只有移位的方向不同,它們都用原CF的值填補空出的位,移出的位再進入CF。
  注:受影響的標志位:CF和OF。
  以上算術,循環和邏輯移位指令均可以作字或字節的操作,386及其后繼機型還可作雙字操作。
雙精度移位指令
  386及其后繼機型可使用本組指令
  SHLD(shift left double) 雙精度左移和SHRD(shift right double) 雙精度右移
  格式:SHLD(或SHRD) DST,REG,CNT
  這組指令可以取兩個字作移位操作而得到一個字的結果,也可以取兩個雙字作移位操作而得到一個雙字的結果。在移位中,作為源操作數的寄存器提供移位值,以補目的操作數因移位引起的空缺,而指令執行完成后,只取目的操作數作為移位的結果,源操作數寄存器則保持指令執行前的值不變。
  這是一組三操作數指令,其中DST可以用除立即數以外的任一種尋址方式指定字或雙字操作數。源操作數則只能使用寄存器方式指定與目的操作數想同長度的字或雙字。第三個操作數CNT用來指定移位次數,它可以是一個8位的立即數,也可以是CL,用其內容存放移位計數值。移位計數值的范圍為1到31,對于大于31的數,機器則自動取模32的值來取代。
  如:SHLD EBX,ECX,16
  指令執行前:(EBX)=12345678H, (ECX)=13572468H,
  指令執行后:(EBX)=56781357H,(ECX)=13572468H,CF=0.

網絡營銷詞典內容均由網友提供,僅供參考。

平特心水报图 十大正规游戏平台排行榜 广西十一选五中奖规则 体彩云南十一选五走势 大富豪棋牌游戏大厅 039福彩中心开机号 双色球红球选号技巧 福建十一选五规律 天津十一选五推荐 双色球基本走势图大赢家 山西11选5前三组选走势