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 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
| DATA SEGMENT X DW 20 DUP(?) NUM DW 6 DATA ENDS S1 SEGMENT PARA STACK BUF1 DW 20H DUP (0) LEN1 EQU $-BUF1 S1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:S1 GO: MOV AX,DATA MOV DS,AX MOV AX,S1 MOV SS,AX MOV SP,LEN1
MOV CX,NUM MOV SI,OFFSET X
L1: CALL IN_2_HEX MOV AH, AL CALL IN_2_HEX MOV [SI],AX CC: CALL SPACE ADD SI,2 LOOP L1 CALL HR MOV CX,NUM MOV SI,OFFSET X DEC CX
LOOP1: PUSH CX MOV BX,OFFSET X LOOP2: MOV AX,[BX] CMP AX,[BX+2] JGE CONTINUE ;有符号比较 XCHG AX,[BX+2] MOV [BX],AX CONTINUE: ADD BX,2 LOOP LOOP2 POP CX LOOP LOOP1 MOV cx, NUM MOV si,offset X CALL HR dispdec2: MOV AX,[si] call DISP call SPACE add si,2 loop dispdec2 CALL HR MOV si,offset X CALL HR ; 最小数 DEC NUM SHL NUM, 1 ADD SI,NUM MOV AX,[SI] call DISP call SPACE
; 最大数 MOV si,offset X MOV AX,[si] call DISP call SPACE
; 次小数
ADD SI,NUM MOV AX,[SI-2] call DISP call SPACE ; 次大数 MOV si,offset X MOV AX,[SI+2] call DISP call HR MOV AH,4CH INT 21H
IN_2_HEX: PUSHF PUSH BX MOV BH,AH CALL IN_1_HEX ;AL high MOV AH,10H MUL AH ; MOV AH,AL CALL IN_1_HEX ;AL low ADD AL,AH MOV AH,BH POP BX POPF RET
IN_1_HEX: PUSHF PUSH BX MOV BH,AH
MOV AH,01H INT 21H cmp AL,'9' JBE IN_B SUB AL,07H IN_B: ; 'A-F' SUB AL,30H MOV AH,BH POP BX POPF RET
DISP: PUSHF PUSH DX PUSH AX PUSH BX PUSH CX MOV CX,0 MOV BX,10
test AX,8000H;是否为负 JE DISP1 CALL FF ;AND AX,7FFFH NEG AX DISP1: MOV DX,0 DIV BX ;AX,商;DX,余数 PUSH DX INC CX OR AX,AX ;是否为0 JNE DISP1 DISP2: MOV AH,2 POP DX ADD DL,30H INT 21H LOOP DISP2 POP CX POP BX POP AX POP DX POPF RET
SPACE: PUSH DX PUSH AX MOV DL,20H MOV AH,02H INT 21H POP AX POP DX RET
HR: PUSH AX PUSH DX MOV AH,02H MOV DL,0AH INT 21H MOV DL,0DH INT 21H POP DX POP AX RET FF: PUSH DX PUSH AX MOV DL,'-' MOV AH,02H INT 21H POP AX POP DX RET CODE ENDS END GO
|