Condition: jumps if ZF = 0. JNE and JNZ are one instruction under two names. After CMP a, b it means a ≠ b, for signed and unsigned values alike; after arithmetic or logic it means the result was not zero. It is the usual instruction at the bottom of a loop that runs until something is found or a counter reaches zero.
MOV SI, OFFSET TEXT1NEXT1:MOV DL, [SI] ; the next characterMOV AH, 02h ; DOS: print the character in DLINT 21hINC SICMP BYTE PTR [SI], "."JNE NEXT1 ; until the full stopTEXT1 DB "Up to the dot."
Idioms
DEC CX / JNZ TOP1 is a counting loop like LOOP, with any register as the counter and with no 127-byte worry, since MASM can lengthen JNZ. TEST AL, 80h / JNZ HIGH1 asks whether a bit is set. Note that a test at the bottom runs the body at least once; if the count may start at zero, test it first.
Range
On the 8086 JNE exists only in the SHORT form: two bytes, opcode 75h and a signed 8-bit displacement counted from the end of the instruction. The target must lie within −128..+127 bytes of that point. To go farther, invert the test and hop over an unconditional JMP, which can reach the whole segment. MASM 6 makes this rewrite itself when it finds the target out of range (its default OPTION LJMP), so the listing may show two instructions where you wrote one.
JE SKIP1 ; the opposite test, a short hopJMP FARAWAY ; any distance in the segmentSKIP1:
Later CPUs
The 80386 added a near form of every conditional jump, 0Fh 85h followed by a 16-bit displacement (32-bit in 32-bit code), so from the 386 on JNE can reach anywhere in the segment. Code for the 8086 must stay with the short form.