文章目录

  • 前言
  • 一、程序完整的代码
  • 二、各各子程序的功能讲解
    • 1.登入功能
    • 2.菜单功能
    • 3.输入功能
    • 4.输出功能
    • 5.成绩排序功能
    • 6.不及格人数统计功能
    • 7.删除学习信息功能
    • 8.插入学生信息功能
    • 9.修改学生信息功能
    • 10.求学生的平均成绩
  • 总结

前言

汇编综合实验–学生管理系统














一、程序完整的代码

代码如下(示例):

DATA SEGMENTSTRING_1 DB "********************************","$"STRING_2 DB "ENTER YOUR PIN ","$"STRING_3 DB "1.Input message","$"STRING_4 DB "2.Score sort","$"STRING_5 DB "3.Failed in statistics","$"STRING_6 DB "4.Output","$"STRING_14 DB "5.Average","$"STRING_7 DB "6.Delete","$"STRING_18 DB "7.Insertion!","$"STRING_19 DB "8.Modify!","$"STRING_15 DB "9.BREAK!","$"STRING_8 DB "INPUT NAME: ","$"STRING_9 DB "INPUT NUM: ","$"STRING_10 DB "INPUT SCORE: ","$"STRING_11 DB "NAME: ","$"STRING_12 DB "     NUM: ","$"STRING_13 DB "     SCORE: ","$"STRING_16 DB "INPUT NAME(DELECT): ","$"STRING_20 DB "INPUT NAME(MODIFY): ","$"STRING_17 DB "INPUT MESSAGE(INSERTION): ","$"FIRST DB "usename: ","$"SECOND DB "password: ","$"NAME1 DB 'yy'PASSWORD DB '123456'TEMPNAME DB 15,?,15 dup (?)TEMPPASSWORD DB 15 dup (?)WELCOME DB 'welcome!','$'ERROR DB "ERROR!","$"SUM DW ?SAVERAGE DB 'Average: ','$'NUMPASS  DW  ?NUM DW 4ARRAY  DB 10 DUP(?)SUNP DB 'Number of fails: ','$'NAMES DB 120 DUP(?)           NUMS   DB 120 DUP(?)FINDNAME DB 10 DUP(?)SUNF   DB   "UNFOUND","$"SUNS   DB   "SUCCESSFUL !","$"
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXMOV ES,AXCALL PINCMP BX,1JE BREAKWHILE:CALL MENUMOV AH,01HINT 21HSUB AL,30HCALL CASECMP AL,9JNE WHILEBREAK:MOV AH,4CHINT 21HPIN PROC NEARMOV DX,OFFSET STRING_2MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET FIRSTMOV AH,09HINT 21HMOV AH,0AHMOV DX,OFFSET TEMPNAMEINT 21HCMP BYTE PTR TEMPNAME+1,02HJNE EXIT1MOV CX,2MOV SI,OFFSET NAME1MOV DI,OFFSET TEMPNAME+2CLDREPE CMPSBJNZ EXIT1MOV DL,0AHMOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET SECONDINT 21HMOV SI,OFFSET TEMPPASSWORDMOV CX,0INTPUTPASS:MOV AH,07HINT 21HMOV [SI],ALCMP AL,0DHJE CONTINUEPMOV AH,2MOV DL,'*'INT 21HINC SIINC CXJMP INTPUTPASSCONTINUEP:CMP CX,06H;JNZ EXIT1MOV CX,6MOV SI,OFFSET PASSWORDMOV DI,OFFSET TEMPPASSWORDMOV AX,DATACLDREPE CMPSBJNZ EXIT1MOV DL,0AHMOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET WELCOMEINT 21HJMP OUT1EXIT1:MOV BX,1MOV DL,0AHMOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET ERRORINT 21HOUT1:RET
PIN ENDPMENU PROC NEARPUSH DXPUSH AXMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_1MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_3MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_4MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_5MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_6MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_14MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_7MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_18MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_19MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_15MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_1MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HPOP AXPOP DXRET
MENU ENDPCASE PROC NEAR PUSH AXMOV BL,1CMP AL,BLJNE CASE2MOV DL,0AHMOV AH,02HINT 21HMOV CX,NUMMOV DI,0NEXTYY:CALL INPUTSINC DILOOP NEXTYYMOV DL,0AHMOV AH,02HINT 21HJMP EXITCASE2:MOV BL,2CMP AL,BLJNE CASE3CALL SORTSMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET SUNSMOV AH,09HINT 21H JMP EXITCASE3:MOV BL,3CMP AL,BLJNE CASE4MOV DL,0AHMOV AH,02HINT 21HCALL FUNPASSJMP EXITCASE4:MOV BL,4CMP AL,BLJNE CASE5MOV CX,NUMMOV DI,0CONTINUEOUTPUTS:CALL OUTPUTSINC DILOOP CONTINUEOUTPUTSMOV DL,0AHMOV AH,02HINT 21HJMP EXITCASE5:MOV BL,5CMP AL,BLJNE CASE6MOV DL,0AHMOV AH,02HINT 21HCALL FAVERAGEJMP EXITCASE6:MOV BL,6CMP AL,BLJNE CASE7MOV DL,0AHMOV AH,02HINT 21HCALL FDELETEJMP EXITCASE7:MOV BL,7CMP AL,BLJNE CASE8MOV DL,0AHMOV AH,02HINT 21HCALL INSERTIONJMP EXITCASE8:MOV BL,8CMP AL,BLJNE CASE9MOV DL,0AHMOV AH,02HINT 21HCALL   FMODIFYJMP EXITCASE9:MOV BL,9CMP AL,BLJNE EXITMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_15MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21H   JMP EXITEXIT:POP AXRET
CASE ENDPINPUTS PROC NEARPUSH AXPUSH CXPUSH BXPUSH DXMOV AH,09HMOV DX,OFFSET STRING_8INT 21HMOV SI,1MOV AX,DIMOV BX,10MUL BXMOV BX,AXMOV DX,0INTPUTNAME:MOV AH,01HINT 21HCMP AL,0DHJE CONTINUENUMMOV NAMES[BX+SI],AL INC SIINC DXJMP INTPUTNAMECONTINUENUM:MOV NAMES[BX],DLMOV AH,09HMOV DX,OFFSET STRING_9INT 21HMOV SI,1MOV DX,0INTPUTNUM:MOV AH,01HINT 21HCMP AL,0DHJE CONTINUESMOV NUMS[BX+SI],ALINC SIINC DXJMP INTPUTNUMCONTINUES:MOV NUMS[BX],DLMOV AH,09HMOV DX,OFFSET STRING_10INT 21HCALL DEINPUTMOV ARRAY[DI],BLPOP DXPOP BXPOP CXPOP AX
INPUTS ENDPDEINPUT PROC NEARMOV BX,0GO:MOV AH,01HINT 21HSUB AL,30HJL EXITDECMP AL,9 JG EXITDECBWXCHG AX,BXMOV DX,10MUL DXXCHG AX,BXADD BX,AXJMP GOEXITDE:RET
DEINPUT ENDPOUTPUTS PROC NEARMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_11MOV AH,09HINT 21HMOV BX,10MOV AX,DIMUL BXMOV BX,AXMOV DH,NAMES[BX]MOV SI,1OUTPUTNAME:MOV DL,NAMES[BX+SI]MOV AH,02HINT 21HINC SIDEC DHCMP DH,0JNE OUTPUTNAMEMOV DX,OFFSET STRING_12MOV AH,09HINT 21HMOV DH,NUMS[BX]MOV SI,1OUTPUTNUM:MOV DL,NUMS[BX+SI]MOV AH,02HINT 21HINC SIDEC DHCMP DH,0JNE OUTPUTNUMMOV DX,OFFSET STRING_13MOV AH,09HINT 21HMOV AL,ARRAY[DI]MOV AH,0CALL DEOUTRET
OUTPUTS ENDPDEOUT PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV CX,0NEXT:MOV DX,0MOV BX,10DIV BXPUSH DXINC CXCMP AX,0JNE NEXT    OUTS:POP DXADD DL,30HMOV AH,02HINT 21HLOOP OUTSPOP DXPOP CXPOP BXPOP AXRET
DEOUT ENDPFUNPASS   PROC   NEARPUSH   AXPUSH   DXPUSH   BXPUSH   DIMOV   DI,0MOV  CX,NUMMOV NUMPASS,0JUG_UNP:MOV   AL,ARRAY[DI]MOV AH,0CMP   AX,60JNB   NEXT_UNPINC   NUMPASSCALL OUTPUTSNEXT_UNP:INC DILOOP  JUG_UNPMOV DL,0AHMOV AH,02HINT 21HLEA  DX,SUNPMOV   AH,9INT   21HMOV   AX,NUMPASSCALL   DEOUTMOV   DL,0AHMOV   AH,2INT   21HPOP   DIPOP   BXPOP   DXPOP   AXRET
FUNPASS   ENDPFAVERAGE   PROC   NEARPUSH   AXPUSH   BXPUSH   DXPUSH   DIMOV   DI,0MOV SUM,DIMOV CX,NUMLEA  DX,SAVERAGEMOV   AH,9INT   21HFSUM:MOV  AL,ARRAY[DI]MOV AH,0ADD   SUM,AXINC DILOOP   FSUMMOV   DX,0MOV   AX,SUMMOV   BX,NUMMOV   CX,100DIV   BXCALL   DEOUTPUSH   DXMOV   DL,'.'MOV   AH,02HINT   21HPOP   DXMOV   AX,DXMUL   CXMOV   DX,0DIV   BXCALL   DEOUTMOV   DL,0AHMOV   AH,2INT   21HPOP   DIPOP   DXPOP   BXPOP   AXRET
FAVERAGE   ENDPCHANGE PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV BX,0MOV CX,10MOV AX,DIMUL CXMOV DI,AXMOV AX,SIMUL CXMOV SI,AXNEXTC:MOV AL,NAMES[SI+BX]MOV DL,NAMES[DI+BX]MOV NAMES[DI+BX],ALMOV NAMES[SI+BX],DLMOV AL,NUMS[SI+BX]MOV DL,NUMS[DI+BX]MOV NUMS[DI+BX],ALMOV NUMS[SI+BX],DLINC BXCMP BX,10JNE NEXTCPOP DXPOP CXPOP BXPOP AXRET
CHANGE ENDPSORTS PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV DI,0MOV SI,0MOV CX,NUMDEC CXSORTF1:MOV SI,DIINC SISORTF2:MOV AL,ARRAY[DI]MOV BL,ARRAY[SI]CMP AL,BLJNA NEXTSORTMOV ARRAY[DI],BLMOV ARRAY[SI],ALPUSH DIPUSH SICALL CHANGEPOP SIPOP DINEXTSORT:INC SICMP SI,NUMJNE SORTF2INC DILOOP SORTF1POP DXPOP CXPOP BXPOP AXRET
SORTS ENDPFDELETE   PROC   NEARPUSH   DXPUSH   BXPUSH   SIPUSH   DIMOV DX,OFFSET STRING_16MOV AH,09HINT 21H CALL   FFINDJZ   DELETEJMP   EXIT_DDELETE:DEC   CXJCXZ   DEC_CNTNEXT_EL:ADD   BX,10       INC   DXPUSH   CXMOV   CL,NUMS[BX]MOV   SI,1TRANS_NUMS:MOV   Al,NUMS[BX+SI]MOV   NUMS[BX-10+SI],AlINC   SILOOP   TRANS_NUMS MOV   CL,NAMES[BX]MOV   SI,1TRANS_NAMES:MOV   Al,NAMES[BX+SI]MOV   NAMES[BX-10+SI],AlINC   SILOOP   TRANS_NAMES TRANS_SCORES:POP   CXMOV   DI,DXMOV   Al,ARRAY[DI]MOV   ARRAY[DI-1],AlLOOP   NEXT_ELDEC_CNT:DEC   NUM  MOV DX,OFFSET SUNSMOV AH,09HINT 21H EXIT_D:POP  DIPOP  SIPOP   BXPOP   DXRET
FDELETE   ENDP  INSERTION PROC NEARMOV DX,OFFSET STRING_17MOV AH,09HINT 21H MOV DL,0AHMOV AH,02HINT 21HMOV DI,NUMCALL INPUTSINC NUMMOV DX,OFFSET SUNSMOV AH,09HINT 21H CALL SORTSRET
INSERTION ENDPFMODIFY   PROC   NEARPUSH   DXPUSH   AXPUSH   BXPUSH   CXMOV DX,OFFSET STRING_20MOV AH,09HINT 21H CALL   FFINDJZ   MODIFYJMP   EXIT_MMODIFY:MOV  AX,BXMOV  DX,0MOV  CX,10DIV   CXMOV   DI,AXCALL   INPUTSEXIT_M:POP   CXPOP   BXPOP   AXPOP   DXRET         FMODIFY   ENDP FFIND   PROC   NEARPUSH   DIPUSH   AXPUSH   SIMOV   DI,1MOV   BL,0IN_F:MOV   AH,01H  INT 21H CMP AL,0DHJE   NEXT_FINC BLMOV   FINDNAME[DI],ALINC   DIJMP   IN_FNEXT_F:MOV   FINDNAME[0],BL          MOV   BX,0MOV   DX,0MOV   CX,NUMMOV   SI,1FIND_F:   PUSH   CXMOV  AL,NAMES[BX]CMP  AL,FINDNAME[0]JNE   UNFOUNDLEA   DI,FINDNAME[1]LEA   SI,NAMES[BX+SI]MOV   CL,NAMES[BX]CLD   REPE CMPSBJZ   FOUNDUNFOUND:POP   CXADD   BX,10INC   DXMOV   SI,1LOOP   FIND_FLEA   DX,SUNFMOV   AH,09HINT   21HJMP   EXIT_FFOUND:POP   CXEXIT_F:POP   SIPOP   AXPOP   DXRET
FFIND   ENDP
CODE ENDSEND START

