# How do I do a “greater than” jump in Z80 Assembly, rather than “greater than or equal to”?

`CP` performs a subtraction and sets the flags appropriately. It doesn’t store the results of the subtraction.

So to compare for the A greater than the operand, you need to look for a result of that subtraction that was a strictly positive number, i.e. it was 1 or greater.

There’s no direct route to that, you’ll have to do it as a compound — `NC` to eliminate all results less than 0, getting you to greater than or equal, followed by `NZ` to eliminate the possibility of equality. But you might want to flip those for more straightforward code. E.g.

``````      CP <whatever>
JR C, testFailed   ; A was less than the operand.
JR Z, testFailed   ; A was exactly equal to the operand.

testSucceeded:
; A was not less than the operand, and was not
; equal to the operand. Therefore it must have
; been greater than the operand.
...

testFailed:
...
``````

CLICK HERE to find out more related problems solutions.

Scroll to Top