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

📄 studentmange.asm

📁 学生成绩课程设计
💻 ASM
字号:
;******************************************************************
DATA   SEGMENT
HBCZ DW 76H,88H,66H,99H,88H,66H,65H,55H,62H,82H,76H,79H,53H,95H,68H,78H,66H,55H,55H,62H,82H,43H,95H,98H,78H,66H,65H,55H,72H,82H

WARNING DB '     ************ Press SPACE Key To Exit The Program ************    $'
GUANYU  DB '^_^_^_^_^_^  CLASS: 1052; NO:10210405216; NAME:NINGFEI   ^_^_^_^_^_^$'
NOTICE  DB '@@@@@@@@@@@@@@@@@@@@   THE RESULT IS FOLLOWING   @@@@@@@@@@@@@@@@@@@@$'
BOOK0   DB ' * ----------- 90--100 : $'
BOOK1   DB ' * ------------ 80--89 : $'
BOOK2   DB ' * ------------ 70--79 : $'
BOOK3   DB ' * ------------ 60--69 : $'
BOOK4   DB ' * --------------- <60 : $'
BOOK5   DB ' * --------------- MAX : $'
BOOK6   DB ' * --------------- PJF : $'
S1 DB ?                 ;90-100段人数计数器
S2 DB ?                 ;80-89段人数计数器
S3 DB ?                 ;70-79段人数计数器
S4 DB ?                 ;60-69段人数计数器 
S5 DB ?                 ;<60段人数计数器
PJF DB ?                ;平均值
MAX DB ?                ;最高成绩
DATA   ENDS 
;***************************************
CODE SEGMENT 
     ASSUME CS:CODE,DS:DATA
;----------主程序-------------
MAIN PROC FAR
START: 
      MOV AX,DATA
      MOV DS,AX 
     call ST1      ;统计各分段人数的子程序
     call ST2      ;排序求最大成绩子程序
     call ST3      ;求平均数子程序
DONE: MOV DX,OFFSET WARNING 
      MOV AH,09H
      INT 21H
     CALL CRLF
      MOV AH,01H
      INT 21H
      CMP AL,20H   ;"space ASCII 码 32"
       JZ EXIT
      JMP DONE
EXIT: MOV AH,4CH
      INT 21H
      RET         
         
MAIN ENDP 

;--------成绩分段统计 子程序-----------   
ST1  PROC  NEAR
      LEA SI,HBCZ 
      MOV CX,1EH 
T1:   MOV BX,[SI]
      CMP BX,60H
       JB FAIL
      CMP BX,70H
       JB CHA
      CMP BX,80H
       JB ZHONG
      CMP BX,90H
       JB LIANG
YOU:  INC S1          ;(90-100) 
      JMP DO
LIANG:INC S2          ;(80-89 )
      JMP DO
ZHONG:INC S3          ;(70-79 )
      JMP DO
CHA:  INC S4          ;(60-69 )
      JMP DO
FAIL: INC S5          ;(59-0  )
      JMP DO 
DO:   ADD SI,2
     LOOP T1
     
     CALL CRLF
      MOV DX,OFFSET GUANYU ;分段结果屏幕输出部分
      MOV AH,09H
      INT 21H
     CALL CRLF
     CALL CRLF
      
      MOV DX,OFFSET NOTICE 
      MOV AH,09H
      INT 21H
     CALL CRLF
     CALL CRLF
      
      MOV DX,OFFSET BOOK0  ;输出100分到90分的人数
      MOV AH,09H
      INT 21H
      MOV DL,S1
      ADD DL,30H 
      MOV AH,02H
      INT 21H
     CALL CRLF 
      
      MOV DX,OFFSET BOOK1  ;输出89分到80分的人数
      MOV AH,09H
      INT 21H
      MOV DL,S2
      ADD DL,30H 
      MOV AH,02H
      INT 21H
     CALL CRLF  
 
      MOV DX,OFFSET BOOK2  ;输出79分到70分的人数
      MOV AH,09H
      INT 21H
      MOV DL,S3
      ADD DL,30H 
      MOV AH,02H
      INT 21H
     CALL CRLF 

      MOV DX,OFFSET BOOK3  ;输出69分到60分的人数
      MOV AH,09H
      INT 21H
      MOV DL,S4
      ADD DL,30H 
      MOV AH,02H
      INT 21H
     CALL CRLF  

      MOV DX,OFFSET BOOK4  ;输出60分以下的人数
      MOV AH,09H
      INT 21H
      MOV DL,S5
      ADD DL,30H 
      MOV AH,02H
      INT 21H
     CALL CRLF
     
ST1   ENDP

;-----------回车换行 子程序-----------------
CRLF PROC NEAR             
     MOV DL,0AH 
     MOV AH,02H 
     INT 21H 
     mov DL,0DH 
     mov AH,02H
     INT 21H 
     RET 
CRLF ENDP
;-----------求最高分 子程序-----------------
ST2  PROC  NEAR  
    MOV DX,OFFSET BOOK5
    MOV AH,09H
    INT 21H
    LEA SI,HBCZ   ;排序算法开始
    MOV CX,1EH    ;    |
N1: MOV DX,CX     ;    |
    MOV SI,0      ;    |  
N2: MOV AX,[SI]   ;    |
    CMP AX,[SI+2] ;    |   
    JNB N3        ;    |
   XCHG AX,[SI+2] ;    |
    MOV [SI],AX   ;    |        
N3: ADD SI,2      ;    | 
   LOOP N2        ;    |
    MOV CX,DX     ;    |
   LOOP N1        ;排序算法结束
   
    MOV CX,1EH
    LEA DI,HBCZ   ;将成绩存入从HBPX开始的存储区域
E1: MOV AX,[SI]
    MOV [DI],AX
    ADD DI,2
    ADD SI,2
   LOOP E1
    MOV CX,1E04H
    MOV DI,0
F1: MOV DL,[DI]
    AND DL,0F0H
    SHR DL,CL
    ADD DL,30H
    MOV AH,2
    INT 21H
    MOV DL,[DI]
    AND DL,0FH
    ADD DL,30H
    MOV AH,2
    INT 21H
   CALL CRLF
    RET
ST2 ENDP

;-------------求平均值 子程序----------------
ST3  PROC   NEAR     
    MOV DX,OFFSET BOOK6
    MOV AH,09H
    INT 21H
    LEA SI,HBCZ
    MOV CX,1EH
    MOV DX,0   
M:  MOV AX,[SI]
    ADD DX,AX
    ADD SI,2
   loop M
   
    MOV AX,DX
    MOV DX,0
    MOV CX,1EH
    DIV CX
    MOV PJF,AL
    
    MOV BL,PJF
    MOV DL,BL
    AND DL,0F0H
    MOV CL,4
    SHR DL,CL
    ADD DL,30H
    MOV AH,2
    INT 21H
    
    MOV DL,BL
    AND DL,0FH    
    ADD DL,30H
    MOV AH,2
    INT 21H
   CALL CRLF 
   CALL CRLF  
    RET
ST3 ENDP

CODE    ENDS
;***************************************
        END   START















⌨️ 快捷键说明

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