二、各各子程序的功能讲解

1.登入功能

思路:首先调用dos 0A功能输入一个用户名,利用串匹配与事先在数据段存的用户名进行比较,如果ZF寄存器位1则说明输入的用户名正确,输入密码由于要求输入数据变星号(*),则不能直接调用0A功能,这时就要调用07功能输入不回显,并在输入一个字符后输出一个星号,输入成功后就与比较用户名一样比较密码,如果输入账号正确则提示成功并进入学生管理系统,反之提示错误。

代码如下:

PIN PROC NEARMOV DX,OFFSET STRING_2MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET FIRSTMOV AH,09HINT 21HMOV AH,0AHMOV DX,OFFSET TEMPNAMEINT 21HCMP BYTE PTR TEMPNAME+1,02HJNE EXIT1MOV CX,2MOV SI,OFFSET NAME1MOV DI,OFFSET TEMPNAME+2CLDREPE CMPSBJNZ EXIT1MOV DL,0AHMOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET SECONDINT 21HMOV SI,OFFSET TEMPPASSWORDMOV CX,0INTPUTPASS:MOV AH,07HINT 21HMOV [SI],ALCMP AL,0DHJE CONTINUEPMOV AH,2MOV DL,'*'INT 21HINC SIINC CXJMP INTPUTPASSCONTINUEP:CMP CX,06H;JNZ EXIT1MOV CX,6MOV SI,OFFSET PASSWORDMOV DI,OFFSET TEMPPASSWORDMOV AX,DATACLDREPE CMPSBJNZ EXIT1MOV DL,0AHMOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET WELCOMEINT 21HJMP OUT1EXIT1:MOV BX,1MOV DL,0AHMOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET ERRORINT 21HOUT1:RET
PIN ENDP

