Condition: jumps if SF = OF. After CMP a, b, SF and OF agree when the true signed difference a − b is zero or positive: either no overflow and a non-negative result, or an overflow that flipped a negative-looking result. So the jump means a ≥ b for signed numbers. Its unsigned twin is JAE.

A typical use is keeping the larger of two signed values:

Prints 4. With JAE it would keep -2 (FEh), which is the larger as unsigned.
MOV AL, -2
MOV BL, 4
CMP AL, BL
JGE KEEP1 ; AL is already the larger
MOV AL, BL
KEEP1:
ADD AL, "0" ; digit -> character
MOV DL, AL
MOV AH, 02h ; DOS: print the character in DL
INT 21h

After CMP AX, 0, JGE means "not negative", the same answer JNS gives, because subtracting zero cannot overflow.

Range

On the 8086 JGE exists only in the SHORT form: two bytes, opcode 7Dh 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.

JL SKIP1 ; the opposite test, a short hop
JMP FARAWAY ; any distance in the segment
SKIP1:

Later CPUs

The 80386 added a near form of every conditional jump, 0Fh 8Dh followed by a 16-bit displacement (32-bit in 32-bit code), so from the 386 on JGE can reach anywhere in the segment. Code for the 8086 must stay with the short form.