; PROGRAM TO COMPARE TWO 8-BIT SIGNED OPERANDS. ; ENTRY: (A) = OPERAND 1. ; (B) = OPERAND 2. ; CALL CMPARE ; CALL SERVICE ROUTINE (SR). ; (RET FOR A < B) ; PUT JP < HERE. ; (RET FOR A = B) ; PUT JP = HERE. ; (RET FOR A > B) ; PUT JP > HERE. ; EXIT: (A) UNCHANGED. ; (B) UNCHANGED. ; (HL) DESTROYED. ; .ORG 0000h ; CHANGE ON REASSEMBLY. LD SP, 80h ; THESE LINES ADDED TO TEST THE PROGRAM. LD HL, 20h ; " PUSH HL ; " LD DE, 30h ; " LD A, 10h ; " LD B, 11h ; " CMPARE: POP HL ; GET RET ADDRESS. PUSH DE ; SAVE DE. LD DE, 3 ; ADDRESS INCREMENT. CP B ; COMPARE A:B. JP Z, EQUAL ; GO IF EQUAL. PUSH AF ; SAVE FLAGS. XOR B ; TEST SIGN BITS. RLA ; XOR TO CARRY FLAG. JP C, DIFFER ; GO IF DIFFERENT SIGNS. POP AF ; RESTORE FLAGS. JP C, LESST ; GO IF A < B. GREATR: ADD HL, DE ; BUMP RET BY 3. EQUAL: ADD HL, DE ; BUMP RET BY 3. LESST: POP DE ; RESTORE DE. JP (HL) ; RET TO 0,3,6. DIFFER: POP AF ; RESTORE FLAGS. JP C, GREATR ; GO IF A > B. JP LESST ; A < B. HALT .END