电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

80*86汇编语言程序设计 第2版 教学课件 ppt 作者 马力妮 第9章 磁盘文件存取方法

25页
  • 卖家[上传人]:E****
  • 文档编号:89488749
  • 上传时间:2019-05-25
  • 文档格式:PPT
  • 文档大小:192.50KB
  • / 25 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第9章 磁盘文件存取方法,9.1 以文件句柄方式存取文件 9.2 文件操作举例,9.1 以文件句柄方式存取文件,9.1.1 DOS文件功能调用 9.1.2 路径和ASCIIZ串 9.1.3 文件句柄、错误代码和文件属性 9.1.4 文件的打开方式 9.1.5 读写指针的移动,9.1.1 DOS文件功能调用,DOS的INT 21H为文件操作提供了相应的功能支持, 基于文件句柄的DOS功能调用如下: AH=3CH:创建一个新文件 输入参数:DS:DX=ASCIIZ串的首地址 CX = 文件属性 返回结果:CF=0,创建成功,AX=文件句柄 CF=1,创建失败,AX=错误代码 AH=3DH:打开一个已有文件 输入参数:DS:DX=ASCIIZ串的首地址 AL=访问方式(0读打开,1写打开,2读写打开) 返回结果:CF=0,打开成功,AX=文件句柄 CF=1,打开失败,AX=错误代码,AH=3EH:关闭文件 输入参数:BX=文件句柄 返回结果:CF=0,操作成功 CF=1,操作失败,AX=错误代码 AH=3FH:读文件 输入参数:DS:DX=读缓冲区的首地址 BX=文件句柄 CX=希望读入的字

      2、节数 返回结果:CF=0,操作成功,AX=实际读入的字节数 CF=1,操作失败,AX=错误代码 AH=40H:写文件 输入参数:DS:DX=写缓冲区的首地址 BX=文件句柄 CX=要写入的字节数 返回结果:CF=0,操作成功,AX=实际写入的字节数 CF=1,操作失败,AX=错误代码,AH=41H:删除文件 输入参数:DS:DX=ASCIIZ串的首地址 返回结果:CF=0,操作成功 CF=1,操作失败,AX=错误代码 AH=42H:移动文件读写指针 输入参数:BX=文件句柄 AL=移动方式代码 CX=移动字节数的高位字 DX=移动字节数的低位字 返回结果:CF=0,操作成功,DX:AX=新指针位置 CF=1,操作失败,AX=错误代码 AH=43H:检验(读取)或改变文件属性 输入参数:DS:DX=ASCIIZ串的首地址 AL=0,为读取文件属性 AL=1,为设置文件属性,CX=新文件属性 返回结果:CF=0,操作成功,输入AL=0则CX=属性 输入AL=1则CX=新属性 CF=1,操作失败,AX=错误代码,9.1.2 路径和ASCIIZ串,当用DOS功能调用创建或打开文件时,首先必须在

      3、程序的数据段中定义一个反映文件名信息的ASCIIZ串,ASCIIZ串由文件路径名的ASCII码和一个全0字节组成,文件路径名说明文件的位置,包括磁盘驱动器、目录路径和文件名。 例如: FILENAME DB C:MYMASMHB.DAT,00H 其中:FILENAME为ASCIIZ串的首地址,C:MYMASMHB.DAT 是创建或打开文件的路径和文件名,最后的00H用来标识该字符串为ASCIIZ串。,9.1.3 文件句柄、错误代码和文件属性,1. 文件句柄 用DOS功能调用创建或打开文件时,如果CF=0,说明操作成功,通过AX返回一个文件句柄,这时文件和句柄就建立了对应关系,以后对文件的读写等操作,只要给出文件句柄即可,而不必再给出其ASCIIZ串,因而一定要注意保存这个文件句柄。返回的文件句柄一般从05开始顺序排列,因为前5个句柄已被标准设备占用。 2. 错误代码 文件句柄存取方式对各种错误采取了统一的处理方法。在文件操作时,无论调用哪一功能调用,如返回CF=1,表示操作失败或出错,则AX中返回的是错误代码,这些错误代码都来自一个统一的错误代码表。,3. 文件属性 文件属性字节用来说

      4、明DOS文件属性,其各位含义如图9-1所示。 7 6 5 4 3 2 1 0 只读文件 隐藏文件 系统文件 卷标 子目录 归档位 图9-1 文件属性字节 主要属性字节代码如下: 00H普通文件 01H只读文件 02H隐藏文件 04H系统文件 08H磁盘的卷标号 10H子目录 20H未归档的文件,9.1.4 文件的打开方式,用INT 21H的3DH功能打开一个文件时,打开文件的方式有三种, 由AL中的打开方式代码确定: AL=0,以只读方式打开,文件只能读,不能写。 AL=1,以只写方式打开,文件只能写,不能读。 AL=2,以读写方式打开,文件可读可写。,DOS系统为每个打开的文件管理一个读写指针。对文件的读写操作,实际上是从当前指针指向的位置开始的,可以把读写指针移动到文件的任意位置,从而能够实现对文件的随机存取。 建立一个新文件或打开一个已有文件后,读写指针的值被初始化为0,也就是指向文件的起始位置。随着读写操作的进行,系统会根据读写的字节数,不断修改读写指针的值,使读写指针总是指向下一次要存取的字节。 用INT 21H的42H功能可以把读写指针移到文件的任意位置。该功能要求在BX中

      5、设置文件句柄,在CX:DX中设置要移动的字节数(偏移量),在AL中设置移动方式代码。,9.1.5 读写指针的移动,AL中设置的移动方式代码指定了3种移动指针的方式: (1) AL=00H,从文件开始处计算偏移量(移动的字节数)。 例如,对文件进行过读写操作后,读写指针不再指向文件开始处,下面指令序列可以把读写指针重新移动到文件开始处: MOV AH,42H ;INT 21H的42H功能 MOV AL,00H ;从文件开始处计算偏移量 MOV BX,HANDLE ;文件句柄(存储在HANDLE单元中)送BX MOV CX,0 ;移动字节数的高位数 MOV DX,0 ;移动字节数的低位数 INT 21H ;DOS的21H号功能 又例如,从文件开始把指针移动100个字节的指令如下: MOV AH,42H MOV AL,00 MOV BX,HANDLE MOV CX,0 MOV DX,100 ;移动字节数的低位数 INT 21H,(2) AL=01,从文件的当前位置计算偏移量。此时,偏移值可正可负, 若为正,则正向移动指针;若为负,则反向移动。 例如,从当前读写指针位置正向移动100个字节的指

      6、令序列如下: MOV AH,42H MOV AL,01 ;从当前读写指针位置计算偏移量 MOV BX,HANDLE MOV CX,0 MOV DX,100 ;移动字节数的低位数 INT 21H (3) AL=02,从文件尾计算偏移量 例如,要在文件尾添加记录,可先用下列指令把读写指针移到文件尾: MOV AH,42H MOV AL,02 ;从文件尾计算偏移量 MOV BX,HANDLE MOV CX,0 MOV DX,0 INT 21H 如果指针移动成功,在DX:AX中返回新指针的位置。,9.2 文件操作举例,【例9-1】:创建一个文本文件MYFILE1.TXT,将从键盘输入的内容写入此文件中,输入过程以回车结束。 (1)分析: 1)在数据段中定义一个文件名的ASCIIZ串、一个字节的写缓冲区。 2)利用INT 21H的3CH功能创建文件,若创建不成功则显示错误信息 并退出。 3)在循环体中,利用INT 21H的1号功能从键盘接收字符,然后利用 INT 21H的40H功能把这一个字符写到文件中。每接收一个字符, 判断是否为回车,若为回车则退出,否则循环。 4)写文件后,必须先关闭文件,

      7、然后才能退出。,(2)程序流程图如下,DATA SEGMENT FILENAME1 DB MYFILE1.TXT,0 ;ASCIIZ串 FILENAME2 DB MYFILE2.TXT,0 HANDLE1 DW ? ;保存文件句柄单元 HANDLE2 DW ? BUFFER DB 1024 DUP (?) ;读写缓冲区 LEN DW ? ;保存实际读入长度单元 ERROR1 DB Can Not Open File !,0DH,0AH,$ ERROR2 DB Can Not Creat File !,0DH,0AH,$ ERROR3 DB Reading File Wrong !,0DH,0AH,$ ERROR4 DB Writing File Wrong !,0DH,0AH,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX ;打开文件MYFILE1 MOV AH,3DH ;INT 21H的3DH功能 LEA DX,FILENAME1 ;DX=ASCIIZ

      8、串的首地址 MOV AL,0 ;AL=0,读打开 INT 21H ;打开文件 JC ERR1 ;打开不成功,转ERR1 MOV HANDLE1,AX ;成功,保存文件句柄,;创建新文件MYFILE2 MOV AH,3CH ;INT 21H的3CH功能 LEA DX,FILENAME2 ;DX=ASCIIZ串的首地址 MOV CX,0 ;CX=0,普通文件 INT 21H ;创建文件 JC ERR2 ;创建不成功,转ERR2 MOV HANDLE2,AX ;保存文件句柄 ;读MYFILE1内容到缓冲区 MOV AH,3FH ;INT 21H的3FH功能 LEA DX,BUFFER ;DX=读缓冲区的首地址 MOV BX,HANDLE1 ;BX=文件句柄 MOV CX,1024 ;CX=希望读入的字节数 INT 21H ;读文件 JC ERR3 ;不成功,转ERR3 MOV LEN,AX ;成功,保存字节数 ;把缓冲区中的小写字母变为大写字母 LEA SI,BUFFER ;设置SI、DI为地址指针 MOV DI,SI MOV CX,LEN ;CX=待处理的字符数 LP1:MOV AL,SI

      9、 ;从缓冲区中取一个字节,(3)根据流程图编写汇编程序:,CMP AL,a ;与小写字母a比较 JB CON1 ;若比a小,则不转换 CMP AL,z ;与小写字母z比较 JA CON1 ;若比z大,则不转换 SUB AL,20H ;否则转换成大写字母 MOV DI,AL ;送回缓冲区 CON1: INC SI ;修改地址指针 INC DI LOOP LP1 ;循环 ;将缓冲区中内容写到文件MYFILE2中 MOV AH,40H ;INT 21H的40H功能 LEA DX,BUFFER ;DX=写缓冲区首地址 MOV BX,HANDLE2 ;BX=文件句柄 MOV CX,LEN ;CX=要写入的字节数 INT 21H ;写文件 JC ERR4 ;不成功,转ERR4 ;关闭文件MYFILE2 L0: MOV AH,3EH ;INT 21H的功能3EH MOV BX,HANDLE2 ;BX文件句柄 INT 21H ;关闭文件 L1: MOV AH,3EH ;关闭文件MYFILE1 MOV BX,HANDLE1 INT 21H,EXIT:MOV AX,4C00H ;返回DOS INT 21H ERR1:MOV AH,9 ;显示打开文件出错信息 LEA DX,ERROR1 INT 21H JMP EXIT ;返回DOS ERR2:MOV AH,9 ;显示创建文件出错信息 LEA DX,ERROR2 INT 21H JMP L1 ERR3:MOV AH,9 ;显示读文件出错信息 LEA DX,ERR

      《80*86汇编语言程序设计 第2版 教学课件 ppt 作者 马力妮 第9章 磁盘文件存取方法》由会员E****分享,可在线阅读,更多相关《80*86汇编语言程序设计 第2版 教学课件 ppt 作者 马力妮 第9章 磁盘文件存取方法》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.