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

📄 core2(4).asm

📁 汇编语言实现简单的学生信息管理系统..参考
💻 ASM
字号:
.MODEL SMALL
.386
.STACK
.DATA
LENTH DW ?
MARK DB 100 DUP(?)
AMOUNT DB ?
EXPECT DB ?
ZONE1 DB ?
ZONE2 DB ?
ZONE3 DB ?
ZONE4 DB ?
ZONE5 DB ?
ZONE6 DB ?

ZO1 DW ?
ZO2 DW ?
ZO3 DW ?
ZO4 DW ?
ZO5 DW ?
ZO6 DW ?
ZO7 DW ?
ZO8 DW ?
ZO9 DW ?
ZO10 DW ?

MAX DB ?
MIN DB ?
LEN DB ?
STRING1 DB 'Student Mark Analyse System',0DH,0AH,'$'
STRING2 DB '1.Input',0DH,0AH,'$'
STRING3 DB '2.Statistic',0DH,0AH,'$'
STRING4 DB '3.Tixis',0DH,0AH,'$'
STRING5 DB '4.Calculate',0DH,0AH,'$'
STRING6 DB '5.Paint',0DH,0AH,'$'
STRING7 DB '6.Exit',0DH,0AH,'$'
STRING8 DB 'Please have a choice(1-6):',0DH,0AH,'$'
BRANCH DB 'Your input as follows:',0DH,0AH,'$'

BRANCHONE1 DB 'Please have your input,make your attention',0DH,0AH,'$'
BRANCHONE2 DB 'NUMBER(from 1 to 99):',0DH,0AH,'$'
BRANCHONE3 DB 'MARKS(each between 0--99):',0DH,0AH,'$'
BRANCHONE4 DB 'EXPECT(from 0 to 99):',0DH,0AH,'$'
BRANCHONE5 DB 'Please enter any key to go back main menu.',0DH,0AH,'$'

BRANCHTHREE DB 'The result of taxis:',0DH,0AH,'$'
BRANCHTHREE1 DB 'Before taxis:',0DH,0AH,'$'
BRANCHTHREE2 DB 'Taxis increased number:',0DH,0AH,'$'
BRANCHTHREE3 DB 'Taxis decreased number:',0DH,0AH,'$'


BRANCHTWO1 DB 'STATISTICS',0DH,0AH,'$'
BRANCHTWO2 DB '[0,30]',0DH,0AH,'$'
BRANCHTWO3 DB '[31,59]',0DH,0AH,'$'
BRANCHTWO4 DB '[60,69]',0DH,0AH,'$'
BRANCHTWO5 DB '[70,79]',0DH,0AH,'$'
BRANCHTWO6 DB '[80,89]',0DH,0AH,'$'
BRANCHTWO7 DB '[90,100]',0DH,0AH,'$'
BRANCHTWO8 DB 'Highest:',0DH,0AH,'$'
BRANCHTWO9 DB 'Lowest:',0DH,0AH,'$'
BRANCHTWO10 DB 'Distance:',0DH,0AH,'$'

BRANCHFOUR DB 'AVERAGE:',0DH,0AH,'$'

PAINTZ DB '0',20H,'10',20H,'20',20H, '30',20H,'40',20H, '50',20H,'60',20H, '70',20H,'80',20H, '90',20H,'100'
LEN_Z EQU $-PAINTZ

PAINTM DB 'MARK'
LEN_M EQU $-PAINTM

PAINTP DB 'PERCENTAGE(%)'
LEN_P EQU $-PAINTP

.CODE
.STARTUP


SETCURSOR MACRO  X,Y
PUSH AX
PUSH DX

MOV AH,2
MOV BH,0
MOV DH,X
MOV DL,Y
INT 10H

POP DX
POP AX
ENDM

DISPLAYSTRING MACRO X
PUSH DX
PUSH AX
LEA DX,X
MOV AH,9
INT 21H
POP AX
POP DX
ENDM

INOUTFIG MACRO X

LOCAL OUTPUT,OUTPUT1,LP1,LP2,OVER
PUSH AX
PUSH CX
PUSH BX
PUSH DX
      XOR BX,BX
      MOV AH,01H
      INT 21H
      CMP AL,0DH
      JZ OUTPUT
      INC BL
      SUB AL,30H
      MOV X,AL
      MOV AH,01H
      INT 21H
      CMP AL,0DH
      JZ OUTPUT      
      INC BL
      SUB AL,30H
      MOV AH,X
      SHL AH,1
      MOV X,AH
      SHL AH,2
      ADD X,AH
      ADD  X,AL
      
OUTPUT: CALL NEWLINE
        CMP BL,0
        JZ OVER
        CMP BL,2
        JZ OUTPUT1
        MOV AX,0
        MOV AL,X
        MOV BH,10
        DIV BH
        OR AH,30H
        MOV DL,AH
        MOV AH,02H
        INT 21H
        JMP OVER
OUTPUT1:MOV CX,2
        MOV AX,0 
        MOV AL,X
        MOV BH,10
    LP1:XOR AH,AH
        DIV BH
        OR AH,30H
        MOV DL,AH
        MOV DH,0
        PUSH DX
        LOOP LP1
        MOV CX,2
    LP2:POP DX      
        MOV AH,02H
        INT 21H       
        LOOP LP2
   OVER:CALL NEWLINE 
POP DX   
POP BX
POP CX
POP AX	
ENDM


OUTFIG MACRO X
LOCAL LP1,LP2
PUSH AX
PUSH BX
PUSH CX
PUSH DX

        MOV CX,2
        MOV AX,0 
        MOV AL,X
        MOV BH,10
    LP1:XOR AH,AH
        DIV BH
        OR AH,30H
        MOV DL,AH
        MOV DH,0
        PUSH DX
        LOOP LP1
        MOV CX,2
    LP2:POP DX      
        MOV AH,02H
        INT 21H       
        LOOP LP2
POP DX
POP CX
POP BX
POP AX        

ENDM

PAINTCOLOR MACRO X,Y,Z
LOCAL LINE
        MOV BX,Z   
        MOV CX,Y    
        MOV DX,300   
        
LINE:   MOV AH,0CH 
        MOV AL,BL 
        INT 10H
        INC CX  
        CMP CX,Y+25
        JNE LINE
        MOV CX,Y 
        DEC DX  
        MOV AX,X
        SHL AX,4
        NOT AX
        ADD AX,300
        CMP DX,AX
        JNE LINE
      
ENDM     

PAINTLINE MACRO
LOCAL LINE
	MOV BX,14   
        MOV CX,50    ;起始列坐标
        MOV DX,300    ;起始行坐标
        
LINE:   MOV AH,0CH ;写象素
        MOV AL,BL  ;象素值
        INT 10H
        INC CX  ;列+1
        CMP CX,350
        JNE LINE
    
ENDM


PAINTROW MACRO 

LOCAL LINE
	MOV BX,14   ;点颜色
        MOV CX,50    ;起始列坐标
        MOV DX,300    ;起始行坐标
        
LINE:   MOV AH,0CH ;写象素
        MOV AL,BL  ;象素值
        INT 10H
        DEC DX  ;列+1
        CMP DX,60
        JNE LINE
ENDM

FIND MACRO X,Y   
LOCAL LOP2,NEXT


PUSH SI
PUSH AX
PUSH CX

	LEA SI,MARK
	MOV CL,AMOUNT
	DEC CL
	MOV AL,BYTE PTR[SI]	
  LOP2: INC SI
        DEC CL
        CMP AL,BYTE PTR[SI]
        J&X NEXT
        MOV AL,BYTE PTR[SI]
  NEXT: CMP CL,0
        JNZ LOP2
        MOV Y,AL
 
POP CX
POP AX
POP SI         


ENDM

; MOV AH,0FH
; INT 10H
; PUSH AX
;
;
MOV AH,0
MOV AL,10H  ;显示方式640*350
INT  10H

 MOV AX,DS
 MOV ES,AX

L: CALL MAIN
   MOV AH,01H
   INT 21H
   CMP AL,36H  ;ASCII 6
   JZ  L6
   CMP AL,31H  ;ASCII 1
   JZ  L1
   CMP AL,32H  ;ASCII 2
   JZ  L2
   CMP AL,33H  ;ASCII 3
   JZ  L3
   CMP AL,34H  ;ASCII 4
   JZ  L4
   CMP AL,35H  ;ASCII 5
   JZ  L5
   JMP L
L6:CALL EXT
L1:CALL BRANCH1   
   JMP L
L2:CALL BRANCH2
   JMP L
L3:CALL BRANCH3
   JMP L
L4:CALL BRANCH4
   JMP L
L5:CALL BRANCH5
   JMP L
   
;   POP AX
;   MOV AH,0
;   INT 10H   
   
   
   
.EXIT

MAIN PROC