2.菜单功能

思路:利用JMP JNE跳转,模拟C的switch case,输入1跳到1号功能以此类推。
代码如下(示例):

MENU PROC NEARPUSH DXPUSH AXMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_1MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_3MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_4MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_5MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_6MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_14MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_7MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_18MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_19MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_15MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_1MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21HPOP AXPOP DXRET
MENU ENDPCASE PROC NEAR PUSH AXMOV BL,1CMP AL,BLJNE CASE2MOV DL,0AHMOV AH,02HINT 21HMOV CX,NUMMOV DI,0NEXTYY:CALL INPUTSINC DILOOP NEXTYYMOV DL,0AHMOV AH,02HINT 21HJMP EXITCASE2:MOV BL,2CMP AL,BLJNE CASE3CALL SORTSMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET SUNSMOV AH,09HINT 21H JMP EXITCASE3:MOV BL,3CMP AL,BLJNE CASE4MOV DL,0AHMOV AH,02HINT 21HCALL FUNPASSJMP EXITCASE4:MOV BL,4CMP AL,BLJNE CASE5MOV CX,NUMMOV DI,0CONTINUEOUTPUTS:CALL OUTPUTSINC DILOOP CONTINUEOUTPUTSMOV DL,0AHMOV AH,02HINT 21HJMP EXITCASE5:MOV BL,5CMP AL,BLJNE CASE6MOV DL,0AHMOV AH,02HINT 21HCALL FAVERAGEJMP EXITCASE6:MOV BL,6CMP AL,BLJNE CASE7MOV DL,0AHMOV AH,02HINT 21HCALL FDELETEJMP EXITCASE7:MOV BL,7CMP AL,BLJNE CASE8MOV DL,0AHMOV AH,02HINT 21HCALL INSERTIONJMP EXITCASE8:MOV BL,8CMP AL,BLJNE CASE9MOV DL,0AHMOV AH,02HINT 21HCALL   FMODIFYJMP EXITCASE9:MOV BL,9CMP AL,BLJNE EXITMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_15MOV AH,09HINT 21HMOV DL,0AHMOV AH,02HINT 21H   JMP EXITEXIT:POP AXRET
CASE ENDP

