MAIND SEGMENT
NUM DB 30 DUP(?)
MAX DB ?
MIN DB ?
MESG1 DB 'MAX:$'
MESG2 DB 'MIN:$'
MAIND ENDS
MAINC SEGMENT
MAIN PROC FAR
ASSUME CS:MAINC,DS:MAIND
START: PUSH DS
XOR AX,AX
PUSH AX
MOV AX,MAIND
MOV DS,AX
CALL KEYIN
CALL S_MAX
CALL S_MIN
JMP MAIN
RET
MAIN ENDP
;-----------------------------
KEYIN PROC NEAR
MOV BL,0
MOV DI,OFFSET NUM
ONCEA: MOV [DI],BL
INC DI
NEWCHAR: MOV AH,01H
INT 21H
CMP AL,0
JZ ONCEA
CMP AL,0DH
JZ EXIT1
SUB AL,30H
JL EXIT2
CMP AL,10
JL TRANS
SUB AL,07H
CMP AL,0AH
JL EXIT2
CMP AL,10H
JGE EXIT2
TRANS: MOV CL,4
SHL BL,CL
ADD BL,AL
JMP NEWCHAR
EXIT1: MOV [DI],BL
INC DI
MOV BYTE PTR[DI],24H
EXIT2: RET
KEYIN ENDP
;----------------------------------------
S_MAX PROC NEAR
MOV DI,OFFSET NUM
MOV DX,OFFSET MESG1
MOV AH,09
INT 21H
BIGER: MOV BL,[DI]
GO: INC DI
CMP DI,24H
JZ CHANGE
CMP BL,[DI]
JBE BIGER
JMP GO
CHANGE: MOV DI,OFFSET MAX
CALL DISP
RET
S_MAX ENDP
;-----------------------------------------
S_MIN PROC NEAR
MOV DI,OFFSET NUM
MOV DX,OFFSET MESG2
MOV AH,09
INT 21H
SMALL: MOV BL,DI
GO1: INC DI
CMP DI,24H
JZ CHANGE1
CMP BL,[DI]
JAE BIGER
JMP GO1
CHANGE1: MOV DI,OFFSET MIN
CALL DISP
RET
S_MIN ENDP
;----------------------------------------
DISP PROC NEAR
MOV [DI],BL
MOV AL,BL
SHR AL
CALL EXZIB
AND BL,0FH
MOV AL,BL
CALL EXZIB
RET
DISP ENDP
;------------------------------------------
EXZIB PROC NEAR
CMP AL,09H
JLE NEXT
ADD AL,37H
JMP DOWN
NEXT: ADD AL,30H
DOWN: MOV DL,AL
MOV AH,02H
INT 21H
RET
EXZIB ENDP
;--------------------------------------------
MAINC ENDS
END START
DATA SEGMENT
DATA1 DB 5 DUP(?)
DATA2 DB 5 DUP(?)
DATA3 DB 5 DUP(?)
NUM1 DB ?
DATA ENDS
ASTACK SEGMENT STACK
DB 40H DUP(?)
ASTACK ENDS
CODE SEGMENT
ASSUME DS:DATA,SS:ASTACK,CS:CODE
START: MOV CX,05H
MOV BX,04H
INPUT1: MOV AH,01H
INT 21H
MOV DATA1[BX],AL
MOV DATA3[BX],AL
DEC BX
LOOP INPUT1
MOV DL,'-'
MOV AH,02H
INT 21H
MOV CX,05H
MOV BX,04H
INPUT2: MOV AH,01H
INT 21H
MOV DATA2[BX],AL
DEC BX
LOOP INPUT2
CLC
MOV BX,0
MOV NUM1,0
MOV CL,5H
MOVE: MOV AL,DATA1[BX]
MOV AH,AL
SUB AL,DATA2[BX]
CLC
SUB AL,NUM1
AAS
MOV DH,0
MOV NUM1,DH
CMP AH,DATA2[BX]
JAE NN
MOV DH,01H
MOV NUM1,DH
NN: ADD AL,30H
MOV DATA1[BX],AL
INC BX
LOOP MOVE
;------------------------负��数时
MOV DL,'='
MOV AH,02H
INT 21H
MOV AL,0
CMP NUM1,AL
JBE NEXT
;---------
MOV DL,'-'
MOV AH,2
INT 21H
MOV CX,05H
MOV BX ,0
MOV NUM1,0
NOVE: MOV AL,DATA2[BX]
MOV AH,AL
SUB AL,DATA3[BX]
CLC
SUB AL,NUM1
AAS
MOV DH,0
MOV NUM1,DH
CMP AH,DATA3[BX]
JAE XN
MOV DH,01H
MOV NUM1,DH
XN: ADD AL,30H
MOV DATA1[BX],AL
INC BX
LOOP NOVE
NEXT: MOV CX,05H
MOV BX,04H
OUTPUT: MOV DL,DATA1[BX]
MOV AH,02H
INT 21H
DEC BX
LOOP OUTPUT
MOV AH,01H
INT 21H
CODE ENDS
END START
HLT
有错误