汇编中对文件的操作的功能号!int 21H 3cH 建立文件调用的参数DS:DX=ASCII 串
CX=文件属性。0表示普通文件。返回参数CF=0操作成功,AX=文件代号,CF=1操作出错
如果错误AX将返回错误码!
例如: ;文件创建函数;
fcreat proc near
lea dx,path ;path代表错建立的文件路径,如 path db ;"D:\data.txt $"
mov cx,0
mov ah,3ch
int 21h
mov handle,ax;handle表是保存的文件号,类型为DW
jnc fct
lea dx,fcreatmsg
call errm
mov handle,1
fct: ret
fcreat endp
3DH 文件的打开,调用的参数DS:DX=ASCII串的偏移地址,AL=存取的代号,返回参数CF=0表示成功,AX=文件号,如果CF=1 ,AX=错误码!
例如: fopen proc near
mov dx,offset path
mov al,02h
mov ah,3dh
int 21h
mov handle,ax
jnc fope
lea dx,fopenmsg
call errm
mov handle,1
fope: ret
fopen endp
3EH 文件关闭 调用参数BX=文件号,返回参数CF=0操作成功,CF=1错误,AX=错误码
例如: ;文件关闭函数;
fclose proc near
mov bx,handle
mov ah,3eh
int 21h
jnc clf
lea dx,fclosemsg
call errm
clf: ret
fclose endp
3FH 文件的读取 调用的参数DS:DX=数据缓冲区偏移量 BX=文件号,CX=读取的字节数。返回的参数 CF=0表示成功,AX=实际读取文件的字节数,CF=1,AX=错误码
例如: fread proc near
mov dx,offset buff_file
mov bx,handle
mov cx, 5
mov ah,3fh
int 21h
mov word ptr read_number,ax
jnc readerr
lea dx,readmsg
call errm
mov readlen,0
readerr:ret
fread endp
40H 文件的写入 调用的参数DS:DX=数据缓冲区偏移量 BX=文件号,CX=写入的字节数。返回的参数 CF=0表示成功,AX=实际写入文件的字节数,CF=1,AX=错误码
例如: ;文件写入函数;
fwrite proc near
mov dx,offset buff
mov bx,handle
mov cx, 5
mov ah,40h
int 21h
;mov writelen,ax
jnc err
lea dx,writemsg
call errm
mov writelen,0
err: ret
fwrite endp
42H 移动文件指针,调用参数 BX=文件号,CX(所需字节的偏移量地址(高位)),DX=位移量(地位),AL=移动的方式(0:表示从文件的头绝对位移,1:表示从当前的位置相对移动,2:从文件尾绝对位移)返回参数CF=0成功,AX=新文件的指针,CF=0,表示错误,AX=错误码!
;********************** 错误的标准输出 *************;
errm proc near
mov ah,40h
mov bx,01
mov cx,60
int 21h
mov errcde,01
ret
errm endp
;************************************************************;
转载于:https://blog.51cto.com/drcomfeng/731150