首页 > 汇编语言 > 汇编语言MS-Windows编程
阅读:194
汇编语言Irvine32链接库文件I/O(输入/输出)
Irvine32 库中包含了一些简化的文件 I/O 过程。这些过程已经封装到本章描述的 Win32 API 函数中。
下面的源代码就给岀了 CreateOutputFile、OpenFile、WriteToFile、ReadFromFile 和 CloseFile:
下面的源代码就给岀了 CreateOutputFile、OpenFile、WriteToFile、ReadFromFile 和 CloseFile:
;------------------------------------------------------ CreateOutputFile PROC ; ; 创建一个新文件并以输出模式打开 ; 接收: EDX 指向文件名 ; 返回: 如果文件创建成功, EAX 包含一个有效的文件句柄。 ; 否则,EAX 等于 INVALID_HANDLE_VALUE ;------------------------------------------------------ INVOKE CreateFile, edx, GENERIC_WRITE, DO_NOT_SHARE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 ret CreateOutputFile ENDP ;------------------------------------------------------- OpenFile PROC ;打开一个新的文本文件进行输入。 ;接收:EDX 指向文件名。 ;返回:如果文件打开成功,EAX 包含一个有效的文件 ;句柄。否则,EAX 等于 INVALID_HANDLE_VALUE。 ;------------------------------------------------------- INVOKE CreateFilez edx, GENERIC_READ, DO_NOT_SHARE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ret OpenFile ENDP ;-------------------------------------------------------- WriteToFile PROC ; ; 将缓冲区内容写入一个输出文件 ; 接收: EAX = 文件句柄, EDX = 缓冲区偏移量, ; ECX = 写入字节数 ; 返回: EAX = 实际写入文件的字节数 ; 如果 EAX 返回的值小于 ECX 中的参数, 则可能发生错误 ;-------------------------------------------------------- .data WriteToFile_1 DWORD ? ; 已写入字节数 .code INVOKE WriteFile, ; 向文件写缓冲区 eax, ; 文件句柄 edx, ; 缓冲区指针 ecx, ; 写入字节数 ADDR WriteToFile_1, ; 已写入字节数 0 ; 覆盖执行标志 mov eax,WriteToFile_1 ; 返回值 ret WriteToFile ENDP ;-------------------------------------------------------- ReadFromFile PROC ; 将一个输入文件读入缓冲区 ; 接收: EAX = 文件句柄, EDX = 缓冲区偏移量, ; ECX = 读字节数 ; 返回: 如果 CF=0,EAX = 已读字节数 ; 如果 CF=1,则EAX包含Win32 API 函数 GetLastError 返回的系统错误码 ;-------------------------------------------------------- .data ReadFromFile_1 DWORD ? ; 已读字节数 .code INVOKE ReadFile, eax, ; 文件句柄 edx, ; 缓冲区指针 ecx, ; 读取的最大字节数 ADDR ReadFromFile_1, ; 已读字节数 0 ; 覆盖执行标志 mov eax,ReadFromFile_1 ret ReadFromFile ENDP ;-------------------------------------------------------- CloseFile PROC ; 使用句柄为标识符关闭一个文件 ; 接收: EAX = 文件句柄 ; 返回: EAX = 非 0,如果文件被成功关闭 ;-------------------------------------------------------- INVOKE CloseHandle, eax ret CloseFile ENDP
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频