Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 从汇编MASM中的txt文件读取?_File_Assembly_Text_Masm_Irvine32 - Fatal编程技术网

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

File 从汇编MASM中的txt文件读取?,file,assembly,text,masm,irvine32,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,OFF

在下面的代码中,
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
RTFM:

readfromfileproc

将输入文件读入缓冲区

调用参数:

  • EAX=打开的文件句柄
  • EDX=输入缓冲区的偏移量
  • ECX=要读取的最大字节数
返回参数: 如果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
您需要
偏移缓冲区
bytesRead
是读取的字节数,不是字符串,您的文本应该在
缓冲区中