
HT80C51 User Manual
80C51 Family Instruction Set – Instruction definitions
Handshake Solutions
© Philips Electronics N.V. 2005
Page 97 of 132
CJNE <dest-byte>,<src-byte>,rel
Function: Compare and Jump if Not Equal
Description: CJNE compares the magnitudes of the first two operands, and branches if their values are not
equal. The branch destination is computed by adding the signed relative-displacement in the last
instruction byte to the PC, after incrementing the PC to the start of the next instruction. The carry
flag is set if the unsigned integer value of <dest-byte> is less than the unsigned integer value of
<src-byte>; otherwise, the carry is cleared. Neither operand is affected.
The first two operands allow four addressing mode combinations: the Accumulator may be com-
pared with any directly addressed byte or immediate data, and any indirect RAM location or work-
ing register can be compared with an immediate constant.
Example: The Accumulator contains 34H. Register 7 contains 56H. The first instruction in the sequence,
CJNE R7,#60H,NOT_EQ
;
...
....
; R7 = 60H.
NOT_EQ: JC
REQ_LOW
; IF R7 < 60H.
;
... ....
; R7 > 60H.
sets the carry flag and branches to the instruction at label NOT_EQ. By testing the carry flag, this
instruction determines whether R7 is greater or less than 60H.
If the data being presented to Port 1 is also 34H, then the instruction,
WAIT:
CJNE A,P1,WAIT
clears the carry flag and continues with the next instruction in sequence, since the Accumulator
does equal the data read from P1. (If some other value was being input on P1, the program will
loop at this point until the P1 data changes to 34H.)
CJNE A,direct,rel
Bytes: 3
Cycles: 2
Encoding:
Operation: (PC)
← (PC) + 3
IF (A) < > (direct)
THEN
(PC)
← (PC) + relative offset
IF (A) < (direct)
THEN
(C)
← 1
ELSE
(C)
← 0
1
0
1
1
0
1
0
1
direct address
rel. address