3.输入功能

思路:对于输入功能,主要分为两类:一类是学号姓名的输入,就直接调用dos 01输入一个字符一个字符的输入,而对于成绩把输入的字符串转换为数字。
代码如下(示例):

INPUTS PROC NEARPUSH AXPUSH CXPUSH BXPUSH DXMOV AH,09HMOV DX,OFFSET STRING_8INT 21HMOV SI,1MOV AX,DIMOV BX,10MUL BXMOV BX,AXMOV DX,0INTPUTNAME:MOV AH,01HINT 21HCMP AL,0DHJE CONTINUENUMMOV NAMES[BX+SI],AL INC SIINC DXJMP INTPUTNAMECONTINUENUM:MOV NAMES[BX],DLMOV AH,09HMOV DX,OFFSET STRING_9INT 21HMOV SI,1MOV DX,0INTPUTNUM:MOV AH,01HINT 21HCMP AL,0DHJE CONTINUESMOV NUMS[BX+SI],ALINC SIINC DXJMP INTPUTNUMCONTINUES:MOV NUMS[BX],DLMOV AH,09HMOV DX,OFFSET STRING_10INT 21HCALL DEINPUTMOV ARRAY[DI],BLPOP DXPOP BXPOP CXPOP AX
INPUTS ENDPDEINPUT PROC NEARMOV BX,0GO:MOV AH,01HINT 21HSUB AL,30HJL EXITDECMP AL,9 JG EXITDECBWXCHG AX,BXMOV DX,10MUL DXXCHG AX,BXADD BX,AXJMP GOEXITDE:RET
DEINPUT ENDP