PUSH AX
PUSH BX
PUSH CX
PUSH DX
CALL CLR
SETCURSOR 3,25
DISPLAYSTRING STRING1

SETCURSOR 6,30
DISPLAYSTRING STRING2
SETCURSOR 8,30
DISPLAYSTRING STRING3
SETCURSOR 10,30
DISPLAYSTRING STRING4
SETCURSOR 12,30
DISPLAYSTRING STRING5
SETCURSOR 14,30
DISPLAYSTRING STRING6
SETCURSOR 16,30
DISPLAYSTRING STRING7
SETCURSOR 19,25
DISPLAYSTRING STRING8
POP DX
POP CX
POP BX
POP AX

RET
MAIN ENDP


BRANCH1 PROC


CALL CLR
SETCURSOR 4,20
DISPLAYSTRING BRANCHONE1
SETCURSOR 6,30
DISPLAYSTRING BRANCHONE2
INOUTFIG AMOUNT


SETCURSOR 9,30
DISPLAYSTRING BRANCHONE3
CALL INARRAY

SETCURSOR 16,30
DISPLAYSTRING BRANCHONE4
INOUTFIG EXPECT

SETCURSOR 19,20
DISPLAYSTRING BRANCHONE5
MOV AH,01H
INT 21H

RET
BRANCH1 ENDP

BRANCH2 PROC

PUSH AX



CALL CHOICE

CALL CLR
CALL DISPLAYINPUT
SETCURSOR 7,20
DISPLAYSTRING BRANCHTWO1


SETCURSOR 8,30
DISPLAYSTRING BRANCHTWO2
SETCURSOR 8,45
OUTFIG ZONE1


SETCURSOR 9,30
DISPLAYSTRING BRANCHTWO3
SETCURSOR 9,45
OUTFIG ZONE2


SETCURSOR 10,30
DISPLAYSTRING BRANCHTWO4
SETCURSOR 10,45
OUTFIG ZONE3


SETCURSOR 11,30
DISPLAYSTRING BRANCHTWO5
SETCURSOR 11,45
OUTFIG ZONE4

SETCURSOR 12,30
DISPLAYSTRING BRANCHTWO6
SETCURSOR 12,45
OUTFIG ZONE5


SETCURSOR 13,30
DISPLAYSTRING BRANCHTWO7
SETCURSOR 13,45
OUTFIG ZONE6


SETCURSOR 15,30
DISPLAYSTRING BRANCHTWO9
SETCURSOR 15,45
FIND BE,MIN
OUTFIG MIN


SETCURSOR 16,30
DISPLAYSTRING BRANCHTWO8
SETCURSOR 16,45
FIND AE,MAX
OUTFIG MAX

SETCURSOR 17,30
DISPLAYSTRING BRANCHTWO10
SETCURSOR 17,45
MOV AL,MAX
SUB AL,MIN
MOV LEN,AL
OUTFIG LEN

SETCURSOR 19,20
DISPLAYSTRING BRANCHONE5
MOV AH,01H
INT 21H

POP AX
	
	RET

BRANCH2 ENDP


BRANCH3 PROC

CALL CLR
CALL DISPLAYINPUT
SETCURSOR 7,20
DISPLAYSTRING BRANCHTHREE


SETCURSOR 10,15
DISPLAYSTRING BRANCHTHREE2
CALL TIXISINC
CALL TIXISOUT
SETCURSOR 17,15
DISPLAYSTRING BRANCHTHREE3
CALL TIXISDEC
CALL TIXISOUT


SETCURSOR 23,20
DISPLAYSTRING BRANCHONE5
MOV AH,01H
INT 21H	
	
	RET

BRANCH3 ENDP
BRANCH4 PROC
PUSH SI
PUSH BX
PUSH AX
PUSH CX

CALL CLR
CALL DISPLAYINPUT
SETCURSOR 7,30
DISPLAYSTRING BRANCHFOUR
CALL NEWLINE
SETCURSOR 7,38

	LEA SI,MARK 
	MOV BL,AMOUNT
	MOV AX,0
	MOV AL,BYTE PTR [SI]
 LA:	INC SI
	DEC BL
	CMP BL,0
	JZ OVER
	ADD AL,BYTE PTR [SI]
	ADC AH,0
	JMP LA
	
  OVER:MOV CL,AMOUNT
       
       DIV CL
       
        MOV CX,2 
        MOV BH,10
    LP1:XOR AH,AH
        DIV BH
        OR AH,30H
        MOV DL,AH
        MOV DH,0
        PUSH DX
        LOOP LP1
        MOV CX,2
    LP2:POP DX      
        MOV AH,02H
        INT 21H       
        LOOP LP2
        
        SETCURSOR 15,20
        DISPLAYSTRING BRANCHONE5
        MOV AH,01H
        INT 21H

        	
