📄 4.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 + -