4.输出功能

思路:输出功能类似于输入功能,只要区别是输出数字还是字符串
代码如下(示例):

OUTPUTS PROC NEARMOV DL,0AHMOV AH,02HINT 21HMOV DX,OFFSET STRING_11MOV AH,09HINT 21HMOV BX,10MOV AX,DIMUL BXMOV BX,AXMOV DH,NAMES[BX]MOV SI,1OUTPUTNAME:MOV DL,NAMES[BX+SI]MOV AH,02HINT 21HINC SIDEC DHCMP DH,0JNE OUTPUTNAMEMOV DX,OFFSET STRING_12MOV AH,09HINT 21HMOV DH,NUMS[BX]MOV SI,1OUTPUTNUM:MOV DL,NUMS[BX+SI]MOV AH,02HINT 21HINC SIDEC DHCMP DH,0JNE OUTPUTNUMMOV DX,OFFSET STRING_13MOV AH,09HINT 21HMOV AL,ARRAY[DI]MOV AH,0CALL DEOUTRET
OUTPUTS ENDPDEOUT PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV CX,0NEXT:MOV DX,0MOV BX,10DIV BXPUSH DXINC CXCMP AX,0JNE NEXT    OUTS:POP DXADD DL,30HMOV AH,02HINT 21HLOOP OUTSPOP DXPOP CXPOP BXPOP AXRET
DEOUT ENDP

5.成绩排序功能

思路:排序我这里用的是选择排序(由于选择排序比较简单我这里就不赘述了),排序的难点在于数据的交换,对于成绩可以直接交换,但对于学号姓名就要求一个一个字符交换了。
代码如下(示例):

CHANGE PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV BX,0MOV CX,10MOV AX,DIMUL CXMOV DI,AXMOV AX,SIMUL CXMOV SI,AXNEXTC:MOV AL,NAMES[SI+BX]MOV DL,NAMES[DI+BX]MOV NAMES[DI+BX],ALMOV NAMES[SI+BX],DLMOV AL,NUMS[SI+BX]MOV DL,NUMS[DI+BX]MOV NUMS[DI+BX],ALMOV NUMS[SI+BX],DLINC BXCMP BX,10JNE NEXTCPOP DXPOP CXPOP BXPOP AXRET
CHANGE ENDPSORTS PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV DI,0MOV SI,0MOV CX,NUMDEC CXSORTF1:MOV SI,DIINC SISORTF2:MOV AL,ARRAY[DI]MOV BL,ARRAY[SI]CMP AL,BLJNA NEXTSORTMOV ARRAY[DI],BLMOV ARRAY[SI],ALPUSH DIPUSH SICALL CHANGEPOP SIPOP DINEXTSORT:INC SICMP SI,NUMJNE SORTF2INC DILOOP SORTF1POP DXPOP CXPOP BXPOP AXRET
SORTS ENDP

6.不及格人数统计功能

思路:这个比较简单就不赘述了
代码如下(示例):

FUNPASS   PROC   NEARPUSH   AXPUSH   DXPUSH   BXPUSH   DIMOV   DI,0MOV  CX,NUMMOV NUMPASS,0JUG_UNP:MOV   AL,ARRAY[DI]MOV AH,0CMP   AX,60JNB   NEXT_UNPINC   NUMPASSCALL OUTPUTSNEXT_UNP:INC DILOOP  JUG_UNPMOV DL,0AHMOV AH,02HINT 21HLEA  DX,SUNPMOV   AH,9INT   21HMOV   AX,NUMPASSCALL   DEOUTMOV   DL,0AHMOV   AH,2INT   21HPOP   DIPOP   BXPOP   DXPOP   AXRET
FUNPASS   ENDP

7.删除学习信息功能

思路:这个比较简单就不赘述了。
代码如下(示例):

FDELETE   PROC   NEARPUSH   DXPUSH   BXPUSH   SIPUSH   DIMOV DX,OFFSET STRING_16MOV AH,09HINT 21H CALL   FFINDJZ   DELETEJMP   EXIT_DDELETE:DEC   CXJCXZ   DEC_CNTNEXT_EL:ADD   BX,10       INC   DXPUSH   CXMOV   CL,NUMS[BX]MOV   SI,1TRANS_NUMS:MOV   Al,NUMS[BX+SI]MOV   NUMS[BX-10+SI],AlINC   SILOOP   TRANS_NUMS MOV   CL,NAMES[BX]MOV   SI,1TRANS_NAMES:MOV   Al,NAMES[BX+SI]MOV   NAMES[BX-10+SI],AlINC   SILOOP   TRANS_NAMES TRANS_SCORES:POP   CXMOV   DI,DXMOV   Al,ARRAY[DI]MOV   ARRAY[DI-1],AlLOOP   NEXT_ELDEC_CNT:DEC   NUM  MOV DX,OFFSET SUNSMOV AH,09HINT 21H EXIT_D:POP  DIPOP  SIPOP   BXPOP   DXRET
FDELETE   ENDP

