BMI and BPL don't work for comparing signed values either, as they don't tell you when the internal subtraction CMP performs overflows. For example, comparing -2 with +127 clears the sign flag, but comparing -1 with +127 sets the sign flag, even though the relation is the same for both, less-than. There's no way to directly compare signed values with CMP and have the greater/less result in the flags. As Celius said, the simplest way is to convert signed to
offset binary (EOR both values with $80, which can often be done during assembly as one is usually a constant somewhere), then do a normal (unsigned) comparison and examine the carry flag. Some 65xx books I've read suggest instead using SBC for signed values, then interpreting the carry
and overflow flags, but this is inferior to converting to offset binary.