I have received a character over UART, and need to validate if it's a number character.
Normally I'd do
if (char >= '0' && char <= '9') { /* VALID */ }
However, I have to do it in assembly.
I haven't found any compare instruction (so I assume there is none).
How can I do this?
    mov A, SBUF    ; load the number
    ; -- pseudocode --
    cmp A, #'0'    ; In AVR, I'd do it this way
    brlt fail      ; but I'm new to 8051
    cmp A, #'9'
    brge fail
    ; -- pseudocode --
    ; number is good
fail:
edit: ok here's what I have now but it doesn't work
;======================================================
; check if r1 is number char -> r0 = 1 or 0
;------------------------------------------------------
fn_isnum:
    PUSH acc
    PUSH 1
    MOV r1,A
    SUBB A,#'0'
    JC isnum_bad
    MOV A,r1
    SUBB A,#'9'+1
    JC isnum_bad
    POP 1
    POP acc
    MOV r0,#1
    RET 
isnum_bad:
    POP 1
    POP acc
    MOV r0,#0
    RET
;======================================================
 
     
    