汇编语言与计算机原理第八章

上传人:bao****ty 文档编号:116981761 上传时间:2019-11-18 格式:DOC 页数:15 大小:62.50KB
返回 下载 相关 举报
汇编语言与计算机原理第八章_第1页
第1页 / 共15页
汇编语言与计算机原理第八章_第2页
第2页 / 共15页
汇编语言与计算机原理第八章_第3页
第3页 / 共15页
汇编语言与计算机原理第八章_第4页
第4页 / 共15页
汇编语言与计算机原理第八章_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《汇编语言与计算机原理第八章》由会员分享,可在线阅读,更多相关《汇编语言与计算机原理第八章(15页珍藏版)》请在金锄头文库上搜索。

1、第八章 磁盘文件本章将讨论磁盘数据的组织,如何调用DOS和BIOS的中断服务程序访问磁盘等。在这里说明DOS的INT 21H功能调用中关于磁盘文件操作分为两组,一组是使用文件控制块(FCB)对文件进行操作,占用0F23H子功能号,这是一种旧式文件操作方式,这里不予介绍;另一组是使用文件号方式,这是和UNIX操作系统类似的文件操作方式,本章将介绍这种文件操作方式。8.1 磁盘数据组织一、 磁道、柱面和扇区扇区磁盘分为软盘和硬盘,软盘是在一种软塑料基片上涂有磁性材料,硬盘则是在刚性材料上图一层磁性材料。无论软盘还是硬盘都分为磁道和扇区,图811展示了磁盘表面上的磁道和扇区的结构和组织情况。磁道图8

2、11 磁盘磁道和扇区一张磁盘划分为多个磁道,每个磁道有划分若干的扇区。越靠近圆心的磁道的周长越小,但是每个磁道划分的扇区数是相同的。一张磁盘划分为多少磁道和扇区不同类型的磁盘有所不同。硬盘一般由多个盘片组成,每个盘片的同一位置的磁道组成一个柱面。二、磁盘数据组织一张磁盘被分成四个区域,它们分别是引导扇区、文件分配表(FAT)、根目录和数据存储区。1引导扇区磁盘上的第一个扇区为引导扇区。引导扇区内包含了一个称为引导纪录(Boot Record)的程序,当启动计算机时,计算机自检后执行INT 19H服务程序,将引导纪录装入内存,然后执行该程序。引导程序的执行结果是将DOS系统文件IO.SYS 、M

3、SDOS.SYS和COMMAND.COM装入内存,然后执行COMMAND.COM程序,此时计算机处于DOS命令程序控制之下。2文件分配表(FAT) 磁盘存储数据以簇(cluster)为单位分配磁盘空间,一个簇包含一个或几个扇区。.对于软盘一个簇一般只有一个扇区,硬盘一个簇往往有4个、8个扇区等。如果一个簇有4个扇区,则一个簇包含2K字节,即使一个文件的实际长度小于2K,在磁盘上也要占用2K字节空间。一个簇有一顺序编号,称为簇号。当将文件存入磁盘时,根据文件大小给文件分配一个或几个簇,所以磁盘空间是以簇为单位分配的。文件分配表记录磁盘簇的分配情况,它由若干项组成,每一项和一个簇相对应,占用16位

4、或32位。簇0簇1簇2簇3簇n指向目录区指向数据区分配表的某一项值为0000H时,表示该簇为空簇,为FFF7H时,表示该簇是一个坏簇,如果值为0001H0FFFEH表示该簇已分配。当一个文件占用多个簇时,从文件所分配的第一个簇起,每一项存放的是文件所分配的下一个簇号。16位文件分配表能存放的最大值是0FFFEH,所以使用16位文件分配表磁盘最多只能有0FFFEH=1024*64个簇,假如一个簇有12个扇区,则磁盘最大空间为512*8*1024*64=384M。所以对于大容量硬盘应使用32位文件分配表。文件分配表在磁盘上存有两份。3根目录区根目录区存放磁盘文件根目录下的文件或子目录有关信息,根目

5、录的每一项占用32字节,其含义如下:07H 文件名80AH 文件扩展名0BH 文件属性0CH15H 未用16H17H 时间 18H19H 日期1AH1BH 文件开始簇号1CH1EH 文件长度 4数据区存放文件内容。8.2 文件操作一、文件操作的DOS系统功能调用文件操作可以调用DOS 的INT 21H系统功能。DOS操作系统文件操作有两种方式:使用文件控制块方式和使用文件号存取方式。使用文件控制块方式需要建立一个文件控制块,然后才能对文件进行操作。文件控制块方式最大的缺点是不支持树形目录结构,因此在后期版本增加了使用文件号的存取方式。所谓文件号存取方式,就是DOS操作系统为每一个使用中的文件分

