1 / 17

第 11 章 磁盘文件存取技术 11.1 有关概念 11.2 磁盘文件管理系统功能调用

第 11 章 磁盘文件存取技术 11.1 有关概念 11.2 磁盘文件管理系统功能调用. 11.1 扩展磁盘文件管理有关概念 DOS 提供的磁盘管理功能包括三个方面: 一是关于文件内部所存放的数据,比如建立、读、写等 二是针对文件的外部属性,如查找文件的名称、日期 三是目录管理的创建、删除功能等. 1 、 ASCIIZ 串 ASCIIZ 串 — 对文件进行说明。 ASCIIZ 串最后一个字节为 0 ,其余字节是指示文件位置的 ASCII 码字符串。

amelie
Download Presentation

第 11 章 磁盘文件存取技术 11.1 有关概念 11.2 磁盘文件管理系统功能调用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第11章 磁盘文件存取技术 11.1 有关概念 11.2 磁盘文件管理系统功能调用

  2. 11.1 扩展磁盘文件管理有关概念 DOS提供的磁盘管理功能包括三个方面: 一是关于文件内部所存放的数据,比如建立、读、写等 二是针对文件的外部属性,如查找文件的名称、日期 三是目录管理的创建、删除功能等

  3. 1、ASCIIZ串 ASCIIZ串—对文件进行说明。ASCIIZ串最后一个字节为0,其余字节是指示文件位置的ASCII码字符串。 [d:][path]filename.ext,00 用变量定义的形式就写作: filename DB 'C:\SAMPLE.TXT',00 2、文件代号 文件建立或打开后,DOS在自已的保留区建立一个有关文件名、存放盘、路径及读写位置指针等信息的控制块,而返回给用户的是一个16位的二进制控制字,称为文件代号。 用这个上文件代号可以方便的访问相应的文件。

  4. DOS已经预定义了文件代号0到4与标准输入输出设备对应,即 0 ── 标准输入设备,键盘; 1 ── 标准输出设备,屏幕; 2 ── 错误输出的标准设备,屏幕; 3 ── 标准辅助设备(通信端口); 4 ── 标准打印设备。 这5个文件代号长期处于打开状态,应用程序可以直接使用。

  5. 位号: 7 6 5 4 3 2 1 0 只读 隐藏 系统 卷标 子目录 归档 3、错误返回码 0,操作成功 CF= 1,操作失败 错误类型码保存在AX寄存器中(如图) 4、文件属性—有一个字节表示

  6. 代码(Hex) 错 误 原 因 代码(Hex) 错 误 原 因 0001 非法功能号 0008 内存不够 0002 文件未找到 000C 非法存取代码 0003 路径未找到 000D 非法数据 0004 同时打开的文件太多 0010 试图删除当前目录 0005 拒绝访问 0011 设备不一致 0006 非法文件代号 文件操作的错误代码

  7. 11.2 常用扩展磁盘文件管理系统功能调用(21H)

  8. 【例11.1】从键盘读入一个符号串作为文件名,如果文件存在,则显示其中的内容。 【解】 data SEGMENT str1 DB 'Input File Name : $' str2 DB 13,10, 'File not found. ',13,10, '$' fn DB 80,81 dup(0) handle DW 0 buf DB 10000 DUP(0) data ENDS code SEGMENT ASSUME CS:code,DS:data

  9. main: MOV AX,data MOV DS,AX LEA DX,str1 MOV AH,9 INT 21H ;先显示出提示信息Input File Name : INC AH LEA DX,fn INT 21H ;以DOS的10号子功能读入字符串,作为文件名 MOV BL,[fn+1] XOR BH,BH

  10. MOV [fn+BX+2],0 ;置文件名字符串的结束标记 LEA DX,[fn+2] MOV AX,3D00H INT 21H ;打开文件 JNC opened ;打开成功转 MOV AH,9 LEA DX,str2 INT 21H ;提示File not found. JMP finish

  11. opened: MOV [handle],AX ;保存文件代号到变量handle中 next: MOV BX,[handle] ;取文件代号 MOV AH,3FH LEA DX,buf MOV CX,10000 INT 21H ;读10000个字符,若不足则按实际情况读入 MOV CX,AX ;实际读入字符数 MOV AH,40H MOV BX,1

  12. INT 21H ;向1号文件(标准输出设备,屏幕)输出 CMP CX,10000 JE next ;读满缓冲区,而文件可能未读完,转 MOV BX,[handle] MOV AH,3EH INT 21H ;关闭文件 finish: MOV AH,4CH INT 21H RET code ENDS END main

  13. 【例11.2】给定如下条件: (1)文件student.dbf中存放着1000个学生的信息,每条信息占用40个字节的存储空间,依次存放1个字型的学号、8个字符构成的字符串作为姓名、30个字符构成的字符串作为家庭住址。 (2)子程序lookup能够完成查找索引的功能。调用前以入口参数AX中存放学号,调用后若该学号存在,CF会置0,且(CX,DX)存放该学号在主文件中的地址(即文件指针),学号不存在则CF 为1。 (3)文件student.dbf已经打开,文件代号存放在变量handle中。 (4)变量buf已在数据段中定义,用于存放读入的一个学生的信息。

  14. 要求:编写一个子程序search,入口参数是在AX中存放的正整数作为学号。若该学号存在,把CF置0,并读出该学生有关信息,送到变量buf中,否则把CF置1。要求:编写一个子程序search,入口参数是在AX中存放的正整数作为学号。若该学号存在,把CF置0,并读出该学生有关信息,送到变量buf中,否则把CF置1。 【解】子程序的功能、入口参数及出口参数都很明确,子程序清单如下: search PROC NEAR PUSH BX PUSH CX PUSH DX PUSH DS

  15. CALL lookup ;调用已给出的子程序,在索引中查找 JC error ;找不到转,找到时(CX,DX)值刚好作为 移动文件指针的入口参数 MOV BX,[handle] ;取文件代号 MOV AX,4200H INT 21H ;移动指针到正确位置 JC error ;文件操作出错转 MOV AX,SEG buf MOV DS,AX MOV AH,3FH

  16. LEA DX,buf ;DS:DX为读盘缓冲区首地址 MOV CX,40 ;读取的字节数 INT 21H error: POP DS POP DX POP CX POP BX RET search ENDP

  17. 子功能号 (AH) 功 能 入 口 参 数 出 口 参 数 39H 建立子目录 DS:DX=路径字符串首地址 3AH 删除子目录 DS:DX=路径字符串首地址 3BH 改变当前目录 DS:DX=路径字符串首地址 41H 删除文件 DS:DX=待删除文件名字符串首地址 43H 置/取文件属性 DS:DX=文件名字符串首地址 AL=0取文件属性 AL=1置文件属性 CX=文件属性 取文件属性成功时, CX=文件属性 47H 取当前目录路径 DL=驱动器号 DS:SI=65字节的数据缓冲区 成功时,缓冲区中被填写当前目录(含路径)字符串 57H 置/取文件日期和时间 BX=文件代号 AL=0取文件的日期和时间 AL=1置文件的日期和时间 CX=时间,DX=日期 取日期和时间成功时,CX=时间,DX=日期 11.3 有关文件外部特性与目录的操作

More Related