从汇编MASM中的txt文件中读取?

时间:2013-12-22 01:59:44

标签: file assembly text masm irvine32

在下面的代码中,buffer是我的缓冲区读取,fileName是文件的名称,bytesRead应该是返回的字符串。

我尝试从中读取,但它告诉我缓冲区大小为6。

INCLUDE Irvine32.inc
INCLUDE macros.inc

.data
MAX = 5000
fileName BYTE 80 DUP (?)
fileHandle HANDLE ?
bytesRead DWORD ?
buffer BYTE MAX DUP(?)

.code
main PROC

mov  EDX,OFFSET fileName
call ReadString

mov  EDX,OFFSET fileName
call OpenInputFile
mov  fileHandle, EAX

mov  eax,fileHandle
mov  ecx,MAX
call ReadFromFile
mov  bytesRead,eax
mov  edx, offset bytesRead
call WriteString
call crlf
call WriteDec
call crlf

exit
main ENDP
END main

1 个答案:

答案 0 :(得分:1)

RTFM:

ReadFromFile PROC

将输入文件读入缓冲区。

致电args:

  • EAX =打开文件句柄
  • EDX =输入缓冲区的偏移量
  • ECX =要读取的最大字节数

返回arg: 如果CF = 0,则EAX包含读取的字节数。 如果CF = 1,则EAX包含系统错误代码。调用WriteWindowsMsg 获取错误的文本表示。

示例:

.data
BUFSIZE = 5000
buffer BYTE BUFSIZE DUP(?)
bytesRead DWORD ?

.code
  mov  eax,fileHandle
  mov  edx,OFFSET buffer
  mov  ecx,BUFSIZE
  call ReadFromFile
  jc   show_error_message
  mov  bytesRead,eax

你需要OFFSET bufferbytesRead是读取的字节数,而不是字符串,您的文字应该在buffer中。