在下面的代码中,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
答案 0 :(得分:1)
RTFM:
ReadFromFile PROC
将输入文件读入缓冲区。
致电args:
返回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 buffer
。 bytesRead
是读取的字节数,而不是字符串,您的文字应该在buffer
中。