POP CX
POP AX
POP BX
POP SI	 
	RET

BRANCH4 ENDP

BRANCH5 PROC
	
	CALL CLR
        CALL DISPLAYINPUT
        CALL STAT
        CALL PAINT
        
        
        SETCURSOR 7,20
        DISPLAYSTRING BRANCHONE5
        MOV AH,01H
        INT 21H
        
	ret

BRANCH5 endp
DISPLAYINPUT PROC

        SETCURSOR 0,20
        DISPLAYSTRING BRANCH
	OUTFIG AMOUNT
	CALL NEWLINE
	CALL TIXISOUT
	
	OUTFIG EXPECT
	CALL NEWLINE
	
	ret

DISPLAYINPUT endp

CHOICE PROC

PUSH SI
PUSH CX

   LEA SI,MARK
   MOV CL,AMOUNT
BEG:CMP BYTE PTR [SI],30
   JBE H1
   CMP BYTE PTR [SI],59
   JBE H2
   CMP BYTE PTR [SI],69
   JBE H3
   CMP BYTE PTR [SI],79
   JBE H4
   CMP BYTE PTR [SI],89
   JBE H5
   CMP BYTE PTR [SI],100
   JBE H6
   
H1:INC ZONE1
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H2:INC ZONE2
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H3:INC ZONE3
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H4:INC ZONE4
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H5:INC ZONE5
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H6:INC ZONE6
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
OVER:CALL NEWLINE
	
POP CX
POP SI	
	ret

CHOICE endp

STAT PROC

PUSH SI
PUSH CX

   LEA SI,MARK
   MOV CL,AMOUNT
BEG:CMP BYTE PTR [SI],10
   JBE H1
   CMP BYTE PTR [SI],20
   JBE H2
   CMP BYTE PTR [SI],30
   JBE H3
   CMP BYTE PTR [SI],40
   JBE H4
   CMP BYTE PTR [SI],50
   JBE H5
   CMP BYTE PTR [SI],60
   JBE H6
   CMP BYTE PTR [SI],70
   JBE H7
   CMP BYTE PTR [SI],80
   JBE H8
   CMP BYTE PTR [SI],90
   JBE H9
   CMP BYTE PTR [SI],100
   JBE H10
     
  
H1:INC ZO1
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H2:INC ZO2
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H3:INC ZO3
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H4:INC ZO4
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H5:INC ZO5
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H6:INC ZO6
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H7:INC ZO7
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H8:INC ZO8
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H9:INC ZO9
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
H10:INC ZO10
   INC SI
   DEC CL
   CMP CL,0
   JZ OVER
   JMP BEG
OVER:CALL NEWLINE
	
POP CX
POP SI	
	ret

STAT endp
INARRAY PROC



PUSH AX
PUSH CX
PUSH BX
PUSH DX
PUSH SI	
PUSH DI
      LEA SI,MARK
      MOV CX,0
 LAN1:MOV AH,01H
      INT 21H
      CMP AL,0DH
      JZ COP
      SUB AL,30H
      MOV BYTE PTR [SI],AL
      MOV AH,01H
      INT 21H
      CMP AL,0DH
      JZ COP 
      CMP AL,32
      JZ KONG     
      SUB AL,30H
      MOV AH,BYTE PTR [SI]
      SHL AH,1
      MOV BYTE PTR [SI],AH
      SHL AH,2
      ADD BYTE PTR [SI],AH
      ADD BYTE PTR [SI],AL
      MOV AH,01H
      INT 21H
      CMP AL,0DH
      JZ COP 
      CMP AL,32
      JZ KONG    
KONG: INC SI
      INC CX
      JMP LAN1
      
  COP:MOV LENTH,CX
      CALL NEWLINE

        LEA DI,MARK        
    LAN:MOV CX,2
        MOV AX,0 
        MOV AL,BYTE PTR[DI]
        MOV BH,10
    LP1:XOR AH,AH
        DIV BH
        OR AH,30H
        MOV DL,AH
        MOV DH,0
        PUSH DX
        LOOP LP1
        MOV CX,2
    LP2:POP DX      
        MOV AH,02H
        INT 21H       
        LOOP LP2
        MOV DL,32
        MOV AH,02H
        INT 21H
        INC DI
        DEC LENTH
        CMP LENTH,0
        JZ COP1        
        JMP LAN
    COP1:CALL NEWLINE    
POP DI
POP SI
POP DX   
POP BX
POP CX
POP AX		
	ret

INARRAY endp


TIXISINC PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
	
	MOV CL,AMOUNT
	DEC CL
  OUTLP:MOV DL,CL
        LEA BX,MARK
   INLP:MOV AL,BYTE PTR[BX]
        CMP AL,BYTE PTR[BX+1]
        JNA NEXT
        XCHG AL,[BX+1]
        MOV [BX],AL
   NEXT:INC BX
        DEC DL
        JNZ INLP
        DEC CL
        JNZ OUTLP
        
POP DX
POP CX
POP BX
POP AX
        
        
                  	
	ret

TIXISINC endp

TIXISDEC PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
	
	MOV CL,AMOUNT
	DEC CL
  OUTLP:MOV DL,CL
        LEA BX,MARK
   INLP:MOV AL,BYTE PTR[BX]
        CMP AL,BYTE PTR[BX+1]
        JNB NEXT
        XCHG AL,[BX+1]
        MOV [BX],AL
   NEXT:INC BX
        DEC DL
        JNZ INLP
        DEC CL
        JNZ OUTLP
        
POP DX
POP CX
POP BX
POP AX
        
        
                  	
	ret

TIXISDEC endp
TIXISOUT PROC
PUSH DI
PUSH CX
PUSH AX
PUSH BX
PUSH DX
	MOV BL,AMOUNT
	LEA DI,MARK        
    LAN:MOV CX,2
        MOV AX,0 
        MOV AL,BYTE PTR[DI]
        MOV BH,10
    LP1:XOR AH,AH
        DIV BH
        OR AH,30H
        MOV DL,AH
        MOV DH,0
        PUSH DX
        LOOP LP1
        MOV CX,2
    LP2:POP DX      
        MOV AH,02H
        INT 21H       
        LOOP LP2
        MOV DL,32
        MOV AH,02H
        INT 21H
        INC DI
        DEC BL
        CMP BL,0
        JZ COP1        
        JMP LAN
    COP1:CALL NEWLINE 
    
POP DX
POP BX
POP AX
POP CX
POP DI   
	ret

TIXISOUT endp
CLR PROC
    PUSH AX
    PUSH BX
    PUSH CX
    PUSH DX
    MOV AH,06H
    MOV AL,0
    MOV CH,0
    MOV CL,0
    MOV DH,24
    MOV DL,79
    MOV BH,07H
    INT 10H
    POP DX
    POP CX
    POP BX
    POP AX
RET
CLR ENDP

EXT PROC
PUSH AX
MOV AX,4C00H
INT 21H
POP AX
RET
EXT ENDP

NEWLINE PROC
PUSH AX
PUSH DX
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
POP DX
POP AX
RET
NEWLINE ENDP

PAINT PROC

;MOV AH,0FH
;INT 10H
;PUSH AX
;
;
;
;    MOV AH,0
;    MOV AL,10H  ;显示方式640*350
;    INT  10H	

   
    
    PAINTCOLOR ZO1,50,1
    PAINTCOLOR ZO2,75,2
    PAINTCOLOR ZO3,100,3
    PAINTCOLOR ZO4,125,4
    PAINTCOLOR ZO5,150,5
    PAINTCOLOR ZO6,175,6
    PAINTCOLOR ZO7,200,7
    PAINTCOLOR ZO8,225,8
    PAINTCOLOR ZO9,250,9
    PAINTCOLOR ZO10,275,10
    PAINTLINE
    PAINTROW
    
    MOV AH,13H
    LEA BP,PAINTZ
    MOV CX,LEN_Z
    MOV DH,22
    MOV DL,7
    MOV BH,0
    MOV AL,1
    INT 10H
    
    MOV AH,13H
    LEA BP,PAINTM
    MOV CX,LEN_M
    MOV DH,21
    MOV DL,40
    MOV BH,0
    MOV AL,1
    INT 10H
    
    MOV AH,13H
    LEA BP,PAINTP
    MOV CX,LEN_P
    MOV DH,5
    MOV DL,4
    MOV BH,0
    MOV AL,1
    INT 10H
    

   
    
;        
;        MOV AH,01
;        INT 21H
;        
;        
;          POP AX
 MOV AH,0
 INT 10H   
	ret

PAINT endp

END

⌨️ 快捷键说明

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