汇编综合实验--学生管理系统
文章目录
- 前言
- 一、程序完整的代码
- 二、各各子程序的功能讲解
- 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
总结
提示:本文章仅供参考,文章使用的方法不是最优的,仅仅只是实现了功能。最后希望看到这的人,如果这篇文章对你有用可以动动你的小手点点赞
汇编综合实验--学生管理系统相关推荐
- 综合案例----学生管理系统
学生类 package studentsystem;public class Student {private String id;private String name;private int ag ...
- [计算机基础与编程综合实验]计费管理系统
文章目录 一.快速开始 二.项目介绍 三.组织结构 四.功能架构 五.项目迭代 六.效果展示 6.1 系统界面 6.2 卡管理 6.3 计费管理 6.4 费用管理 6.5 退出系统 七.许可证 一.快 ...
- 数据结构课程实验——学生管理系统——源代码
源代码 screen类(用来与用户交互) import java.util.*;class screen {void maindan(){student1 pg1=new student1();pg1 ...
- 学生课程成绩信息实体表设计mysql_数据库综合实验--设计某高校学生选课管理系统...
数据库综合实验重做 因为期末的时候做数据库综合实验太匆忙,很多地方都是能用就好,做完之后突然想到可以改进的方法,所以现在寒假来重做一下 题目如下: 设计某高校学生选课管理系统 实现学生信息.课程学生管 ...
- JavaWeb 图书管理系统(数据库综合实验)
<数据库系统综合实验>设计报告 分工我负责了图书管理系统中整个数据库的设计与实现,编写与整理了数据库相关方面的文档.梳理了概念设计,对于实体,实体对应的属性,各实体间的关联,E-R(实体联 ...
- 【数据库 Microsoft SQL Server】实验六 物业收费管理系统数据库设计与实施综合实验
实验六 物业收费管理系统数据库设计与实施综合实验 一.实验目的 1.掌握数据库概念模型和逻辑模型设计,学会使用数据库规范化理论规范关系模式. 2.熟练掌握和使用SQL语言定义数据库.表.索引和视图等对 ...
- c语言机房管理系统答辩,C语言综合实验报告机房管理系统
<C语言综合实验报告机房管理系统>由会员分享,可在线阅读,更多相关<C语言综合实验报告机房管理系统(19页珍藏版)>请在人人文库网上搜索. 1.机房管理系统(c语言)在vc+ ...
- 计算机毕业设计Java学生实验报告管理系统(源码+系统+mysql数据库+lw文档)
计算机毕业设计Java学生实验报告管理系统(源码+系统+mysql数据库+lw文档) 计算机毕业设计Java学生实验报告管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B ...
- java-php-python-ssm学生实验报告管理系统计算机毕业设计
java-php-python-ssm学生实验报告管理系统计算机毕业设计 java-php-python-ssm学生实验报告管理系统计算机毕业设计 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
最新文章
- 前端每日实战:143# 视频演示如何用 CSS 的 Grid 布局创作一枚小松鼠邮票
- Ubuntu下安装arm-linux-gnueabi-xxx编译器
- char几个字节java_java中的char占几个字节实例分析
- 尝鲜delphi开发android/ios_环境搭建
- 多线程与网络之NSURLConnection发送请求
- 主体的实践,摘录-----保守还是改革,不是靠思辨的力量,而是靠实践
- Java方法中的参数太多,第6部分:方法返回
- Linux之GDB调试命令
- Linux内核OOM机制的详细分析
- python唯一映射类型_Python基础:04映射类型
- 《精通Spring 4.x 企业应用开发实战》读书笔记
- 企业网站的生命周期到底有多长 如何能够持续性发展下去
- tomcat、redis session共存配置
- 小偷写给失主的一封信 雷人啊!!
- ST电机库无感FOC模式接电机前准备工作(1)----PWM波的生成
- 关于跨团队合作的一些思考
- Python基础学习笔记-第一章
- python什么是高阶函数_对于高阶函数的理解是什么?
- Java根据IP地址/掩码位(CIDR)和起始IP-终止IP计算网段(IPV4和IPV6)
- 常用Linux命令及其作用(超详细,带演示)
热门文章
- 2022-06-08你抢不到的可达鸭,芯片成本只要几块钱KFC(-JPG)
- a360desktop有用吗_A360 Desktop 停用 - 2018 年 6 月 19 日
- JavaSE习题 用Java打印九九乘法口诀表
- 显示地图不出来的问题解决
- 1053 住房空置率 (20分)
- java Swing组件总结
- 解决浏览器驱动和浏览器版本不匹配的报错:This version of ChromeDriver only supports Chrome version 97
- nas存储服务器操作系统,你会用 NAS 给 PC 装系统吗?
- Unity3D 射击游戏练习实例
- WS2812硬件电路设计