2025年4月3日 星期四 乙巳(蛇)年 正月初四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 汇编

汇编语言Irvine32链接库文件I/O(输入/输出)

时间:03-05来源:作者:点击数:72

Irvine32 库中包含了一些简化的文件 I/O 过程。这些过程已经封装到本章描述的 Win32 API 函数中。

下面的源代码就给岀了 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
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门