5DOS磁盘存取功能ok

上传人:大米 文档编号:584178945 上传时间:2024-08-30 格式:PPT 页数:39 大小:122.50KB
返回 下载 相关 举报
5DOS磁盘存取功能ok_第1页
第1页 / 共39页
5DOS磁盘存取功能ok_第2页
第2页 / 共39页
5DOS磁盘存取功能ok_第3页
第3页 / 共39页
5DOS磁盘存取功能ok_第4页
第4页 / 共39页
5DOS磁盘存取功能ok_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《5DOS磁盘存取功能ok》由会员分享,可在线阅读,更多相关《5DOS磁盘存取功能ok(39页珍藏版)》请在金锄头文库上搜索。

1、PSP的字段格式PSP STRUCINT20H DB 2 DUP(?)MEMSIZE DW ?RESERVED DB ?DOSCALL DB 5 DUP(?)TERMVCTR DW 2 DUP(?)BREAKVCTR DW 2 DUP(?)ERRORVCTR DW 2 DUP(?)PSP ENDS字段位移字段位移字段长度字段长度字段说明字段说明Psp+0Psp+02 2指令指令INT 20HINT 20H+2+22 2可有内存空间可有内存空间+4+41 1保留保留+5+55 5远调用指令远调用指令+A+A4 4程序结束地址程序结束地址+E+E4 4CTRLCTRLBREAKBREAK出口地址出

2、口地址+12+124 4标准错误出口地址标准错误出口地址+16+162222保留保留+2C+2C4848环境段地址环境段地址+5C+5C1616FCB1FCB1+6C+6C1616FCB2FCB2+7C+7C4 4保留保留+80+801 1约定磁盘传输地址约定磁盘传输地址+81+81127127非格式化参数非格式化参数DOSDOS磁盘文件管理磁盘文件管理 PCDOSPCDOS分区,其信息由四部分组成分区,其信息由四部分组成分区引导程序分区引导程序文件分配表文件分配表文件根目录区文件根目录区文件数据区文件数据区分区引导程序分区引导程序为本程序的执行和以后操作系统的为本程序的执行和以后操作系统的运

3、行提供了一张表格,详细列出了运行提供了一张表格,详细列出了引导驱动器的参数,并根据表格提引导驱动器的参数,并根据表格提供的信息把文件根目录区的第一扇供的信息把文件根目录区的第一扇区读进内存,查看区读进内存,查看IO.SYSIO.SYS和和MSDOS.SYSMSDOS.SYS文件是否存在,如有,将文件是否存在,如有,将IO.SYSIO.SYS读进内存读进内存00500050:00000000H H处并由处并由此开始执行程序此开始执行程序文件分配表文件分配表The table(FATThe table(FAT表表) )以簇号为单位的文件链表映像图。以簇号为单位的文件链表映像图。写文件时,可知哪些簇

