⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dos.txt

📁 从键盘上输入某班学生的某科目成绩.输入按学生的学号由小到大的顺序输入,统计检查每个学生的名次.将统计结果在屏幕上显示.
💻 TXT
字号:
DATA  SEGMENT
       ERROR  DB        'please input again','$'
      BUFFER  DB        100
              DB        0
              DB        100 DUP(0)
 OTHER_ARRAY  DB        100 DUP(0)
 FINAL_ARRAY  DB        100 DUP(0)
      RESULT  DB        100 DUP(0)
        TEMP  DW        0H
        DATA  ENDS
         STA  SEGMENT   STACK'stack'
              DB        100H DUP(0)
         STA  ENDS
        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA,SS:STA
        MAIN  PROC      FAR
              PUSH      DS
              XOR       AX,AX
              PUSH      AX
              MOV       AX,DATA
              MOV       DS,AX
     RETREY:  LEA       AX,BUFFER
              PUSH      AX
              LEA       AX,ERROR
              PUSH      AX
              CALL      KEYIN
              LEA       DI,OTHER_ARRAY
              MOV       DX,0
              LEA       SI,BUFFER
              MOV       CL,BYTE PTR[SI+1]
              MOV       CH,0
              PUSH      CX
      LOOP1:  MOV       AL,BYTE PTR[SI+2]
              SUB       AL,20H
              JNZ       LOAD
              INC       SI
              LOOP      LOOP1
              JMP       SHIFT
       LOAD:  MOV       AL,BYTE PTR[SI+2]
              SUB       AL,'0'
              MOV       BYTE PTR[DI],AL
              INC       SI
              INC       DI
              INC       DX
              LOOP      LOOP1
      SHIFT:  SHR       DX,1
              MOV       TEMP ,DX
              MOV       CX,DX
              LEA       DI,OTHER_ARRAY
              MOV       SI,0H
              PUSH      CX
              SHL       CX,1
              MOV       DH,0H
   ORIGINAL:  MOV       DL,[OTHER_ARRAY+SI]
              TEST      SI,0001H
              JZ        ZERO
              JMP       ZI
       ZERO:  PUSH      DX
              MOV       AH,02H
              MOV       DL,20H
              INT       21H
              POP       DX
         ZI:  ADD       DL,30H
              MOV       AH,02H
              INT       21H
              INC       SI
              LOOP      ORIGINAL
              MOV       AH,02H
              MOV       DL,0DH
              INT       21H
              MOV       AH,02H
              MOV       DL,0AH
              INT       21H
              POP       CX
      LOOP2:  MOV       AH,[DI]
              MOV       AL,[DI+1]
              MOV       [DI],AL
              MOV       [DI+1],AH
              INC       DI
              INC       DI
              LOOP      LOOP2
              MOV       SI,0H
              POP       CX
              SHL       CX,1
      WRONG:  MOV       AL,BYTE PTR[OTHER_ARRAY+SI]
              ADD       AL,'0'
              CMP       AL,40H
              INC       SI
              JA        GET_BACK
              LOOP      WRONG
              JMP       FUC
   GET_BACK:  LEA       DX,ERROR
              MOV       AH,09H
              INT       21H
              MOV       AH,02H
              MOV       DL,0DH
              INT       21H
              MOV       AH,02H
              MOV       DL,0AH
              INT       21H
              JMP       RETREY
        FUC:  LEA       AX,FINAL_ARRAY
              PUSH      AX
              LEA       AX,OTHER_ARRAY
              PUSH      AX
              PUSH      DX
              CALL      FUNCTION1
              LEA       AX,FINAL_ARRAY
              PUSH      AX
              LEA       AX,OTHER_ARRAY
              PUSH      AX
              PUSH      DX
              CALL      SORT
              LEA       AX,FINAL_ARRAY
              PUSH      AX
              LEA       AX,OTHER_ARRAY
              PUSH      AX
              CALL      LOOK
              MOV       AX, 4C00H
              INT       21H
        MAIN  ENDP
   FUNCTION1  PROC      NEAR
              PUSH      BP
              MOV       BP,SP
              MOV       SI,[BP+6]
              MOV       DI,[BP+8]
              MOV       CX,[BP+4]
              MOV       BL,1
      LOOPA:  MOV       AX,WORD PTR[SI]
              MOV       WORD PTR[DI],AX
              MOV       BYTE PTR[DI+2],BL
              INC       BL
              INC       SI
              INC       SI
              INC       DI
              INC       DI
              INC       DI
              LOOP      LOOPA
              POP       BP
              RET       6
   FUNCTION1  ENDP
       KEYIN  PROC      NEAR
              PUSH      BP
              MOV       BP,SP
      AGAIN:  MOV       AX ,[BP+6]
              MOV       DX,AX
              MOV       AH,0AH
              INT       21H
              POP       BP
              RET       4
       KEYIN  ENDP
        SORT  PROC      NEAR
              PUSH      BP
              MOV       BP,SP
              MOV       AX,[BP+6]
              MOV       SI,AX
              MOV       CX,WORD PTR[BP+4]
              PUSH      CX
       COTI:  MOV       BL,0
              MOV       CX,WORD PTR[BP+4]
              MOV       DI,CX
              SHL       DI,1
              DEC       DI
              DEC       DI
              DEC       CX
       AGAN:  MOV       AX,WORD PTR[OTHER_ARRAY+DI]
              CMP       AX,WORD PTR[OTHER_ARRAY+DI-2]
              JGE       NEXT
              XCHG      AX,WORD PTR[OTHER_ARRAY+DI-2]
              MOV       WORD PTR[OTHER_ARRAY+DI],AX
              MOV       BL,-1
       NEXT:  DEC       DI
              DEC       DI
              LOOP      AGAN
              CMP       BL,0
              JNE       COTI
              POP       CX
              POP       BP
              RET       6
        SORT  ENDP
        LOOK  PROC      NEAR
              PUSH      BP
              MOV       BP,SP
              PUSH      CX
              MOV       BX,CX
              SHL       BX ,1
              DEC       BX
              DEC       BX
              MOV       SI ,0
      LOOPB:  MOV       DI,0H
              MOV       AX,  WORD PTR[OTHER_ARRAY+BX]
      LOOPC:  CMP       AX,WORD PTR[FINAL_ARRAY+DI]
              JNZ       RETURN
              MOV       AL,BYTE PTR[FINAL_ARRAY+DI+2]
              MOV       [RESULT+SI],AL
              DEC       BX
              DEC       BX
              INC       SI
              LOOP      LOOPB
              JMP       F2
     RETURN:  INC       DI
              INC       DI
              INC       DI
              JMP       LOOPC
         F2:  MOV       CX,TEMP
              MOV       SI,0H
        LOE:  MOV       AH,02H
              MOV       DL,[RESULT+SI]
              ADD       DL,'0'
              INT       21H
              INC       SI
              MOV       DL,20H
              MOV       AH,02H
              INT       21H
              LOOP      LOE
              POP       BP
              RET       6
        LOOK  ENDP
        CODE  ENDS
              END       MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -