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

📄 4.asm

📁 4.asm 4.obj a program for manage the student s data
💻 ASM
字号:
data segment
	buffer 	db 50
		db ?
		db 50 dup (?)
	n 	db 3
		db ?
		db 3 dup (?)
	question1 db ' you are going to...?(choose)  1.check 2.modify 3.creat 0.return$'
	fname db 'studentscore.txt'
	answer1 db 3
		db ?
		db 3 dup(?)
	yn 	db 3
		db ?
		db 3 dup (?)
	paintbuff db 7
		db ?
		db 7 dup (?)
	question2 db 'your command?(choose) 1.read 2.sort  3.return:$'
	
	quest21 db 'want to continue?$'
	question3 db 'choose the number of the student:$'
	stunum	db 3
		db ?
		db 3 dup (?)
	newdata db 3
		db ? 
		db 3 dup (?)
	note1 db 'input new math score:$'
	note2 db 'input new english score:$'
	note3 db 'input new physics score:$'
	info3 db 'input data as following order:(number maths english physics)$'
	databuffer db 10
		   db ?
		   db  10 dup (?)
data ends
stack segment stack 'stack'
	db 500 dup ('s')
stack ends
code segment para 'code'
	assume cs:code,ds:data,ss:stack
sta proc far
	push ds
	xor ax,ax
	push ax
	mov ax ,data
	mov ds,ax
choose: ;call paint
	mov dx,offset question1
	mov ah,09h
	int 21h
	
	mov dx,0dh
	mov ah,02h
	int 21h
	mov dx,0ah
	mov ah,02h
	int 21h
	
	mov dx,offset n
	mov ah,0ah
	int 21h

	mov dx,0dh
	mov ah,02h
	int 21h
	mov dx,0ah
	mov ah,02h
	int 21h
	mov di,offset n
	mov al,[di+2]
	cmp al,'1'
	je che
	cmp al,'2'
	je modi
	cmp al,'3'
	je cre
	cmp al,'0'
	je return
	
che:	call check
	jmp choose
modi:	call modify
	jmp choose
cre:	call creat
	jmp choose

return: ret
sta endp

readfile proc
	mov dx,offset fname
	mov ah,3ch
	mov al,2
	int 21h
	mov dx,offset buffer
	mov bx,ax
	mov cx,50
	mov ah,3fh
	int 21h
	mov ah,3eh
	int 21h
	ret
readfile endp

savefile proc
	mov dx,offset fname
	mov ah,3ch
	mov al,2
	int 21h
	mov dx,offset buffer
	mov bx,ax
	mov cx,50
	mov ah ,40h
	int 21h
	mov ah,3eh
	int 21h
ret
savefile endp

sort proc
	push ax
coti:	mov bl,0
	mov si,offset buffer
	add si,52
	dec si
	dec si
	mov cx,10
	dec cx
agan:	mov al,[si]
	cmp al,[si-5]
	jge next
	mov dx,3
	add si,dx
	mov dx,5
sorlop:	mov al,[si]
	sub si,5
	xchg al,[si]
	add si,5
	mov [si],al
	dec dx
	inc si
	jnz sorlop
	mov bl,-1
next:	sub si,5
	loop agan
	cmp bl,0
	jne coti
	pop ax
	ret
sort endp

paint proc
	push ax
	mov di ,offset buffer
	mov si,offset paintbuff
	add si,2
	add di,2
	mov dl,3
plop0:	mov dh,5
plop:	xor ax,ax
	mov al,[di]
	mov bl,al
	mov bh,100
	div dh
	or al,30h
	mov [si],al
	inc si
	mov bh,10
	mov al,ah
	mov ah,0
	div bh
	or al,30h
	mov [si],al
	inc si
	or ah,30h
	mov [si],ah
	inc si
	mov al,' '
	mov [si],al
	inc si
	mov al,'$'
	mov [si],al
	
	mov dx,offset paintbuff+2
	mov ah,09h
	int 21h
	inc di
	dec dh
	jnz plop
	
	mov dx,0dh
	mov ah,02h
	int 21h
	mov dx,0ah
	mov ah,02h
	int 21h
	
	dec dl	
	jnz plop0
	pop ax
	ret
paint endp
 
check proc
	call readfile
Q1:	mov dx ,offset question2
	mov ah,9
	int 21h
	mov dx,offset answer1
	mov ah,0ah
	int 21h
	mov dx,0dh
	mov ah,02h
	int 21h
	mov dx,0ah
	mov ah,02h
	int 21h
	mov di,offset answer1
	mov al,[di+2]
case1:	cmp al,'1'
	je  ca1
	jmp	case2
ca1:	call paint
case2:	cmp al,'2'
	je  ca2
	jmp case3
