TITLE PROG3-6 (EXE) ASCII TO BCD CONVERSION AND ADDITION PAGE 60,132 .MODE SMALL .STACK 64 .DATA DATA1_ASC DB `0649147816' ORG 0010H DATA2_ASC DB `0072687188' ORG 0020H DATA3_BCD DB 5 DUP (?) ORG 0028H DATA4_BCD DB 5 DUP (?) ORG 0030H DATA5_ADD DB 5 DUP (?) ORG 0040H DATA6_ASC DB 10 DUP (?) .CODE MAIN PROC FAR MOV AX,@DATA MOV DS,AX MOV BX,OFFSET DATA1_ASC MOV DI,OFFSET DATA3_BCD MOV CX,10 CALL CONV_BCD MOV BX,OFFSET DATA2_ASC MOV DI,OFFSET DATA4_BCD MOV CX,10 CALL CONV_BCD CALL BCD_ADD MOV SI,OFFSET DATA5_ADD MOV DI,OFFSET DATA6_ASC MOV CX,05 CALL CONV_ASC MOV AH,4CH INT 21H MAIN ENDP CONV_BCD PROC AGAIN: MOV AX,[BX] XCHG AH,AL AND AX,0F0FH PUSH CX MOV CL,4 SHL AH,CL OR AL,AH MOV [DI],AL ADD BX,2 INC DI POP CX LOOP AGAIN RET CONV_BCD ENDP BCD_ADD PROC MOV BX,OFFSET DATA3_BCD MOV DI,OFFSET DATA4_BCD MOV SI,OFFSET DATA5_ADD MOV CX,05 CLC BACK: MOV AL,[BX]+4 ADC AL,[DI]+4 DAA MOV [SI] +4,AL DEC BX DEC DI DEC SI LOOP BACK RET BCD_ADD ENDP CONV_ASC PROC AGAIN2: MOV AL,[SI] MOV AH,AL AND AX,0F00FH PUSH CX MOV CL,04 SHR AH,CL OR AX,3030H XCHG AH,AL MOV [DI],AX INC SI ADD DI,2 POP CX LOOP AGAIN2 RET CONV_ASC ENDP END MAIN