title    a13dbadd (com) adding doublewords
         .model small
         .code
         org     100h
begin:   jmp     short a10main
;--------------------------------------------------------------------------
WORD1A   DW      0BC62H
WORD1B   DW      0123H
WORD2A   DW      553AH
WORD2B   DW      0012H
WORD3A   DW      ?
WORD3B   DW      ?
;--------------------------------------------------------------------------
A10MAIN  PROC    NEAR                 ;MAIN PROCEDURE
         CALL    B10DWD               ;CALL 1ST ADD
         CALL    C10DWD               ;CALL 2ND ADD         
         MOV     AX,4C00H             ;END PROCESSING
         INT     21H
A10MAIN  ENDP
;                EXAMPLE OF ADD DOUBLEWORDS:
;                ---------------------------
B10DWD   PROC 
         MOV     AX,WORD1A            ;ADD LEFTMOST WORD
         ADD     AX,WORD2A
         MOV     WORD3A,AX
         MOV     AX,WORD1B            ;ADD RIGHTMOST WORD
         ADC     AX,WORD2B
         MOV     WORD3B,AX
         RET
B10DWD   ENDP
;                GENERALIZED ADD OPERATION:
;                --------------------------
C10DWD   PROC
         CLC                          ;CLEAR CARRY FLAG
         MOV     CX,02                ;SET LOOP COUNT
         LEA     SI,WORD1A            ;LEFTMOST WORD
         LEA     DI,WORD2A            ;LEFTMOST WORD 
         LEA     BX,WORD3A            ;LEFTMOST WORD OF SUM
C20:
         MOV     AX,[SI]              ;MOVE WORD TO AX
         ADC     AX,[DI]              ;ADD WITH CARRY TO AX
         MOV     [BX],AX              ;STORE WORD
         INC     SI                   ;ADJUST ADDRESSES FOR NEXT WORD TO RIGHT
         INC     SI
         INC     DI
         INC     DI
         INC     BX
         INC     BX
         LOOP    C20                  ;REPEAT FOR NEXT WORD
         RET
C10DWD   ENDP
         END     BEGIN             