8.插入学生信息功能

思路:这个比较简单就不赘述了。
代码如下(示例):

INSERTION PROC NEARMOV DX,OFFSET STRING_17MOV AH,09HINT 21H MOV DL,0AHMOV AH,02HINT 21HMOV DI,NUMCALL INPUTSINC NUMMOV DX,OFFSET SUNSMOV AH,09HINT 21H CALL SORTSRET
INSERTION ENDP

9.修改学生信息功能

思路:
这个比较简单就不赘述了 。
代码如下(示例):

FMODIFY   PROC   NEARPUSH   DXPUSH   AXPUSH   BXPUSH   CXMOV DX,OFFSET STRING_20MOV AH,09HINT 21H CALL   FFINDJZ   MODIFYJMP   EXIT_MMODIFY:MOV  AX,BXMOV  DX,0MOV  CX,10DIV   CXMOV   DI,AXCALL   INPUTSEXIT_M:POP   CXPOP   BXPOP   AXPOP   DXRET         FMODIFY   ENDP FFIND   PROC   NEARPUSH   DIPUSH   AXPUSH   SIMOV   DI,1MOV   BL,0IN_F:MOV   AH,01H  INT 21H CMP AL,0DHJE   NEXT_FINC BLMOV   FINDNAME[DI],ALINC   DIJMP   IN_FNEXT_F:MOV   FINDNAME[0],BL          MOV   BX,0MOV   DX,0MOV   CX,NUMMOV   SI,1FIND_F:   PUSH   CXMOV  AL,NAMES[BX]CMP  AL,FINDNAME[0]JNE   UNFOUNDLEA   DI,FINDNAME[1]LEA   SI,NAMES[BX+SI]MOV   CL,NAMES[BX]CLD   REPE CMPSBJZ   FOUNDUNFOUND:POP   CXADD   BX,10INC   DXMOV   SI,1LOOP   FIND_FLEA   DX,SUNFMOV   AH,09HINT   21HJMP   EXIT_FFOUND:POP   CXEXIT_F:POP   SIPOP   AXPOP   DXRET
FFIND   ENDP

10.求学生的平均成绩

思路:这里有一个点要注意,那就是成绩我保留了两位小数,对于汇编来讲除法会保留余数,所有要实现保留小数就简单了,就把余数乘与100在拿去除人数,然后把结果在小数点后输出。
代码如下(示例):

FAVERAGE   PROC   NEARPUSH   AXPUSH   BXPUSH   DXPUSH   DIMOV   DI,0MOV SUM,DIMOV CX,NUMLEA  DX,SAVERAGEMOV   AH,9INT   21HFSUM:MOV  AL,ARRAY[DI]MOV AH,0ADD   SUM,AXINC DILOOP   FSUMMOV   DX,0MOV   AX,SUMMOV   BX,NUMMOV   CX,100DIV   BXCALL   DEOUTPUSH   DXMOV   DL,'.'MOV   AH,02HINT   21HPOP   DXMOV   AX,DXMUL   CXMOV   DX,0DIV   BXCALL   DEOUTMOV   DL,0AHMOV   AH,2INT   21HPOP   DIPOP   DXPOP   BXPOP   AXRET
FAVERAGE   ENDP

总结

提示:本文章仅供参考,文章使用的方法不是最优的,仅仅只是实现了功能。最后希望看到这的人,如果这篇文章对你有用可以动动你的小手点点赞

