1. 移位指令的詳述
一般格式 移位操作符(如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
SHR 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.
2. 西門子PLC 移位指令及應用
可使用移位指令向左或向右逐位移動輸入 IN的內容(另請參閱 CPU寄肆帆存器)。向左移動 n位相當於將輸入端 IN的內容乘以 2的 n次冪(2n);向右移動 n位則相當於將輸入端 IN的內容除以 2的 n次冪(2n)。例如,如果將等價於十進制值 3 的二進制數左移 3 位,將得到等價於十進制值 24 的二進制數。
如果將等價於十進制值 16 的二進制數右移 2 位,則會得到等價於十進制值 4 的二進制數。可提供給輸入參數 N的數值決定了移動相應值的位數首拿。移位指令產生的空位將用零或符號位的信號狀態(0表示正,1表示負)來填補。最後移動的位的信號狀態將裝入狀態字的 CC1位中。狀態字的 CC0和 OV位將復位為 0。您可以使用跳轉指令判斷 CC1位。
西門子PLC 移位指令根據不同參數調整以及數據類型,可用於SHR_I(整數右移)、SHR_DI(長整數右移)、SHL_W(字左移)、SHR_W(字者雹搭右移)、SHL_DW(雙字左移)以及SHR_DW(雙字右移)。
(2)1數據移位指令有哪些擴展閱讀:
西門子公司的PLC產品包括LOGO、S7-200、S7-1200、S7-300、S7-400、S7-1500等。 西門子S7系列PLC體積小、速度快、標准化,具有網路通信能力,功能更強,可靠性高。S7系列PLC產品可分為微型PLC(如S7-200),小規模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等。
可編程式控制制器是由現代化生產的需要而產生的,可編程序控制器的分類也必然要符合現代化生產的需求。一般來說可以從三個角度對可編程序控制器進行分類。其一是從可編程序控制器的控制規模大小去分類,其二是從可編程序控制器的性能高低去分類,其三是從可編程序控制器的結構特點去分類。
3. 移位指令的介紹
移位操作指令是一組經常使用的指令,屬於匯編語言邏輯指橘頌令中的一部分,它包括移位指令(含算術移位指令、邏輯移位指令),循環移位指令(含帶進位的循環圓宴鄭移位指令),雙精度移位指令祥昌三大類。其功能為將目的操作數的所有位按操作符規定的方式移動1位或按寄存器CL規定的次數(0~255)移動,結果送入目的地址。目的操作數是8位(或16位)的寄存器數據或存儲器數據。
4. plc移位指令和傳送指令的號碼是什麼
1 PLC移位指令的號碼是SHL或SHR,PLC傳送指令的號碼是MOV。
2 PLC移位指令辯凱可飢褲以將數據在寄存器或存儲單元中向左或向右移動,而PLC傳送指令可以將數據從一個存儲單元復制到另一個存儲單元。
3 PLC移位指令和傳送指令是PLC編程中常用的指令,掌握它們的使用方法對於攜肢喚PLC編程人員來說是非常重要的。