ca2:	call sort
case3:  cmp al,'3'
	je done
	
	mov dl,0dh		;clear the screen
    	mov ah,2
    	int 21h
   	mov dl, 0ah
   	mov ah,2
        int 21h 
	call savefile
	mov dx,offset quest21
	mov ah,09h
	int 21h

	mov dx ,offset yn
	mov ah,0ah
	int 21h
	mov di,offset yn
	mov cl,[di+2]	
	cmp cl,'y'

	mov dl,0dh		;clear the screen
    	mov ah,2
    	int 21h
   	mov dl, 0ah
   	mov ah,2
        int 21h 
	
	je  Q1

done:	ret
check endp

modify proc 
	call readfile
	mov bx,ax
	push bx
Q2:	mov dx ,offset question3
	mov ah,9
	int 21h
	mov dx,offset stunum
	mov ah,0ah
	int 21h
	
	mov dx,0dh
	mov ah,02h
	int 21h
	mov dx,0ah
	mov ah,02h
	int 21h
	
	mov di,offset stunum
	mov al,[di+2]
	mov di,offset buffer
	mov dx,10
lop:	;mov bl,[di]
	cmp ax,[di]
	je modifydata
	add di,5
	dec dx
	jnz lop
	
jjQ2:		jmp Q2

modifydata:	push si
		mov dx,offset note1
		mov ah,09h
		int 21h
		mov dx,offset newdata
		mov ah,0ah
		int 21h
		mov si,offset newdata
		mov al,[si+2]
		mov bl,al
		inc di
		and al,0f0h		;high four bit
		mov cl,4
		shr al,cl
		or al,30h
		mov bh,30h
		mov [di],bh
		inc di	
		mov al,bl		;low four bit
		and al,0fh
		or al,30h
		mov [di],al
		inc di 
		mov [di],al
		mov dx,offset note2
		mov ah,09h
		int 21h
		mov dx,offset newdata
		mov ah,0ah
		int 21h
		mov si,offset newdata
		mov al,[si+2]
		mov bl,al
		inc di
		jmp g1
jQ2:		jmp jjQ2
g1:		and al,0f0h		;high four bit
		mov cl,4
		shr al,cl
		or al,30h
		mov bh,30h
		mov [di],bh
		inc di	
		mov al,bl		;low four bit
		and al,0fh
		or al,30h
		mov [di],al
		inc di 
		mov [di],al

		mov dx,offset note3
		mov ah,09h
		int 21h
		mov dx,offset newdata
		mov ah,0ah
		int 21h
		mov si,offset newdata
		mov al,[si+2]
		mov bl,al
		inc di
		and al,0f0h		;high four bit
		mov cl,4
		shr al,cl
		or al,30h
		mov bh,30h
		mov [di],bh
		inc di	
		mov al,bl		;low four bit
		and al,0fh
		or al,30h
		mov [di],al
		inc di 
		mov [di],al
		pop si		

	call savefile

	mov dx,offset quest21
	mov ah,09h
	int 21h

	mov dx ,offset yn
	mov ah,0ah
	int 21h
	mov di,offset yn
	mov cl,[di+2]	
	cmp cl,'y'

	mov dl,0dh		;clear the screen
    	mov ah,2
    	int 21h
   	mov dl, 0ah
   	mov ah,2
        int 21h 
	
	je  jQ2
	cmp cl,'n'

	ret
modify endp

creat proc	
	
Q3:	mov dx,offset info3
	mov ah,09h
	int 21h
	mov dx,offset databuffer	
	mov ah,0ah
	int 21h
	mov si,offset buffer
	mov di,offset databuffer
	inc si
	inc si
	inc di
	inc di
	mov cx,3
crelop:	mov al,[di+3]
	sub al,30h
	mov dl,al
	mov al,[di+2]
	sub al,30h
	mov bl,10
	mul bl
	add al,dl
	add [di+8],al
	mov [si+1],al
	inc si
	inc di
	inc di
	dec cx
	jnz crelop
	jmp g2
jQ3:	JMP Q3
g2:	mov si,offset buffer
	mov di,offset databuffer
	mov al,[di+3]
	sub al,30h
	mov dl,al
	mov al,[di+2]
	sub al,30h
	mov bl,10
	mul bl
	add al,dl
	mov [si+2],al
	mov al,[di+10]
	sub al,30h
	mov dl,al
	mov [si+7],al
	
	mov dl,0dh		;clear the screen
    	mov ah,2
    	int 21h
   	mov dl, 0ah
   	mov ah,2
        int 21h 
	
	mov dx,offset quest21
	mov ah,09h
	int 21h
	mov dx ,offset yn
	mov ah,0ah
	int 21h
	mov di,offset yn
	mov cl,[di+2]	
	cmp cl,'y'

	mov dl,0dh		;clear the screen
    	mov ah,2
    	int 21h
   	mov dl, 0ah
   	mov ah,2
        int 21h 
	
	je  jQ3
	call savefile
ret 
creat endp
code ends
	end sta
	

⌨️ 快捷键说明

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