SUBR	PROC	FAR
	SPACE
; -------------------------------------------------------------------
;	ADD BCD NUMBERS
;   THIS ROUTINE ADDS TWO BCD NUMBERS OF EQUAL LENGTH
;   ASSUMPTIONS:
;   CX  CONTAINS THE LENGTH OF THE FIELDS BEING ADDED
;   SI  POINTS TO THE LEFTMOST BYTE OF THE BCD DATA
;   DI  POINTS TO THE SECOND OPPERAND WHICH IS OVERLAID BY RESULT
;   AX  DESTROYED BY THIS ROUTINE
;
BCDADD	LABEL	FAR
	CLC				;CLEAR CARY FLAG
BCD1	LABEL	NEAR
	MOV	AL,[SI]		;GET A DATA BYTE
	ADC	AL,[DI]		;ADD A BYTE
	DAA				;ADJUST RESULT
	MOV	[DI],AL		;STORE ANSWER
	INC	SI			;BUMP POINTER
	INC	DI			;BUMP POINTER
	DEC	CX			;DECREMENT AND TEST
	JNZ	BCD1			;LOOP TILL DONE
	RET				;BACK TO CALLER
	SPACE	2
;	ADD ASCII NUMBERS
;   LINKAGE IS SAME AS ABOVE
;
ASCADD	LABEL	FAR
	CLC				;CLEAR CARRY FLAG
ASC1	LABEL	NEAR
	MOV	AL,[SI]		;GET A BYTE
	ADC	AL,[DI]		;ADD DATA
	AAA				;ADJUST RESULT
	MOV	[DI],AL		;STORE ANSWER
	INC	SI			;BUMP POINTER
	INC	DI			;BUMP POINTER
	DEC	CX			;LOOP CONTROL
	JNZ	ASC1			;LOOP FOR MORE
	RET
;
; -------------------------------------------------------------
SUBR	ENDP
