DATA SEGMENT P1 DB 'INPUT THE 1ST NUM(0-7):$' P2 DB 'INPUT THE 2ST NUM(0-7):$' ERR DB 'BAD FROMAT! INPUT AGAIN:$' PHE DB 'HE(IN H FROMAT):$' PCHA DB 'CHA(IN B FROMAT):$' PJI DB 'JI(IN D FROMAT):$' NUMMIN DB ? NUMMAX DB ? HE DB ? CHA DB ? JI DB ? NOZERO DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX, OFFSET P1 CALL PROMPT LEA DI,NUMMIN CALL INPUT LEA DX,P2 CALL PROMPT LEA DI,NUMMAX CALL INPUT CALL SORT CALL MYADD CALL MYSUB CALL MYMUL CALL DISPHE CALL DISPCHA CALL DISPJI MOV AH,4CH INT 21H ;----------------------------- MYDIV PROC PUSH CX XOR AX, AX MOV AL, BL DIV CL MOV BL, AH ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H POP CX RET MYDIV ENDP ;----------------------------- ;----------------------------- DISPJI PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV DX, OFFSET PJI CALL PROMPT MOV BL, JI MOV CL, 10 CALL MYDIV MOV CL, 1 CALL MYDIV POP DX POP CX POP BX POP AX RET DISPJI ENDP ;----------------------------- ;----------------------------- DISPCHA PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV DX, OFFSET PCHA CALL PROMPT MOV BL, CHA MOV CL, 4 SHL BL, CL MOV CX, 4 NEXTBIT: ROL BL, 1 MOV BH, BL AND BH, 01B JE DISP0 DISP1: MOV DL, '1' MOV AH, 02H INT 21H JMP DISPCHACONTINUE DISP0: MOV DL, '0' MOV AH, 02H INT 21H DISPCHACONTINUE: LOOP NEXTBIT MOV DL, 'B' MOV AH, 02H INT 21H POP DX POP CX POP BX POP AX RET DISPCHA ENDP ;------------------------------- ;----------------------------- DISPHE PROC PUSH AX PUSH CX PUSH DX MOV DX, OFFSET PHE CALL PROMPT MOV BL, HE MOV CH, 2 MOV NOZERO, 0 NEXT4BITS: MOV CL, 4 ROL BL, CL MOV AL, BL AND AL, 0FH CMP AL, 0AH JB DISPHEX ADD AL, 07H DISPHEX: CMP AL, 0 JNE DISP CMP NOZERO, 0 JNE DISP JMP CONTINUE DISP: MOV NOZERO, 1 ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H CONTINUE: SUB CH, 1 JNE NEXT4BITS CMP NOZERO, 0 JNE DISPHEXEXIT MOV DL, 30H MOV AH, 02H INT 21 DISPHEXEXIT: MOV DL, 'H' MOV AH, 02H INT 21H POP DX POP CX POP AX RET DISPHE ENDP ;------------------------------ ;----------------------------- MYMUL PROC PUSH AX XOR AX, AX MOV AL, NUMMIN MUL NUMMAX MOV JI, AL POP AX RET MYMUL ENDP ;-----------------------------
;----------------------------- MYSUB PROC PUSH AX XOR AX, AX MOV AL, NUMMAX SUB AL, NUMMIN MOV CHA, AL POP AX RET MYSUB ENDP ;----------------------------- ;----------------------------- MYADD PROC PUSH AX PUSH DX MOV AL, NUMMIN ADD AL, NUMMAX MOV HE, AL POP DX POP AX RET MYADD ENDP ;----------------------------- ;----------------------------- SORT PROC PUSH AX MOV AL, NUMMIN CMP AL, NUMMAX JBE SORTEXIT XCHG AL, NUMMAX XCHG AL, NUMMIN SORTEXIT: POP AX RET SORT ENDP ;------------------------------
;------------------------------ INPUT PROC PUSH AX PUSH DX INPUTSTART: MOV AH, 01H INT 21H CMP AL, 30H JB INPUTERR CMP AL, 37H JA INPUTERR SUB AL, 30H MOV [DI], AL JMP INPUTEXIT INPUTERR: CALL CRLF MOV DX, OFFSET ERR MOV AH, 09H INT 21H CALL CRLF JMP INPUTSTART INPUTEXIT: POP DX POP AX RET INPUT ENDP ;------------------------------
;------------------------------ PROMPT PROC PUSH AX CALL CRLF MOV AH, 09H INT 21H CALL CRLF POP AX RET PROMPT ENDP ;------------------------------ ;------------------------------ CRLF PROC PUSH DX PUSH AX MOV DL, 0DH MOV AH, 02H INT 21H MOV DL, 0AH MOV AH, 02H INT 21H POP AX POP DX RET CRLF ENDP ;------------------------------ CODE ENDS END START |