📄 dele.asm
字号:
INCLUDE filefuc.mac
PUBLIC DELE
GRADES STRUC
STUDENTNUMBER DB 10 DUP(' ')
DB '$'
NAM DB 6 DUP(' ')
DB '$'
COURSE1 DB 3 DUP(' ')
DB '$'
COURSE2 DB 3 DUP(' ')
DB '$'
COURSE3 DB 3 DUP(' ')
DB '$'
COURSE4 DB 3 DUP(' ')
DB '$'
SUM DB 3 DUP(' ')
DB '$'
LIST DB 3 DUP(' ')
DB '$'
GRADES ENDS
DATA SEGMENT
FILENAME DB 'F:\first.txt',0
CT EQU $-BUFFER
FILEHANDLE DW 0 ;此处输入数据段代码
PAGES DW ?
NOS GRADES<>
HANG DB 34
MM DW ?
BUFS DB 1020 DUP(' ')
DATA ENDS
STSG SEGMENT STACK 'S'
DW 32 DUP(?)
STSG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STSG
DELE PROC FAR;删除当前光标所在记录
PUSHREG
push ds
LOADDS DATA
MOV PAGES,BX
MOV MM,0
OPENFILE FILENAME,FILEHANDLE;打开文件
PUSHREG
READFILE 1020,BUFS,FILEHANDLE;读取文件
POPREG
CURSORPOS
MOV AL,DH
MUL HANG
MOV BX,AX
ADD MM,BX
MOV AX,PAGES
MOV BX,340
MUL BX
ADD MM,AX
MOV BX,MM
PUSH CX
MOV CX,30
PUSH DX
MOV DL,DH
MOV DH,0
MOV AX,PAGES
MOV BX,10
MUL BX
ADD DX,AX
SUB CX,DX
POP DX
R1: PUSH CX
MOV CX,30
R2: MOV AL,BUFS[BX]
MOV AH,BUFS[BX+34]
MOV BUFS[BX],AH
MOV BUFS[BX+34],AL
INC BX
LOOP R2
POP CX
ADD BX,3
LOOP R1
POP CX
PUSH CX
MOV CX,30
MOV AL,' '
R3: MOV BUFS[BX],AL
INC BX
LOOP R3
POP CX
CLOSEFILE FILEHANDLE
OPENFILE FILENAME,FILEHANDLE
WRITEFILE 1020,BUFS,FILEHANDLE;将删除后的记录重新写入文件
CLOSEFILE FILEHANDLE
MOV DX,CX
MOV DL,2;覆盖删除行记录,将其显示为空格
PUTS DH,DL,NOS.STUDENTNUMBER,1EH
ADD DL,13
PUTS DH,DL,NOS.NAM ,1EH
ADD DL,10
PUTS DH,DL,NOS.COURSE1,1EH
ADD DL,10
PUTS DH,DL,NOS.COURSE2,1EH
ADD DL,10
PUTS DH,DL,NOS.COURSE3,1EH
ADD DL,10
PUTS DH,DL,NOS.COURSE4,1EH
ADD DL,10
PUTS DH,DL,NOS.SUM,1EH
ADD DL,10
PUTS DH,DL,NOS.LIST,1EH
MOV DH,CH
MOV DL,CL
CURSOR
pop ds
POPREG
RET
DELE ENDP
CODE ENDS
END DELE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -