1. compare CMP/CMPD/CMPF
1. compare CMP/CMPD/CMPF
1.1. Instruction description
Compare the sizes of IN1 and IN2, and output the comparison result to OUT and the following two bits.
Assuming IN1=D0, IN2=D2, OUT=Y000.
| The value of IN1 | the value of IN2 | the current comparison result | the output of Y000 | the output of Y001 | the output of Y002 |
|---|---|---|---|---|---|
| 150 | 100 | D0>D2 | ON | OFF | OFF |
| 100 | 100 | D0==D2 | OFF | ON | OFF |
| 50 | 100 | D0<D2 | OFF | OFF | ON |
1.2. The valid operands of the instruction
1.2.1. Single Character Type (CMP):
| Input/Output | Data Type | operand | Description |
|---|---|---|---|
| IN1 | 16 bit integer | D/CV/TV/AI/AO/K/H/V/Z/FD, bit composite word (X/Y/M/C/T/S), local variable (LW) | Input 1 |
| IN2 | 16 bit integer | D/CV/TV/AI/AO/K/H/V/Z/FD, bit composite word (X/Y/M/C/T/S), local variable (LW) | Input 2 |
| OUT | ON/OFF | Y/M/S, word positioning (D/V/Z) | Result |
1.2.2. Double Character Type (CMPD):
| Input/Output | Data Type | operand | Description |
|---|---|---|---|
| IN1 | 32-bit integer | D/CV/K/H/FD, bit composite word (X/Y/M/C/T/S), local variable (LD) | Input 1 |
| IN2 | 32-bit integer | D/CV/K/H/FD, bit composite word (X/Y/M/C/T/S), local variable (LD) | Input 2 |
| OUT | ON/OFF | Y/M/S, word positioning (D/V/Z) | Result |
1.2.3. Floating point type (CMPF):
| Input/Output | Data Type | operand | Description |
|---|---|---|---|
| IN1 | 32-bit real number | D/K/FD, local variable (LF) | Input 1 |
| IN2 | 32-bit real number | D/K/FD, local variable (LF) | Input 2 |
| OUT | ON/OFF | Y/M/S, word positioning (D/V/Z) | Result |
1.3. Example
Command table:
NETWORK 000
LD M0
CMP D0 D1 M100 // compare DO and D1 ,which one is greater.
POP
LD M100
OUT M1000 // if D0 > D1, M100= ON
POP
LD M101
OUT M1001 // if D0 == D1, M101= ON
POP
LD M102
OUT M1002 // if D0 < D1, M102= ON
POP
图1 CMP