DISPLAY MACRO MSG
LEA DX,MSG
MOV AH,09H
INT 21H
ENDM

CLEAR_REG MACRO
XOR BX,BX
XOR DX,DX
XOR CX,CX
XOR AX,AX
ENDM

INPUT MACRO
CLEAR_REG
MOV AX,NUM1
MOV BX,NUM2
ENDM

OUTPUT MACRO NUM
CLEAR_REG
MOV AX,NUM
CALL DISP
ENDM

.MODEL SMALL
.STACK
.DATA

MSG1 DB 0AH,0DH,"ENTER THE FIRST NUMBER:$"
MSG2 DB 0AH,0DH,"ENTER THE SECOND NUMBER:$"
MSG3 DB 0AH,0DH,"SUM:$"
MSG4 DB 0AH,0DH,"DIFFERENCE:$"
MSG5 DB 0AH,0DH,"PRODUCT:$"
MSG6 DB 0AH,0DH,"QUOTIENT:$"
MSG7 DB 0AH,0DH,"REMAINDER:$"

NUM1 DW ?
NUM2 DW ?
TEMP DW 0
SUM DW  0
DIFF DW 0
PRD1 DW 0
QUO DW 0
REM DW 0

.CODE
START:

MOV AX,@DATA
MOV DS,AX

DISPLAY MSG1
CALL READ
MOV NUM1,AX

DISPLAY MSG2
CALL READ
MOV NUM2,AX

INPUT
ADD AX,BX
MOV SUM,AX

INPUT
SUB AX,BX
MOV DIFF,AX

INPUT
MUL BX
MOV PRD1,AX

INPUT
DIV BX
MOV QUO,AX
MOV REM,DX

DISPLAY MSG3
OUTPUT SUM

DISPLAY MSG4
OUTPUT DIFF

DISPLAY MSG5
OUTPUT PRD1

DISPLAY MSG6
OUTPUT QUO

DISPLAY MSG7
OUTPUT REM

.EXIT


READ PROC
MOV AX,00
MOV CX,04H

L1:
MOV DL,10
MUL DX
MOV TEMP,AX
MOV AH,01H
INT 21H
SUB AL,30H
MOV AH,00
MOV BX,TEMP
ADD AX,BX
LOOP L1
RET
READ ENDP

DISP PROC
MOV BX,10
MOV CX,00H
L2:
MOV DX,00H
INC CX
DIV BX
PUSH DX
CMP AX,00H
JNE L2
L3:
POP DX
ADD DL,30H
MOV AH,02H
INT 21H
LOOP L3
RET
DISP ENDP
END START