引言
比較指令(CMP)前世今生:在微型計算機的彙編語言中,CMP(compare)是其中一條指令,叫做比較指令。cmp的功能相當於減法指令,只是對操作數之間運算比較,不保存結果。cmp指令執行後,將對標誌寄存器產生影響。其他相關指令通過識別這些被影響的標誌寄存器位來得知比較結果。
一、基本概念
比較指令:用於比較數據的大小,按照所比較的數據類型不同可分為整數比較、雙精度整數比較、實數比較三種類型,將IN1和IN2的數據進行比較,比較時必須保證兩個數的數據類型相同,數據類型可以是整數、長整數和實數。
比較比較指令的主要類型:
〈1〉字節比較(B);(無符號整數)
〈2〉整數比較(I);(有符號整數)
〈3〉雙字整數比較(D);(有符號整數)
〈4〉實數比較(R)。(有符號雙字浮點數 )
二、指令格式
2.1 CMP ==: 等於 & CMP <>: 不等於
“等於”指令判斷第一個比較值()是否等於第二個比較值()。
如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。 如果不滿足比較條件,則該指令返回 RLO“0”。 該指令的 RLO 通過以下方式與整個程序段中的 RLO 進行邏輯運算:
- 串聯比較指令時,將進行“與”運算。
- 並聯比較指令時,將進行“或”運算。
2.2CMP >=: 大於或等於 &CMP <=: 小於或等於
“小於或等於”指令判斷第一個比較值()是否小於或等於第二個比較值()。 要比較的兩個值必須為相同的數據類型。
“大於或等於”指令判斷第一個比較值()是否大於或等於第二個比較值()。 要比較的兩個值必須為相同的數據類型。
如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。 如果不滿足比較條件,則該指令返回 RLO“0”。 該指令的 RLO 通過以下方式與整個程序段中的 RLO 進行邏輯運算:
- 串聯比較指令時,將進行“與”運算。
- 並聯比較指令時,將進行“或”運算。
2.3 CMP >: 大於 & CMP
“小於” 指令判斷第一個比較值()是否小於第二個比較值()。要比較的兩個值必須為相同的數據類型。
“大於”指令確定第一個比較值()是否大於第二個比較值()。要比較的兩個值必須為相同的數據類型。
如果滿足比較條件,則該指令返回邏輯運算結果 (RLO)“1”。如果不滿足比較條件,則該指令返回 RLO“0”。該指令的 RLO 通過以下方式與整個程序段中的 RLO 進行邏輯運算:
- 串聯比較指令時,將進行“與”運算。
- 並聯比較指令時,將進行“或”運算。
2.4 IN_RANGE: 值在範圍內 & OUT_RANGE: 值超出範圍
IN_RANGE 指令:使用輸入 MIN 和 MAX 可以指定取值範圍的限值。 “值在範圍內”指令將輸入 VAL 的值與輸入 MIN 和 MAX 的值進行比較,並將結果發送到功能框輸出中。 如果輸入 VAL 的值滿足 MIN <= VAL 或 VAL <= MAX 的比較條件,則功能框輸出的信號狀態為“1”。 如果不滿足比較條件,則功能框輸出的信號狀態為“0”。
OUT_RANGE指令:使用輸入 MIN 和 MAX 可以指定取值範圍的限值。 “值超出範圍”指令將輸入 VAL 的值與輸入 MIN 和 MAX 的值進行比較,並將結果發送到功能框輸出中。 如果輸入 VAL 的值滿足 MIN > VAL 或 VAL > MAX 的比較條件,則功能框輸出的信號狀態為“1”。 如果指定的 REAL 數據類型的操作數具有無效值,則功能框輸出的信號狀態也為“1”。
三、編程案例應用
3.1 CMP ==: 等於 & CMP <>: 不等於 案例
3.2 CMP >=: 大於或等於 &CMP <=: 小於或等於
3.3 IN_RANGE: 值在範圍內 & OUT_RANGE: 值超出範圍
四、總結
比較指令是常用的基本指令之一,廣泛應用於PLC工藝編程時候邏輯判斷和條件分析當中,比較指令通常和傳送指令以及賦值指令相結合使用實現複雜工藝控制。
注意事項:
1.比較浮點數
如果要比較數據類型 REAL 或 LREAL,使用指令“IN_RANGE: 範圍內的值”,而不是指令“CMP ==: 等於”。
聲明:本作品純屬個人娛樂學習交流,嚴禁使用其作為商業用途,圖片均來至於西門子仿真軟件及選型手冊、網絡,如有版權糾紛請及時告知,謝謝!
閱讀更多 自學成財之科男 的文章