汇编知识点之磁盘文件存取技术

1.文件代号式磁盘存取
(1)两个重要的表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)简要说明:
文件代号式存取方式将有关文件的各种信息都包括在DOS中。 在处理指定文件时必须使用一个完整的路径名,一旦文件的路径名被送入操作系统,就被赋予一个简单的文件代号,这个文件代号是一个16位的数(16位的二进制)。以后对文件进行读写操作时,就用这个文件代号去查找相应的文件。对于每一个打开的文件,DOS还为其管理一个读写指针,读写指针总是指向下一次要存取的文件中的字节,这个读写指针可以移动到文件的任意位置,从而能满足随机存取的要求。

将指针指向开头位置的两种方法:
   ①关闭文件,重新打开此文件
   ②利用DOS相应的功能调用

(3)路径名和ASCIZ串

ASCIZ串包括文件的路径名和一个全0的字节。
ASCIZ串的地址装在DX寄存器中。
路径名说明文件的位置,包括磁盘驱动器、目录路径和文件名。
例:PN DB  ‘D:\ABC.TXT’,00H  ;ASCIZ串
  PH DW  ? ;文件代号
   …
   LEA DX,PN
   MOV PH,AX  ;存储文件代号

(4)文件代号和错误返回代码
对于存取磁盘文件,首先用一个ASCIZ串指定文件并调用DOS功能3CH建立或打开文件。如果成功,操作置CF为0,并把文件代号传送到AX中,这时文件和代号建立了对应关系,所以要注意保存这个代号。如果操作不成功,CF被置1,AX中包含的是错误代码,这个错误代码都取自一个统一的错误信息表。

(5)文件属性

文件属性字节:CX(存放属性字节):xxxxxxxx00xxxxxx
前10位没用到,属性字节只用后六位。
01-只读文件,该文件不能为写而打开。
02-隐文件,用DIR查不到该文件。
03-系统文件,用DIR查不到该文件。
08-软盘的卷标号。
10-子目录。
20-已写入并关闭了文件(硬盘用)。

使用改变文件属性功能(43H)可以改变现有文件的属性。
MOV  AH,43H 
MOV  AL,01 
MOV  CX,01 
MOV  DX,SEG FNAME 
MOV  DS,DX 
MOV  DX,OFFSET FNAME 
INT   21H ;CALL DOS
检验文件属性,AL置为00,操作后当前的属性值返回到CX寄存器。
改变文件属性,置AL为01,CX放入新的属性,操作把这个新属性置入目录项。

(6)写磁盘文件

1.用ASCIZ串从系统中得到文件代号
2.用INT 21H的3CH功能号建立文件
3.用INT 21H的40H功能号写入文件
4.用INT 21H的3EH关闭文件

(7)读磁盘文件

1.用ASCIZ串从系统中得到文件代号
2.用INT 21H的3DH功能号打开文件
3.用INT 21H的3FH功能号读入文件
4.用INT 21H的3EH关闭文件

(8)移动读写指针
DOS提供了移动读写指针功能42H,该功能要求在BX中指定文件代号,由AL中的代码确定改变指针的三种方式。在每种方式中,由CX和DX指定一个双字长的偏移值,低位字在DX中,高位字在CX中,这个偏移值是一个带符号的整数,它可以是正数,也可以是负数。

①AL=00 绝对移动方式 偏移从文件首开始计算。
例:从文件首开始,移动指针1024字节。
  MOV AH,42H
  MOV AL,00
  MOV BX,HANDLE1
  MOV CX,00
  MOV DX,1024
  INT 21H
  JC ERROR

②AL=01 相对移动方式 当前的指针值加上偏移值作为新的指针值。
例:MOV BX,HANDLE
MOV CX,0
MOV DX,N
CMP DX,0
JGE POINT
NOT CX
POINT:MOV AL,1
MOV AH,42H
INT 21H
JC ERROR

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/74002.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第二章:CSS基础进阶-part2:CSS过渡与动画

文章目录 CSS3 过渡动画一、transition属性二、transform属性-2D变换2.1 tanslate : 移动2.2 rotate-旋转2.3 scale-变形2.4 skew-斜切2.5 transform-origin: 变换中心点设置 三、CSS3关键帧动画四、CSS3-3D变换4.1 perspective 定义3D元素距视图距离4.2 transform-…

微服务系列(2)--注册中心

在博文:微服务系列(1)里我们提到过注册中心的概念,简单来说微服务注册中心是一个用于存储和管理微服务实例信息的组件,它提供了服务注册、服务发现、服务健康检查等功能,以确保微服务之间的稳定通信。在微服务架构中,各…

工程监测振弦采集仪采集到的数据如何进行分析和处理

工程监测振弦采集仪采集到的数据如何进行分析和处理 振弦采集仪是一个用于测量和记录物体振动的设备。它通过测量物体表面的振动来提取振动信号数据,然后将其转换为数字信号,以便进行分析和处理。在实际应用中,振弦采集仪是广泛应用于机械、建…

C#软件外包开发流程

C# 是一种由微软开发的多范式编程语言,常用于开发各种类型的应用程序,从桌面应用程序到移动应用程序和Web应用程序。下面和大家分享 C# 编程学习流程,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&#…

深度学习笔记(kaggle课程《Intro to Deep Learning》)

