; DIV16B - DIVIDE 16 BIT NUMBER IN HL BY 8 BIT NUMBER IN C
; QUOTIENT RETURNED IN HL, REMAINDER IN A
; BY BRUCE R. RATOFF 12/11/80
;
; THIS IS A 16/8 DIVIDE WITH A DIFFERENCE IN THAT MOST TEXTBOOK
; EXAMPLES OF 16/8-BIT DIVISION WILL FAIL WHEN THE QUOTIENT EXCEEDS
; 8 BITS. HERE THE PROBLEM IS CIRCUMVENTED BY USING THE ACCUMULATOR
; AS A HIGH ORDER EXTENSION OF THE DIVIDEND.
;
;
DIV16B:
SUB A ; CLEAR THIRD ORDER DIVIDEND
MVI B,16 ; INITIALIZE 16 BIT SHIFT COUNT
DLUP:
DAD H ; SHIFT DIVIDEND LEFT
ADC A ; HIGH BIT SHIFTS INTO ACC
SUB C ; SUBTRACT DIVISOR
INX H ; SET LOW QUOTIENT BIT
JNC SOK ; SKIP AHEAD IF SUBTRACT SUCCEEDED
ADD C ; ELSE REVERSE SUBTRACTION
DCX H ; AND CLEAR LOW QUOTIENT BIT
SOK:
DCR B ; COUNT DOWN 16 BITS
JNZ DLUP ; LOOP IF MORE
RET ; ALL DONE
;