-
Notifications
You must be signed in to change notification settings - Fork 0
/
5.Competition Score.arm
141 lines (129 loc) · 2.3 KB
/
5.Competition Score.arm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
DATA SEGMENT
STRING DB 13, 10, 'Please iuput number_1 : $'
STRING2 DB 13, 10, 'The average is : $'
MESSAGE DB "error!!!",0AH,0DH,'$'
NUM DB 7 DUP (?)
MAX DB 0
MIN DB 100
N_SUM DW ?
NUM_X DB ?
DATA ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV CX, 7
MOV SI, 0
IN_X:
MOV DX, OFFSET STRING
MOV AH, 9
INT 21H
CALL INPUT
MOV NUM[SI], BL
INC SI
INC STRING + 24
LOOP IN_X
CALL SUM
MOV N_SUM, BX
MOV AL, MAX
MOV AH, 0
SUB BX, AX
MOV AL, MIN
MOV AH, 0
SUB BX, AX
MOV AX, 5
XCHG AX, BX
DIV BL
MOV NUM_X, AH ;商:AL 余数:AH
MOV AH, 0
XCHG AX, BX
MOV DX, OFFSET STRING2
MOV AH, 9
INT 21H
CALL OUTPUT
CALL OUTPUT2
EXIT:
MOV AH, 4CH
INT 21H
SUM:
MOV BX, 0
MOV CX, 7
MOV SI, 0
LP1:
MOV AL, NUM[SI]
CMP AL, MAX
JB LP2
MOV MAX, AL
LP2:
CMP AL, MIN
JA HE
MOV MIN, AL
HE:
MOV AH, 0
ADD BX, AX
INC SI
LOOP LP1
RET
INPUT:
PUSH CX
MOV BX, 0
MOV CX, 2
IN_1:
MOV AH, 1
INT 21H
CMP AL, 13 ;空格
JZ IN_END
CMP AL, '0'
JB ERROR
CMP AL, '9'
JA ERROR
AND AL, 0FH ;高4位清零
MOV AH, 0
XCHG AX, BX
MOV DL, 10
MUL DL ;积:AX
ADD AX, BX
XCHG AX, BX
LOOP IN_1
IN_END:
POP CX
RET
OUTPUT2:
MOV AH, 02H
MOV DL, '.' ;小数点
INT 21H
MOV AL, NUM_X
MOV BL, 10
MUL BL
MOV BL, 5
DIV BL
MOV NUM_X, AH
ADD AL, '0'
MOV DL, AL
MOV AH, 2
INT 21H
RET
OUTPUT:
MOV AX, BX
MOV BL, 10
DIV BL
ADD AX, 3030H
MOV DX, AX
MOV AH, 2
INT 21H
MOV DL, DH
INT 21H
RET
ERROR:
MOV DL,0AH ;回车
MOV AH,2
INT 21H
MOV DX,OFFSET MESSAGE ;输入提示
MOV AH,09
INT 21H
CODE ENDS
END START