一、什么是深度学习? 深度学习是一种机器学习方法,通过构建和训练深层神经网络来处理和理解数据。它模仿人脑神经系统的工作方式,通过多层次的神经网络结构来学习和提取数据的特征。深度学习在图像识别、语音识别、自然语言处理等领域取得了…

通过代码实现窗口界面布局的方法

在QWidget窗口中添加相关事件resizeEvent()函数并编写相关功能代码: void Widget::resizeEvent(QResizeEvent *event) {QSize szui->plainTextEdit->size();ui->plainTextEdit->move(5,5);ui->pabpic->move(5,sz.height()5);ui->plainTextEd…

上传excel文件

文件上传&#xff0c;其实就是用el-upload组件来实现上传&#xff0c;只是换了样式&#xff0c;和图片上传一样 <el-form-item label"选择文件"><el-input placeholder"请选择文件" v-model"form.file" disabled style"width: 45…

Android T 窗口层级其二 —— 层级结构树的构建(更新中)

如何通过dump中的内容找到对应的代码&#xff1f; 我们dump窗口层级发现会有很多信息&#xff0c;adb shell dumpsys activity containers 这里我们以其中的DefaultTaskDisplayArea为例 在源码的framework目录下查找该字符串&#xff0c;找到对应的代码就可以通过打印堆栈或者…

vue.draggable浅尝

介绍 Vue.Draggable是一款基于Sortable.js实现的vue拖拽插件。支持移动设备、拖拽和选择文本、智能滚动&#xff0c;可以在不同列表间拖拽、不依赖jQuery为基础、vue 2过渡动画兼容、支持撤销操作&#xff0c;总之是一款非常优秀的vue拖拽组件。本篇将介绍如何搭建环境及简单的…

Python爬虫之解决浏览器等待与代理隧道问题

作为专业爬虫程序员&#xff0c;我们往往需要应对一些限制性挑战&#xff0c;比如浏览器等待和使用代理隧道。在Python爬虫开发中&#xff0c;这些问题可能会导致我们的爬虫受阻。本文将为你分享解决这些问题的方案&#xff0c;帮助你顺利应对浏览器等待和代理隧道的挑战&#…

jeecg-boot批量导入问题注意事项

现象&#xff1a; 由于批量导入数据速度很快&#xff0c; 因为数据库中的create time字段的时间可能一样&#xff0c;并且jeecg框架自带的是根据生成时间排序&#xff0c; 因此在前端翻页查询的时候&#xff0c;数据每次排序可能会不一样&#xff0c; 会出现第一页已经出现过一…

分类预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元多输入分类预测

分类预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元多输入分类预测 目录 分类预测 | MATLAB实现BO-BiGRU贝叶斯优化双向门控循环单元多输入分类预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.Matlab实现BO-BiGRU贝叶斯优化双向门控循环单元多特征分…

dirsearch_暴力扫描网页结构

python3 dirsearch 暴力扫描网页结构&#xff08;包括网页中的目录和文件&#xff09; 下载地址&#xff1a;https://gitee.com/xiaozhu2022/dirsearch/repository/archive/master.zip 下载解压后&#xff0c;在dirsearch.py文件窗口&#xff0c;打开终端&#xff08;任务栏…

Linux命名管道进程通信

文章目录 前言一、什么是命名管道通信二、创建方式三、代码示例四、文件进程通信总结 前言 命名管道 是实现进程间通信的强大工具&#xff0c;它提供了一种简单而有效的方式&#xff0c;允许不同进程之间进行可靠的数据交换。不仅可以在同一主机上的不相关进程间进行通信&…

2023年国赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

【JavaScript】match用法 | 正则匹配

match正则匹配 var e "www.apple.com:baidu.com" var match e.match(/com/g) console.log("match: "match);> "match: com,com"match返回值问题 match的返回值是一个数组 数组的第0个元素是与整个正则表达式匹配的结果 数组的第1个元素是…

【新品发布】ChatWork企业知识库系统源码

系统简介 基于前后端分离架构以及Vue3、uni-app、ThinkPHP6.x、PostgreSQL、pgvector技术栈开发&#xff0c;包含PC端、H5端。 ChatWork支持问答式和文档式知识库&#xff0c;能够导入txt、doc、docx、pdf、md等多种格式文档。 导入数据完成向量化训练后&#xff0c;用户提问…

查看单元测试用例覆盖率新姿势:IDEA 集成 JaCoCo

1、什么是 IDEA IDEA 全称 IntelliJ IDEA&#xff0c;是 Java 编程语言开发的集成环境。IntelliJ 在业界被公认为最好的 Java 开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE 支持、各类版本工具(git、SVN 等)、JUnit、CVS 整合、代码分析、 创新的 GUI…

[NDK]从Opengles到Vulkan-基础篇(2)-运行配置

上一篇我们介绍了Opengl和Vulkan运行环境的不同。 引入Opengles,我们需要做的是,在Cmakes中配置动态库引入。 使用opengles2就用GLESv2,用es3就用GLESv3,而EGL需要使用配置EGL环境 这里两个比较基础的东西是EGL和GLES的库引入。 es2只要Android 4.0就开始支持,es3是4.4开…

opencv图片灰度二值化

INCLUDEPATH D:\work\opencv_3.4.2_Qt\include LIBS D:\work\opencv_3.4.2_Qt\x86\bin\libopencv_*.dll #include <iostream> #include<opencv2/opencv.hpp> //引入头文件using namespace cv; //命名空间 using namespace std;//opencv这个机器视…