DATA SEGMENT DATA ENDS STACK SEGMENT PARA STACK BUF_1 DW 100H DUP (0) LEN1 EQU $-BUF_1 STACK ENDS CODESEG SEGMENT ASSUME CS:CODESEG,SS:STACK,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,LEN1 CALL ENTER CALL IN_4_DEC ; MOV DX,AX CALL DISP_4_HEX ; MOV AH,4CH INT 21H DISP_1_HEX: ; PUSHF PUSH AX PUSH DX CMP DL,9 JBE L_1_1 ADD DL,07H L_1_1: ADD DL,30H MOV AH,02H INT 21H POP DX POP AX POPF RET DISP_2_HEX: PUSHF PUSH AX PUSH DX MOV AL,DL MOV AH,0 MOV DL,10H DIV DL MOV DL,AL CALL DISP_1_HEX MOV DL,AH CALL DISP_1_HEX POP DX POP AX POPF RET DISP_4_HEX: PUSHF PUSH AX PUSH DX MOV AX,DX MOV DL,AH CALL DISP_2_HEX MOV DL,AL CALL DISP_2_HEX POP DX POP AX POPF RET ENTER: PUSH AX PUSH DX MOV DL,20H MOV AH,02H INT 21H POP DX POP AX RET IN_1_DEC: PUSHF PUSH BX MOV BH,AH MOV AH,01H INT 21H SUB AL,30H MOV AH,BH POP BX POPF RET IN_2_DEC: PUSHF PUSH DX MOV DL,AH CALL IN_1_DEC MOV AH,10 MUL AH MOV DH,AL CALL IN_1_DEC ADD AL,DH MOV AH,DL POP DX POPF RET IN_4_DEC: PUSHF PUSH DX CALL IN_2_DEC MOV DL,100 MUL DL ;AL*DL=AX MOV DX,AX CALL IN_2_DEC MOV AH,0 ADD AX,DX POP DX POPF RET CODESEG ENDS END START