📄 邓维维(文件模块).txt
字号:
;运行,选择 1 . 2 . 3 .功能,出错则提示,成功则 o k(本程序在下d:\建立list.dat,可改为a:\下
;而在软驱不放盘演示出错?
data SEGMENT
display DB ' 1, creat file',0dh,0ah
DB ' 2. read file',0dh,0ah
DB ' 3. write file',0dh,0ah,'$'
err1 DB 'creat file error$'
err2 DB 'open file error$'
err3 DB 'read file error$'
err4 DB 'write file error$'
err5 DB 'close file error$'
correct DB 'OK!$'
fhle DW ? ;文件句柄
fname DB './data.dat',0 ;ASCIIZ串
;下段数据存入文件list.dat,(一共39字节)
relist LABEL BYTE ;将relist为标志的数据段存入指定文件
rank1 DB 1
namm1 DB 'Linus'
DB 5 DUP('0')
sc1 DW '60'
;
rank2 DB 2
namm2 DB 'Bill'
DB 6 DUP('0')
sc2 DW '85'
;
rank3 DB 3
namm3 DB 'www'
DB 7 DUP('0')
sc3 DW '30'
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
data ENDS
code SEGMENT
main PROC FAR
ASSUME CS:code,DS:data
start:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,data
MOV DS,AX
;********************
MOV AH,9
MOV DX,SEG display
MOV DS,DX
MOV DX,OFFSET display
INT 21h
;************
begin: MOV AH,0
INT 16h ;比较扫描码
CMP AH,1 ;esc
JE exit
CMP AH,2 ;1 creat
JNE nexta
CALL creatfile
nexta: CMP AH,3 ;2 read
JNE nextb
CALL readfile
nextb: CMP AH,4 ;3 write
JNE nextc
CALL writefile
nextc: JMP begin
exit: RET
main ENDP
creatfile PROC NEAR
MOV AH,3ch
MOV CX,0
LEA DX,fname
INT 21h
JC cerr
MOV fhle,AX ;creat file
CALL ok
RET
cerr: MOV AH,9
MOV DX,SEG err1
MOV DS,DX
MOV DX,OFFSET err1
INT 21h
RET
creatfile ENDP
LoadGame PROC NEAR
MOV AH,3dh
MOV AL,00
LEA DX,fname
INT 21h
JC operr
MOV fhle,AX ;open file for read
JMP go_on
operr: MOV AH,9
MOV DX,SEG err2
MOV DS,DX
MOV DX,OFFSET err2
INT 21h
RET
go_on:
MOV AH,3fh
MOV BX,fhle
MOV CX,39
LEA DX,relist
INT 21h ;read it
JC rerr
MOV AH,3eh
MOV BX,fhle
INT 21h ;close the file
JC closeerr
CALL ok
RET
closeerr: MOV AH,9
MOV DX,SEG err5
MOV DS,DX
MOV DX,OFFSET err5
INT 21h
RET
rerr: MOV AH,9
MOV DX,SEG err3
MOV DS,DX
MOV DX,OFFSET err3
INT 21h
RET
LoadGame ENDP
SaveGame PROC NEAR
MOV AH,3dh
MOV AL,01
LEA DX,fname
INT 21h
JC oerr
MOV fhle,AX ;open for write
JMP goon
oerr: MOV AH,9
MOV DX,SEG err2
MOV DS,DX
MOV DX,OFFSET err2
INT 21h
RET
goon: MOV AH,40h
MOV BX,fhle
MOV CX,39
LEA DX,relist
INT 21h ;write file
JC werr
MOV AH,3eh
MOV BX,fhle
INT 21h ;close the file
JC clserr
CALL ok
RET
clserr: MOV AH,9
MOV DX,SEG err5
MOV DS,DX
MOV DX,OFFSET err5
INT 21h
RET
werr: MOV AH,9
MOV DX,SEG err4
MOV DS,DX
MOV DX,OFFSET err4
INT 21h
RET
SaveGame ENDP
ok PROC NEAR
MOV DL,2
MOV AH,02h
INT 21h
MOV AH,9
MOV DX,SEG correct
MOV DS,DX
MOV DX,OFFSET correct
INT 21h
MOV DL,2
MOV AH,02h
INT 21h
RET
ok ENDP
code ENDS
END start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -