汇编语言第11章磁盘文件存取技术2_第1页
汇编语言第11章磁盘文件存取技术2_第2页
汇编语言第11章磁盘文件存取技术2_第3页
汇编语言第11章磁盘文件存取技术2_第4页
汇编语言第11章磁盘文件存取技术2_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第11章磁盘文件存取技术11.1 磁盘记录方式11.2 文件代号式磁盘存取11.3 字符设备的文件代号式I/O11.4 BIOS磁盘存取功能11.2文件代号式磁盘存取1、概述在使用文件代号式磁盘存取处理指定文件时,必须使用一个完整的路径名,一但文件的路径名被送入操作系统,就被赋予一个简单的文件代号,这个文件代号式一个16位的数。以后对该文件进行读写操作时,就用这个文件代号去查找相应的文件。对于每个打开的文件,DOS还为其管理一个读写指针,读写指针总是指向下一次要存取的文件中的字节,这个读写指针可以移动到文件的任意位置,来满足随机存取的要求。1、路径名和ASCIZASCIZ串包括文件路径名和一个

2、全0的字节。路径名说明文件的位置,包括磁盘驱动器、目录路径和文件名。如下PATHNM1DBC:TEST.ASM,00PATHNM2DBD:UTILITYNU.EXT,00串中的后斜线起分割项的作用。路径的最大长度允许63个字节,对于请求ASCIZ串的中断调用,要求把ASCIZ串的地址装入DX寄存器。2、文件代号和错误返回代码存取文件要借助于文件代号,文件代号是由打开文件功能(3DH)和建立文件功能(3CH)传送到AX的一个16位数。对于标准设备不必打开就可以直接使用他们的文件代号:0=标准输入设备,通常是键盘1=标准输出设备,通常是显示器2=标准错误输出设备,总是显示器3=标准辅助设备,一般为

3、通信端口4=标准打印设备对于建立或打开的文件,其代号从6开始顺序排列,在任一时刻最多只能同时打开5个文件。对于存取磁盘文件,首先用一个ASCIZ串指定文件并用DOS功能3CH建立或3DH打开文件。如果成功,操作置CF=0,并把文件代号传送到AX中,这时文件和代号建立了对应关系,所以要注意保存这个代号。如果操作不成功,置CF=1,AX中包含的是错误代码,这些代码都取自一个统一的错误信息表。表11.4给列出0136的错误代码。3、文件属性文件属性说明文件特性的字节它保存在文件目录项中的0BH字节。文件属性各位的含义01-只读文件,该文件不能为写打开02-隐文件,用DIR查不到该文件03-系统文件,

4、用DIR查不到该文件08-软盘的卷标号10-子目录。20-已写入并关闭了文件。属性字节的6和7位是保留位,应当总是0。使用检查或改变文件属性功能(43H)可以改变现有文件的属性AL=0检查文件属性;AL=1置文件属性MOVAH,43HMOVAL,01;00取文件属性;01置文件属性MOVCX,01;文件属性MOVDX,SEG FNAMEMOVDS,DXMOVDX,OFFSEGFNAMEINT 21H成功:CX=文件属性失败:AX=错误码说明:使用过程中DX中存放ASCIZ串的地址,AL=00检验文件属性,操作后当前的属性值返回到CX寄存器;AL=01改变文件属性,CX放入新属性,操作把这个新属

5、性置入目录项。操作失败AX中返回错误代码为01、02、03或05。4、写磁盘文件(1)建立新文件写一个新文件或用同一个文件名重写一个旧文件时,首先要建立文件并赋给它一个属性,如果DOS发现要建立的文件已经存在,那么原来的文件就被破坏。建立文件的功能调用是3CH。PATHNM1DBE:ACCOUNTS.FIL,00HANDLE1DW?MOVAH,3CHMOVCX,00;正常属性LEADX,PATHNM1INT21HJCERRORMOVHANDLE1,AX如果建立成功,则DOS用给定的属性建立目录项,清除进位位,并把文件代号回送给AX寄存器。以后对文件的操作都使用这个文件代号。在打开文件的同时,文

6、件指针设置为0。如果文件已经存在,操作将文件长度置为0,新文件对老文件进行重写。如果操作把CF=1,则说明建立文件有错误,错误代码回送给AX寄存器。(2)写磁盘文件写磁盘文件是利用功能调用40H,在BX中转入文件代号,要写入的字节数放入CX中,输入缓冲区的地址放在DX中。HANDLE1DW?OUTRECDB256 DUP(?)MOVAH,40HMOVBX,HANDLE1MOVCX,256LEADX,OUTRECINT21HJCERROR2CMPAX,256JNEERROR3说明:如果磁盘文件写入成功,则CF=0,并把实际写入的字节送入AX。如果磁盘空间满,实际写入的字节数可能会和要求写入的字节

7、数不同。系统没有把这种情况报告为一个错误,程序员只能测试返回到AX中的值。非法操作的标志也是CF=1,并在AX中回送错误码05(拒绝存取),或06(非法文件代号)。(3)关闭文件当写入文件操作完成后,必须用DOS功能调用3EH来关闭文件,以确保操作系统将文件记录在磁盘上。关闭文件时,DOS把内存缓冲区中的数据写入磁盘,并用日期和文件大小修改目录和FAT(文件分配表)MOVAH,3EHMOVBX,HANDLE1INT21H关闭文件操作在AX中返回的错误码只能是06(非法文件代号)5、读磁盘文件调用读文件或设备功能(3FH),要求把文件打开,取得文件代号,然后按照指定的字节数从磁盘中把文件读出,送

8、入内存中预定义好的数据缓冲区。如果读入的字节数大于缓冲区空间,那么,这些多余的数据将送到程序所占空间之上的存储器中。打开文件操作(3DH)要检查文件名是否合法,文件是否有效。文件名是一个ASCIZ串,其他地址装入DX寄存器,并在AL中设置存取代码。存取代码告诉操作系统打开文件的目的是什么!表11.5存取代码为读打开一个文件:HANDLE2DW?MOVAH,3DHMOVAL,00;只读LEADX,PATHNM1INT21HJCERROR4MOVHANDLE2,AX如果指定的文件存在,打开文件操作将把记录长度置为1,确定它的属性,设置文件指针为0(指向文件开始),清除CF标志位,并把文件代号放入A

9、X。如果指定的文件不存在,操作将CF=1,并在AX中返回错误代码:02,04,05或12。因此打开文件后一定要检查CF。读文件调用DOS功能3FHBX:存放文件代号CX:装入要读取的字节数DX:中放入输入数据缓冲区的地址HANDLE2DW?INPRECDB512 DUP(?)MOVAH,3FHMOVBX,HANDLE2MOVCX,512LEADX,INPRECINT21HJCERROR5CMPAX,0JEENDFILE如果读操作成功,则清除CF位,并把实际读入的字节数放入AX。假如AX=0,表明试图从文件尾开始读,这是一个警告信息,而不是错误信息。如果文件操作不成功,把CF=1,并在AX中返回

10、错误代码05(拒绝存取)或06(非法文件代号)。读取文件后,必须关闭文件。6、移动读写指针利用文件代号存取文件是以字节为存取单位,一个文件被看做由许多字节组成,每次读写的字节数可任意指定,但是还是为输入输出缓冲区的大小所限制。所以一个比较大的文件要分几次读写,每次读写的字节称为记录。在操作系统中为文件保存了一个读写指针的变量,由它指示应从文件的什么地方读出,或应往文件的什么地方写入。DOS提供了移动读写指针功能42H,该功能要求BX:指定文件代号AL:确定改变指针的三种方式:绝对移动方式,相对移动方式,绝对倒移动方式每种方式中,由CX和DX指定一个双子长的偏移值,低位字在DX中,高位字在CX中

11、,这个偏移值是一个带符号数的整数。(1)AL=00绝对移动方式偏移值从文件首开始计算。为了使指针指向文件首,可以在CX,DX,AL中送入0,那么以后的读写操作就从文件首开始。例:从文件首开始,移动指针1024字节。 MOVAH,42HMOVAL,00HMOVBX,HANDLE1MOVCX,00MOVDX,1024INT 21HJCERROR(2)相对移动方式当前的指针值加上偏移值作为新的指针值,偏移值指出了从当前的读写位置起移动的字节数。根据偏移值的正,负可正向或反向移动指针。例:想从当前的指针位置向前或向后移动N个字节,可以用方式1N的范围在-32768+32767之间MOVBX,HANDK

12、LEMOVCX,0MOVDX,NCMPDX,0JGEPOINTNOTCXPOINT:MOVAL,1MOVAH,42HINT21HJCERROR(3)AL=2绝对倒移方式新的指针位置通过把偏移值和文件尾的位置相加而确定。如果文件的长度32字节,那么AL=2,DX=-32,CX=0FFFFH,则读写指针指向文件的第一个记录。如果CX和DX位0,AL=2则移动后的指针指向文件尾,实际上这个新指针就是文件的长度,用这个方法可以检测文件的大小。如果要在一个已存在的文件后面添加记录,则利用方式2在写之.前把指针指向文件尾:MOVAL,42HMOVAL,2MOVBX,HANDLEMOVCX,0MOVDX,0

13、INT21HJCERROR移动读写指针可能出现的错误代码:01(AL中的方式值是不合法的)和06(BX中的文件代号不合法)。如果移动成功,AX和DX将是移动后的指针值,AX中是低位字,DX是高位字(调用前,DX是偏移值的低位字,CX是偏移值的高位字)。移动指针功能一般在程序中打开文件之后,使用这个功能的某种方式将读写指针移动到文件中需要位置,以后的读写就从文件的这个地方开始,从而提供了文件中随机存取功能。11.3字符设备的文件代号式I/O常用字符设备的文件代号都是由DOS预先定义好的,当一个用户程序得到控制权后,它就得到5个已打开的文件代号,这五个文件代号式:0000 标准输入设备,通常是键盘

14、0001 标准输出设备,通常是显示器0002 错误输出设备,总是显示器0003 标准辅助设备,一般为通信端口0004 标准打印机(0#打印机)设备和文件代号建立了对应关系,用户就可将这些设备视为文件。1、使用文件代号0000从键盘中得到一行字符例:从键盘输入一行字符BUFFERDB80 DUP(?)MOVAH,3FHMOVBX,0MOVCX,80MOVDX,SEG BUFFERMOVDS,DXMOVDX,OFFSET BUFFERINT 21HJCERROR从键盘实际读入的字符数返回到AX寄存器。 2、使用文件代号0001或0002输出字符到显示器例:代号0001和0002可用于传送字符串并完成显示,利用功能40H,将HEELO写到屏幕上BUFFERDB HELLOMOVAH,40HMOVBX,01MOVCX,5MOVDX,SEG BUFFERMOVDS,DXMOVDX,OFFSETBUFFERINT21HJCER

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论