汇编综合实验--学生管理系统相关推荐

  1. 综合案例----学生管理系统

    学生类 package studentsystem;public class Student {private String id;private String name;private int ag ...

  2. [计算机基础与编程综合实验]计费管理系统

    文章目录 一.快速开始 二.项目介绍 三.组织结构 四.功能架构 五.项目迭代 六.效果展示 6.1 系统界面 6.2 卡管理 6.3 计费管理 6.4 费用管理 6.5 退出系统 七.许可证 一.快 ...

  3. 数据结构课程实验——学生管理系统——源代码

    源代码 screen类(用来与用户交互) import java.util.*;class screen {void maindan(){student1 pg1=new student1();pg1 ...

  4. 学生课程成绩信息实体表设计mysql_数据库综合实验--设计某高校学生选课管理系统...

    数据库综合实验重做 因为期末的时候做数据库综合实验太匆忙,很多地方都是能用就好,做完之后突然想到可以改进的方法,所以现在寒假来重做一下 题目如下: 设计某高校学生选课管理系统 实现学生信息.课程学生管 ...

  5. JavaWeb 图书管理系统(数据库综合实验)

    <数据库系统综合实验>设计报告 分工我负责了图书管理系统中整个数据库的设计与实现,编写与整理了数据库相关方面的文档.梳理了概念设计,对于实体,实体对应的属性,各实体间的关联,E-R(实体联 ...

  6. 【数据库 Microsoft SQL Server】实验六 物业收费管理系统数据库设计与实施综合实验

    实验六 物业收费管理系统数据库设计与实施综合实验 一.实验目的 1.掌握数据库概念模型和逻辑模型设计,学会使用数据库规范化理论规范关系模式. 2.熟练掌握和使用SQL语言定义数据库.表.索引和视图等对 ...

  7. c语言机房管理系统答辩,C语言综合实验报告机房管理系统

    <C语言综合实验报告机房管理系统>由会员分享,可在线阅读,更多相关<C语言综合实验报告机房管理系统(19页珍藏版)>请在人人文库网上搜索. 1.机房管理系统(c语言)在vc+ ...

  8. 计算机毕业设计Java学生实验报告管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java学生实验报告管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java学生实验报告管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B ...

  9. java-php-python-ssm学生实验报告管理系统计算机毕业设计

    java-php-python-ssm学生实验报告管理系统计算机毕业设计 java-php-python-ssm学生实验报告管理系统计算机毕业设计 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

最新文章

  1. 前端每日实战:143# 视频演示如何用 CSS 的 Grid 布局创作一枚小松鼠邮票
  2. Ubuntu下安装arm-linux-gnueabi-xxx编译器
  3. char几个字节java_java中的char占几个字节实例分析
  4. 尝鲜delphi开发android/ios_环境搭建
  5. 多线程与网络之NSURLConnection发送请求
  6. 主体的实践,摘录-----保守还是改革,不是靠思辨的力量,而是靠实践
  7. Java方法中的参数太多,第6部分:方法返回
  8. Linux之GDB调试命令
  9. Linux内核OOM机制的详细分析
  10. python唯一映射类型_Python基础:04映射类型
  11. 《精通Spring 4.x 企业应用开发实战》读书笔记
  12. 企业网站的生命周期到底有多长 如何能够持续性发展下去
  13. tomcat、redis session共存配置
  14. 小偷写给失主的一封信 雷人啊!!
  15. ST电机库无感FOC模式接电机前准备工作(1)----PWM波的生成
  16. 关于跨团队合作的一些思考
  17. Python基础学习笔记-第一章
  18. python什么是高阶函数_对于高阶函数的理解是什么?
  19. Java根据IP地址/掩码位(CIDR)和起始IP-终止IP计算网段(IPV4和IPV6)
  20. 常用Linux命令及其作用(超详细,带演示)

热门文章

  1. 2022-06-08你抢不到的可达鸭,芯片成本只要几块钱KFC(-JPG)
  2. a360desktop有用吗_A360 Desktop 停用 - 2018 年 6 月 19 日
  3. JavaSE习题 用Java打印九九乘法口诀表
  4. 显示地图不出来的问题解决
  5. 1053 住房空置率 (20分)
  6. java Swing组件总结
  7. 解决浏览器驱动和浏览器版本不匹配的报错:This version of ChromeDriver only supports Chrome version 97
  8. nas存储服务器操作系统,你会用 NAS 给 PC 装系统吗?
  9. Unity3D 射击游戏练习实例
  10. WS2812硬件电路设计