6、配一个16位的文件号,以后就使用文件号进行操作。DOS系统文件操作功能:3CH 建立文件子功能调用参数返回参数3CH 建立文件DS=文件名的段基址DX=文件名的偏移地址CX=文件属性CF=0操作成功AX=文件号CF=1操作出错AX=错误代码3DH 打开文件DS=文件名的段基址DX=文件名的偏移地址AL=存取代码CF=0操作成功AX=文件号CF=1操作出错AX=错误代码3EH 关闭文件BX =文件号CF=0操作成功CF=1操作出错AX=错误代码3FH 读文件DS=数据缓冲区的段基址DX=数据缓冲区的偏移地址BX =文件号CX=读取字节数CF=0操作成功AX=实际读出字节数AX=0文件结束CF=1

7、读出错AX=错误代码40H 写文件DS=数据缓冲区的段基址DX=数据缓冲区的偏移地址BX =文件号CX=写入字节数CF=0操作成功AX=实际写入字节数CF=1写出错AX=错误代码42H 移动文件指针CX:DX=所需字节数AL=方式BX =文件号CF=0操作成功DX:AX=新指针位置CF=1写出错AX=错误代码43H 检验或改变文件属性二、路径名和文件名文件号存取文件方式支持树形目录结构,对文件进行操作首先应当将带有路径的文件名所组成的字符串装入内存,这个字符串的最后一个字节为0,的并将DS:DX指向这个地址。例如数据段定义:FILE_1 DB “C:MYFILESAMPL.TXT”,0代码段对

8、文件操作之前要执行下面指令:MOV AX, SEG FILE_1MOV DS, AXMOV DX, OFFSET FILE_1路径和路径之间,以及路径和文件名之间分割可以用“/”或“”,字串最大长度63个。三、 文件代号和错误代码DOS操作系统为每一个打开的文件分配了一个文件号。对于外部设备采用文件驱动方式,即为每一个外部设备预分配一个文件号,这样就可以相对磁盘文件那样对外部设备进行读写操作。DOS预分配的文件号为:0 标准输入设备1 标准输出设备2 标准错误输出设备3 标准辅助设备4 标准打印设备我们建立或打开的文件文件号从5号开始。当对文件操作失败时,标志位CF置1,AX寄存器返回错误代码

9、。错误代码及其含义可查阅有关手册。四、文件属性文件属性的含义如下:01 只读文件02 隐含文件03 系统文件04 卷文件,软盘的卷标号10 子目录20 归档文件8.3 顺序文件操作一、建立新文件建立新文件调用DOS系统3CH子功能。调用时首先应将DS:DX指向存放带有路径的文件名字符串缓冲区,置文件属性代码到CX寄存器。程序示例:该程序建立一个新文件,其操作步骤为:1接收有键盘输入的文件名;2 调用3CH子功能建立该文件;3 接收键盘输入的文件内容到BUFF缓冲区;4 调用40H子功能将BUFF缓冲区内容写入磁盘;5 调用3EH子功能关闭文件。.model small.data messeg1

10、 db Input file name:,0dh,0ah, $ messeg2 db Input text:,0dh,0ah,$ file_point db 63 dup (0) buff db 128 dup (?)prompt macro mess ;提示信息输出宏定义 mov dx, offset mess mov ah, 09h int 21hendmreturn macro ;回车换行操作宏定义 mov dl, 0dhmov ah,02hint 21hmov dl, 0ahint 21hendm.code start: mov ax, data mov ds, ax prompt m

11、esseg1 ;调用宏提示输入文件名 mov si, offset file_point ;下面过程输入文件名 l1: mov ah, 01h int 21h cmp al, 0dh ;输入回车结束 je l2 mov si, al inc si jmp l1 l2: mov si, byte ptr 0 ;文件名字串最后字节置0 mov cx, 0 ;置文件属性 mov dx, offset file_point ;ds:dx指向文件名字符串 mov ah, 3ch ;调用3ch子功能建立文件 int 21h mov bx, ax ;文件号传送bx寄存器 prompt messeg2 ;提示输入文件内容 mov cx, 0 ;下面过程输入文件内容 mov si, offset buff l3: mov ah, 01h int 21h cmp al, 1bh ;是ESC键否?1bh为ESC键ASCII码 je l4 ;是结束输入 mov si, al inc si inc cx cmp al, 0dh ;是回车键否 jne l6 ;否,继续 return ;使,输出回车换行 inc si mov si, byte ptr 0ah ;存入换行代码 inc cx l6: jmp l3 l4: mov dx, offset buff ;写文件 mov ah,

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

最新文档


当前位置:首页 > 大杂烩/其它

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