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

📄 c.asm

📁 学生成绩管理系统用汇编编写的 包括对成绩的插入
💻 ASM
📖 第 1 页 / 共 2 页
字号:
       xor      cx,cx
       cmp      swapped,0
       jnz      m00
       ret
m00:   mov      di, savdi
       set_p1 6
       input    english
       set_p1 7
       input   computer
       set_p1 8
       input   chinese 
       add     di,25
       mov     cl,english+1
       lea     si,eng
       cmp     cl,3
       jz      m10
       inc     di
       cmp     cl,2
       jz      m10
       inc     di
       cmp     cl,1
       jz      m10
       inc     di
m10:   rep     movsb
       add     di,4
       mov     cl,computer+1
       lea     si,com
       cmp     cl,3
       jz      m20
       inc     di
       cmp     cl,2
       jz      m20
       inc     di
       cmp     cl,1
       jz      m20
       inc     di
m20:   rep     movsb
       add     di,4
       mov     cl,chinese+1
       lea     si,chi
       cmp     cl,3
       jz      m30
       inc     di
       cmp     cl,2
       jz      m30
       inc     di
       cmp     cl,1
       jz      m30
       inc     di
m30:   rep     movsb
       ret
modify endp
;--------------------------------------------------------------------------
;功    能:删除指定记录
;入口参数:
;出口参数:
;说  明:
delete proc near
       call     query
       mov      di, savdi
       add      di,42
       mov      si,di
       mov      di,savdi
       mov      al,42      
       mul      Recordcount
       mov      cx,ax
       rep      movsb
       ret
delete endp
;--------------------------------------------------------------------------
;功    能:查找匹配记录项
;入口参数:
;出口参数:
;说  明:
query  proc near
       clear1
       clear2
       cld
       mov    bl,RecordCount1
       mov    RecordCount,bl
       set_p1 4
       input  names 
       set_p1 5
       input   number 
       lea    si,nam
       lea    di,nasav
       xor    cx,cx
       mov    cl,act1
       rep    movsb
       mov    cl,15
       sub    cl,act1
       mov    al,20h
       rep    stosb
       lea    di,nasav
       add    di,19
       lea    si,num
       mov    cl,act2
       cmp    cx,2
       jz     qu00
       inc     di
qu00:  rep    movsb
       lea    di,stutab
       mov    bx,si
       mov    swapped,0
qu10:
       lea     si,nasav
       mov     savdi,di
       xor     cx,cx
       mov     cl,21
       repe    cmpsb
       jz      qu30
       mov     di,savdi
       dec     RecordCount 
       add     di,42
       cmp     RecordCount,0
       jz      qu11
       jmp     qu10
qu11:
        set_p2
        show     err1
        ret 
qu30:
        mov    di,savdi  
        set_p2 
        show   mess11
        mov     cx,42
        mov     si,di
        lea     di,sav
        rep     movsb
        show    sav
        mov     swapped,1
        ret     
query  endp
;--------------------------------------------------------------------------
;功    能:统计三个分数段(0-59,60-79,80-100)的人数
;入口参数:
;出口参数:
;说  明:
cot    proc near
       push ax
       push bx
       push cx
       push dx
       mov    bl,RecordCount1
       mov    RecordCount,bl
       mov    bl,0
       mov    be60,bl
       mov    be80,bl
       mov    be100,bl
       xor  cx,cx
       lea  di,stutab
       sub  di,42
       set_p2 
       show mess14
       show mess15
       xor  ax,ax
       mov  ah,1
       int  21h
       add  di,25
       cmp  al,'1'
       jz  c10
       add  di,7
       cmp  al,'2'
       jz  c10
       add  di,7
       cmp  al,'3'
       jz   c10
       show err3
       pop  dx
       pop  cx
       pop  bx
       pop  ax
       ret
c10:   show cf
       add  di,42
       mov  bl,[di]
       cmp  bl,'1'
       jnz   c11
       inc  be100
       dec  RecordCount
       cmp  RecordCount,0
       jnz  c10
       pop  dx
       pop  cx
       pop  bx
       pop  ax
       ret
c11:   inc  di
       mov  bl,[di]
       dec  di
       cmp  bl,'6'
       jnb  c12
       inc  be60
       dec  RecordCount
       cmp  RecordCount,0
       jnz  c10
       pop  dx
       pop  cx
       pop  bx
       pop  ax
       ret
c12:   cmp  bl,'8'
       jnb  c13
       inc  be80
       dec  RecordCount
       cmp  RecordCount,0
       jnz  c10
       pop  dx
       pop  cx
       pop  bx
       pop  ax
       ret
c13:   inc  be100
       dec  RecordCount
       cmp  RecordCount,0
       jnz  c10
       pop  dx
       pop  cx
       pop  bx
       pop  ax
       ret