4、号已被占有写文件时,可知哪些簇号已被占有读文件时,可依次将文件内容读出读文件时,可依次将文件内容读出FATFAT表由簇号组成,每个簇号由磁盘表由簇号组成,每个簇号由磁盘介质类型确定包含的扇区数介质类型确定包含的扇区数文件分配表文件分配表FATFAT表由簇号组成,簇按序编号,表由簇号组成,簇按序编号,0 0、1 1号保留,从号保留,从2 2号按逻辑扇区连续编号。号按逻辑扇区连续编号。簇号与逻辑扇区的关系:簇号与逻辑扇区的关系:文件的逻辑扇区号文件的逻辑扇区号(文件的起始簇号(文件的起始簇号2 2)扇区数扇区数/ /簇簇数据区起始逻辑扇区号数据区起始逻辑扇区号FATFAT表位于导引区后,一个簇号由

5、表位于导引区后,一个簇号由1212位位或或1616位表示位表示文件分配表格式文件分配表格式簇号簇号 含义含义00000000 磁盘类型标志磁盘类型标志00010001 1212位位FXFFFFH 16FXFFFFH 16位位FXFFFFFFHFXFFFFFFHFXFX磁盘类型磁盘类型F0HF0H、F9HF9H、F8HF8H00020002 记载文件的簇号链,文件数据区映像记载文件的簇号链,文件数据区映像00030003 000000H H或或00000000H H未用或可有未用或可有FF0FF0FF6HFF6H或或FFF0FFF0FFF6HFFF6H保留簇号保留簇号XxxxXxxx FF7H

6、FF7H或或FFF7HFFF7H坏磁道坏磁道 FFFH FFFH或或FFFFHFFFFH最后一个簇号最后一个簇号其它是文件的下一个簇号其它是文件的下一个簇号文件分配表格式文件分配表格式一个一个CUSTOM.FILCUSTOM.FIL文件含有簇号文件含有簇号2 2、3 3、4 4,002002H H为起始簇为起始簇号,如存于软盘,在表中为号,如存于软盘,在表中为FATFAT相对字节相对字节如存于硬盘,在表中为如存于硬盘,在表中为FATFAT相对簇号相对簇号0 01 1 2 2 3 3 4 4F0FFFF034000FF0F01234567F8FF FFFF 0300 0400 FFFF 文件定位

7、方法文件定位方法1 11212位簇号项位簇号项1 1、将首簇号、将首簇号1.51.5取整,得到该簇号在表中的首字取整,得到该簇号在表中的首字节位置节位置2 2、从首字节地址取一个字,若簇号为偶,取该字、从首字节地址取一个字,若簇号为偶,取该字节的低节的低1212位,若簇号为奇,取该字节的高位,若簇号为奇,取该字节的高1212位,位,为下一簇号为下一簇号3 3、重复、重复1 1和和2 24 4、若簇号为、若簇号为FFFHFFFH,是最后一个是最后一个文件定位方法文件定位方法2 21616位簇号项位簇号项1 1、将首簇号作为下一簇号的偏移地址、将首簇号作为下一簇号的偏移地址2 2、从算得的偏移地址

8、读出一个字,若簇号为、从算得的偏移地址读出一个字,若簇号为FFFHFFFH,是最后一个,否则为文件的下一簇号是最后一个,否则为文件的下一簇号文件分配表文件分配表簇号为簇号为1212位表示,文件的首簇号为位表示,文件的首簇号为003003h h,链表数据链表数据如下:如下:F0 FF FF 04 50 00 FF 2F 01 FF 8F 00 00 07 19 F0 FF FF 04 50 00 FF 2F 01 FF 8F 00 00 07 19 00 FF FF 0D 10 00 0F F0 FF 12 F0 00 13 F0 00 FF FF 0D 10 00 0F F0 FF 12 F0

9、 00 13 F0 FF 00 00FF 00 00求文件占有的簇号链求文件占有的簇号链根目录区根目录区n根目录区存放系统的根目录,根目录区为根目录区存放系统的根目录,根目录区为2 2个簇号。个簇号。n文件的每个目录由文件的每个目录由3232个字节组成,分六个个字节组成,分六个部分:文件状态及文件名、文件属性、时部分:文件状态及文件名、文件属性、时间、日期、起始簇号、文件的长度间、日期、起始簇号、文件的长度n文件状态和文件名(文件状态和文件名(0 01010字节)字节)n文件属性(文件属性(1111字节)字节)nDosDos保留区(保留区(12-21)12-21)n时间(时间(22-23)22

10、-23)n日期(日期(24242525)n起始簇号(起始簇号(26262727)n文件长度(文件长度(28283131)根目录区根目录区磁盘文件数据区磁盘文件数据区n磁盘根目录区之后的所有磁盘空间都属磁磁盘根目录区之后的所有磁盘空间都属磁盘文件的数据区盘文件的数据区DOSDOS磁盘存取功能磁盘存取功能 DOSDOS功能调用中断(功能调用中断(INT 21HINT 21H)提供提供了两类磁盘文件管理功能了两类磁盘文件管理功能FCBFCB表控制方式表控制方式文件代号式存取方式文件代号式存取方式文件代号式存取方式文件代号式存取方式建立文件建立文件打开文件打开文件关闭文件关闭文件读文件读文件写文件写文

11、件取取/ /置文件属性置文件属性移动文件指针移动文件指针DOSDOS磁盘存取功能磁盘存取功能 当当用用户户需需要要打打开开或或建建立立一一个个文文件件时时,必必须须提供文件标识符。提供文件标识符。文件标识符用文件标识符用ASCII ZASCII Z字符串字符串表示。表示。ASCII ASCII Z Z字字符符串串是是指指文文件件标标识识符符的的ASCIIASCII字字符串后面再加符串后面再加1 1个个“0”“0”字符。字符。文文件件标标识识符符的的字字符符串串包包括括驱驱动动器器名名、路路径径名和文件名。其格式为名和文件名。其格式为 d:path.exed:path.exe其中其中d d为驱动

12、器名,为驱动器名,pathpath为路径名,为路径名,. .exeexe为文件名后缀。为文件名后缀。功能:按指定文件名建立文件。功能:按指定文件名建立文件。入口参数:入口参数:(AHAH)3CH3CHDSDS:DXDX指指向向ASCII ASCII Z Z字字符符串串的的段段地地址址和和偏偏移移地址地址(CXCX)文件属性文件属性。出口参数:出口参数:若操作成功,则若操作成功,则CFCF0 0,(,(AXAX)文件代号;文件代号;若操作失败,则若操作失败,则CFCF1 1,(,(AXAX)错误代码。错误代码。建立文件建立文件文件属性是一个说明文件特性的字节。文件属性是一个说明文件特性的字节。文

13、件属性文件属性76543210只读隐文件系统文件卷文件子目录归档位MOV AH,3CHMOV AH,3CHMOV CX,MOV CX,文件属性文件属性LEA DX,LEA DX,文件的文件的ASCIZASCIZ字串变量字串变量INT 21HINT 21H建立文件建立文件MOV AH,3CHMOV AH,3CHMOV CX,0MOV CX,0LEA DX,PATHNAMELEA DX,PATHNAMEINT 21HINT 21HJC ERRORJC ERRORMOV HANDLE,AXMOV HANDLE,AX建立文件建立文件功能:打开由功能:打开由ASCII ZASCII Z串指定的文件。串指

14、定的文件。入口参数:入口参数:(AHAH)3DH3DH,DSDS:DXDX指向指向ASCII ZASCII Z字符串的段地址和偏移地址,字符串的段地址和偏移地址,(ALAL)存取方式代码存取方式代码(0 0:读文件,:读文件,1 1:写文件,:写文件,2 2:读、写文件:读、写文件)。)。出口参数:出口参数:若操作成功,则若操作成功,则CFCF0 0,(,(AXAX)文件代号;文件代号;若操作失败,则若操作失败,则CFCF1 1,(,(AXAX)错误代码。错误代码。打开文件打开文件功能:关闭文件代号指定的文件。功能:关闭文件代号指定的文件。入口参数:入口参数:(AHAH)3EH3EH,(,(B

15、XBX)文件代号。文件代号。出口参数:出口参数:若操作成功,则若操作成功,则CFCF0 0;若操作失败,则若操作失败,则CFCF1 1,(,(AXAX)错误代错误代码。码。 关闭文件关闭文件功能:按文件代号读取文件。功能:按文件代号读取文件。入口参数:入口参数:(AHAH)3FH3FH,(,(BXBX)文件代号文件代号,(CXCX)要读取的字节数;要读取的字节数;DSDS:DXDX指指向向接接收收数数据据缓缓冲冲区区的的段段地地址址和和偏偏移移地址。地址。出口参数:出口参数:若若操操作作成成功功,则则CFCF0 0,(AXAX)实实际际读读入入字字节数,节数,( (AX)(CX)AX)(CX)

16、或(或(AXAX)0 0,文件已读完;文件已读完;若操作失败,则若操作失败,则CFCF1 1,(,(AXAX)错误代码。错误代码。读文件读文件MOV AH,3DHMOV AH,3DHMOV AL,0MOV AL,0LEA DX,PATHNM1LEA DX,PATHNM1INT 21HINT 21HJC ERRORJC ERRORMOV HANDLE,AXMOV HANDLE,AX读文件读文件HANDLE DW ?HANDLE DW ?INPROC DB 512 DUP(?)INPROC DB 512 DUP(?)MOV AH,3FHMOV AH,3FHMOV BX,HANDLEMOV BX,H

17、ANDLEMOV CX,512MOV CX,512LEA DX,INPROCLEA DX,INPROCINT 21HINT 21HJC ERRORJC ERRORCMP AX,0CMP AX,0JE ENDFILEJE ENDFILE读文件读文件功能:按文件代号写文件。功能:按文件代号写文件。入口参数:入口参数:(AHAH)40H40H,(BXBX)文文件件代代号号,(CXCX)要写入的字节数;要写入的字节数;DSDS:DXDX指指向向存存放放写写入入信信息息数数据据缓缓冲冲区区的的段段地地址址和偏移地址。和偏移地址。出口参数:出口参数:若操作成功,则若操作成功,则CFCF0 0,(,(AXA

18、X)写入字节数;写入字节数;若操作失败,则若操作失败,则CFCF1 1,(,(AXAX)错误代码。错误代码。写文件写文件HANDLE1 DW ?HANDLE1 DW ?OUTREC DB 256 DUP(?)OUTREC DB 256 DUP(?)MOV AH,40HMOV AH,40HMOV BX,HANDLE1MOV BX,HANDLE1MOV CX,256MOV CX,256LEA DX,OUTRECLEA DX,OUTRECINT 21HINT 21HJC ERRORJC ERRORCMP AX,256CMP AX,256JNE ERROR2JNE ERROR2功能:按文件代号功能:按

19、文件代号取取/ /置文件属性置文件属性。入口参数:入口参数:(AHAH)43H43H,DSDS:DXDX指向指向ASCII ZASCII Z串的段地址和偏移地址。串的段地址和偏移地址。(ALAL)0 0,取取文文件件属属性性,(ALAL)1 1,置置文文件属性;件属性;置置文文件件属属性性时时,(CXCX)新新文文件件属属性性(低低字字节)。节)。出口参数:出口参数:若若操操作作成成功功,则则CFCF0 0,若若为为取取属属性性,(CXCX)文件属性;文件属性;若操作失败,则若操作失败,则CFCF1 1,(,(AXAX)错误代码。错误代码。取取/ /置文件属性置文件属性MOV AH,43HMO

20、V AH,43HMOV AL,1HMOV AL,1HMOV CX,01MOV CX,01MOV DX,SEG FNAMEMOV DX,SEG FNAMEMOV DS,DXMOV DS,DXMOV DX,OFFSET FNAMEMOV DX,OFFSET FNAMEINT 21HINT 21HMOV AH,42HMOV AH,42HMOV BX,MOV BX,文件句柄文件句柄MOV CX,MOV CX,移动文件指针的高移动文件指针的高1616位数位数MOV DX,MOV DX,移动文件指针的低移动文件指针的低1616位数位数MOV AL,MCODE;MOV AL,MCODE;移动方式移动方式IN

21、T 21HINT 21HMCODEMCODE移动方式移动方式AL=00,AL=00,将文件指针从文件头移动到将文件指针从文件头移动到CX:DXCX:DXAL=01,AL=01,将文件指针从当前位置移动到将文件指针从当前位置移动到CX:DXCX:DXAL=02,AL=02,将文件指针从文件尾移动到将文件指针从文件尾移动到CX:DXCX:DXCf=0,Cf=0,成功,成功,DX:AXDX:AX为文件新的当前指针为文件新的当前指针Cf=1,Cf=1,失败,失败,AXAX为错误信息代码为错误信息代码移动文件指针移动文件指针DATA SEGMENTDATA SEGMENTS 40,41 DUP(?)S

22、40,41 DUP(?)D 40,41 DUP(?)D 40,41 DUP(?)ASK1 DB 0AH,0DH,INPUT SOURCE FILE:$ASK1 DB 0AH,0DH,INPUT SOURCE FILE:$ASK2 DB 0AH,0DH,INPUT DEST FILE:$ASK2 DB 0AH,0DH,INPUT DEST FILE:$ERR1 DB 0AH,0DH,CREATE :$ERR1 DB 0AH,0DH,CREATE :$ERR2 DB 0AH,0DH,OPEN :$ERR2 DB 0AH,0DH,OPEN :$ERR3 DB 0AH,0DH,READ :$ERR3

23、DB 0AH,0DH,READ :$ERR4 DB 0AH,0DH,WRITE :$ERR4 DB 0AH,0DH,WRITE :$ERR5 DB 0AH,0DH,CLOSE :$ERR5 DB 0AH,0DH,CLOSE :$ERR6 DB 0AH,0DH,DISK FULL ERROR:$ERR6 DB 0AH,0DH,DISK FULL ERROR:$BUFR DW ?BUFR DW ?BUFFER DB 512 DUP(0)BUFFER DB 512 DUP(0)DATA ENDSDATA ENDS利用文件句柄将两个文件合并成一个文件。利用文件句柄将两个文件合并成一个文件。filefi

24、leCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATAHANDLE PROC FARMOV AX,DATA;20MOV DS,AXMOV ES,AXLEA DX,ASK1MOV AH,9INT 21HLEA DX,SFILECALL INPUTMOV CL,SFILE+1MOV CH,0MOV SI,CXMOV S,0LEA DX,SFILE+2 MOV AH,3DHMOV AL,2INT 21HJNC MFHOERR: LEA DX,ERR2ERR:MOV AH,9INT 21HMOV AH,4CH;40INT 21HMFH:MOV BX,AXMOV BUF

25、R,AXMOV CX,0MOV DX,0MOV AL,2MOV AH,42HINT 21HSUB AX,1JNC NEXTDEC DXNEXT: MOV CX,DXMOV DX,AXMOV AL,0MOV AH,42HINT 21HLEA DX,ASK2MOV AH,9INT 21HLEA DX,DCALL INPUTMOV CL,DFILE+1MOV CH,0MOV SI,CXMOV D,0LEA DX,DFILE+2 MOV AH,3DHMOV AL,0INT 21HJNC RFILEJMP OERRRFILE: MOV BX,AXRFILE1: LEA DX,BUFFER;73MOV C

26、X,512MOV AH,3FHINT 21HJNC WFILELEA DX,ERR3JMP ERRWFILE: OR AX,AXJZ EXITMOV CX,AXLEA DX,BUFFERXCHG BX,BUFRMOV AH,40HINT 21HJNC R_WLEA DX,ERR4JMP ERRCMP AX,CXJE R_WLEA DX,ERR6JMP ERRR_W:XCHG BX,BUFRJMP RFILE1EXIT:MOV AH,3EHINT 21HJNC EXIT1EXIT0: LEA DX,ERR5JMP ERREXIT1: XCHG BX,BUFRMOV AH,3EHINT 21HJC EXIT0MOV AH,4CHINT 21HHANDLE ENDPINPUT PROCMOV AH,0AHINT 21HRETINPUT ENDPCODE ENDSEND HANDLE从键盘输入一新文件名,建立一新文件,从键盘输入一新文件名,建立一新文件,将键盘输入的内容写入这个文件。将键盘输入的内容写入这个文件。练习练习1 1从键盘输入一文件名,打开此文件,从键盘输入一文件名,打开此文件,将文件中的内容显示在显示器上。将文件中的内容显示在显示器上。练习练习2 2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号