1、第第8 8章章第八章第八章 DOSDOS高级调用程序设计高级调用程序设计第第8 8章章本章主要内容8.1 磁盘文件管理程序(1学时)DOS功能调用(功能调用(75)设备管理:设备管理:文件管理文件管理:目录管理:目录管理:其他功能其他功能:时钟管理、中断向量设置、:时钟管理、中断向量设置、程序驻留程序驻留第第8 8章章磁盘功能:保存数据的存储媒体磁盘功能:保存数据的存储媒体信息存放形式:文件信息存放形式:文件记录记录字节字节磁盘文件管理:磁盘文件管理:功能:功能:DOS与用户程序之间传递信息与用户程序之间传递信息文件打开、关闭、读写等。文件打开、关闭、读写等。方式:方式:传统文件管理传统文件管
2、理-文件控制块文件控制块FCB 扩展文件管理扩展文件管理-ASCIIZ串串文件句柄文件句柄8.1 8.1 磁盘文件管理程序磁盘文件管理程序第第8 8章章8.1.1 扩展磁盘扩展磁盘文件管理有关概念文件管理有关概念1.ASCIIZ串串作用作用:文件说明文件说明(用户打开用户打开建立时建立时)组成组成:最后一个字节为最后一个字节为0其余字节指示文件位置其余字节指示文件位置格式格式:d:path filiname.ext第第8 8章章2 文件句柄控制块控制块:打开打开建立文件后建立文件后DOS在保留区建在保留区建立的信息立的信息-文件名、存放盘及路径、文件名、存放盘及路径、读写位置指针等读写位置指针
3、等文件句柄文件句柄:DOS返回用户的一个返回用户的一个控制字控制字(16为的为的二进制二进制)例:读写字符设备文件句柄例:读写字符设备文件句柄表表8.1第第8 8章章3.错误返回码错误返回码出口参数出口参数:调用成功调用成功CF=0,调用失败调用失败CF=1错误类型码错误类型码:寄存器寄存器AX(表表8.2)4.文件属性文件属性:文件特性(文件特性(6位)位)只读、隐藏、系统、只读、隐藏、系统、卷标、子目录、归档卷标、子目录、归档第第8 8章章注意注意:入口参数、出口参数入口参数、出口参数1.建立文件建立文件(功能号功能号3CH)2.打开文件打开文件(功能号功能号3DH)3.关闭文件关闭文件(
4、功能号功能号3EH)4.读文件读文件(功能号功能号3FH)5.写文件写文件(功能号功能号40H)6.删除文件删除文件(功能号功能号41H)7.移动文件读写指针文件移动文件读写指针文件(功能号功能号42H)8.搜索第一个匹配文件搜索第一个匹配文件(功能号功能号4EH)8.1.2 常用扩展磁盘扩展磁盘文件管理系统功能调用文件管理系统功能调用第第8 8章章8.1.2 扩展文件管理程序示例扩展文件管理程序示例第第8 8章章8.2 时钟程序时钟程序8.2.1功能调用功能调用1.取日期取日期(功能号功能号2AH)2.置日期置日期(功能号功能号2BH)3.取取时间时间(功能号功能号2CH)4.置时间置时间(
5、功能号功能号2DH)8.2.2 程序例程序例第第8 8章章8.2 驻留程序驻留程序DOS提供程序终止中断方式返回DOS:程序退出、释放内存INT 21H(功能号0/4CH)程序退出、驻留内存部分/全部 第第8 8章章(1 1)驻留程序在执行结束后,使程序的一部分仍留在内存,受到操作系驻留程序在执行结束后,使程序的一部分仍留在内存,受到操作系统的保护,可以由其它程序再次激活。统的保护,可以由其它程序再次激活。(2 2)驻留程序的基本框架)驻留程序的基本框架 通常分为两部分:常驻部分和暂驻部分。当通常分为两部分:常驻部分和暂驻部分。当TSRTSR程序执行时,由暂驻程序执行时,由暂驻部分完成初始化,
6、将某个中断向量指向常驻部分对应的部分完成初始化,将某个中断向量指向常驻部分对应的ISRISR,然后驻留退出。然后驻留退出。将来真正起作用的是常驻部分。将来真正起作用的是常驻部分。在设计在设计TSRTSR程序时,为了不浪费内存空间,最好将常驻部分放到低内程序时,为了不浪费内存空间,最好将常驻部分放到低内存地址,使暂驻部分位于高地址。较简单的方法是把要常驻的代码和数据组存地址,使暂驻部分位于高地址。较简单的方法是把要常驻的代码和数据组织在一个段中,并使之作为装入内存的第织在一个段中,并使之作为装入内存的第1 1个段。个段。(3 3)设计驻留程序应注意的问题)设计驻留程序应注意的问题 由于已驻留的由
7、于已驻留的TSRTSR程序随时可能会中断其它程序的执行,因此,必程序随时可能会中断其它程序的执行,因此,必须保护要修改的所有寄存器的值。此外,由于须保护要修改的所有寄存器的值。此外,由于INT 21HINT 21H是不可重入的,因此,是不可重入的,因此,在驻留的中断服务程序中,要避免调用在驻留的中断服务程序中,要避免调用INT 21HINT 21H。第第8 8章章8.3.1 程序驻留的功能调用程序驻留的功能调用INT27HINT21H功能号功能号31H8.3.2 程序驻留的编制程序驻留的编制(1)取、存原中断向量取、存原中断向量INT21H 功能号功能号35H(2)设置信中断向量设置信中断向量 INT 21H 功能号功能号25H(3)设置内存个数设置内存个数 INT 21H 功能号功能号31H例例8-6第第8 8章章设置中断向量:设置中断向量:AH=25H、AL=中断类型号中断类型号DS:DX=中断向量中断向量INT 21H取中断向量:取中断向量:AH=35H、AL=中断类型号中断类型号INT 21H返回时送返回时送ES:BX=中断向量中断向量