cot    endp
;--------------------------------------------------------------------------
;功    能:输出三个分数段的人数
;入口参数:
;出口参数:
;说  明:先调用分数段人数的统计函数cot,再调用此函数
cprint  proc near
       push ax
       push bx
       push cx
       push dx
       show mess01
       xor  bx,bx
       mov  bl,be60
       call convert
       show cf
       show mess02
       xor  bx,bx
       mov  bl,be80
       call convert
       show cf
       show mess03
       xor  bx,bx
       mov  bl,be100
       call convert
       show cf
       pop  dx
       pop  cx
       pop  bx
       pop  ax
       ret
cprint  endp
;--------------------------------------------------------------------------
;功    能:数字进制转化
;入口参数:(bl)(=be60,be80,be100)
;出口参数:
;说  明:通过调用bindec实现
CONVERT   PROC	
	CALL 	BINDEC  		         	    	         
        RET
CONVERT    ENDP
;--------------------------------------------------------------------------
;功    能:将分数段人数的统计结果(二进制)转化为十进制
;入口参数:(bl)(=be60,be80,be100)
;出口参数:
;说  明:
BINDEC    PROC			
        MOV 	CX,100
	CALL 	DEC_DIV		
        MOV 	CX,10
	CALL 	DEC_DIV		
        MOV 	CX,1
	CALL 	DEC_DIV		
	RET
BINDEC  	ENDP
;--------------------------------------------------------------------------
;功    能:将分数段人数的统计结果(二进制)转化为十进制并输出
;入口参数:(cx)(=100,10,1),(bl)(=be60,be80,be100)
;出口参数:
;说  明:
DEC_DIV	PROC			
	MOV 	AX,BX
	MOV 	DX,0
        DIV 	CX		
	MOV 	BX,DX
	MOV 	DL,AL
        ADD 	DL,30H		
        MOV 	AH,2		
	INT 	21H
    	RET
DEC_DIV	ENDP
;--------------------------------------------------------------------------
;功    能:输出所有记录信息
;入口参数:
;出口参数:
;说  明:
list  proc   near
        call   print
        ret
list  endp
;--------------------------------------------------------------------------
;功    能:读取文件中保存的记录信息并据其给stutab赋上相应的值
;入口参数:fname(='F:\st.txt')
;出口参数:stutab(=fname中保存的记录信息)
;说  明:
read   proc   near
       push ax
       push bx
       push cx
       push dx      
       clear1
       clear2
       set_p2
       show mess11
       mov dx,offset fname
       mov al,2
       mov ah,3dh
       int 21h
       mov bx,ax
       lea di,stutab
again: 
       mov dx,offset buffer1
       mov cx,42
       mov ah,3fh
       int 21h
       cmp ax,0
       je p
       mov cx,42
       lea si,buffer1
       rep movsb
       inc  RecordCount1
       inc  RecordCount
       jmp again
p:         
       mov ah,3eh
       int 21h
       set_p3
       pop dx
       pop cx
       pop bx
       pop ax
       ret
read   endp
;--------------------------------------------------------------------------
;功    能:把所有项目信息stutab保存到文件fname('f:\st.txt')中
;入口参数:stutab
;出口参数:fname(保存stutab中的记录信息)
;说  明:
write   proc   near
       push ax
       push bx
       push cx
       push dx
	push si
        mov ah,3ch
        mov cx,00
        lea dx,fname
        int 21h
        mov handle,ax
        mov bx,handle
       	mov ah,3eh
	int 21h			
	sub ax,ax
	mov retemp,al
	lea si,stutab
       mov dx,offset fname
       mov al,2
       mov ah,3dh
       int 21h
wloop:
       lea di,buffer1
       mov cx,42
       rep movsb
       lea dx,buffer1
       mov cx,42
       mov ah,40h
       int 21h
       dec  RecordCount
       mov  al,RecordCount
       jz  wrout
       jmp wloop
wrout:
        mov bx,handle
  	mov ah,3eh
	int 21h
       pop si
       pop dx
       pop cx
       pop bx
       pop ax	
       ret
write	endp
;--------------------------------------------------------------------------
;功    能:输出所有项目信息
;入口参数:stutab
;出口参数:
;说  明:
print  proc near
       clear1
       clear2
       set_p2
       show    mess11
       lea     si,stutab
       mov     dh,RecordCount1
       mov     RecordCount,dh
p10:
       lea     di,sav
       mov     cx,42
       rep     movsb
       show    sav
       add     bx,42
       dec     RecordCount
       jnz     p10     
       ret
print  endp
;--------------------------------------------------------------------------
code   ends
       end main
;--------------------------------------------------------------------------
;各个子函数的注释详见各个队友的报告
;预祝都是春节快乐!

⌨️ 快捷键说明

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