2013-12-22 5 views
1

아래 코드에서 buffer은 내 버퍼 읽기, fileName은 파일 이름, bytesRead은 반환 된 문자열로 간주됩니다.어셈블리 MASM의 txt 파일에서 읽기?

나는 그것에서 읽으려고하지만 버퍼 크기가 RTFM 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

것을 저에게 말한다 :

ReadFromFile PROC

가 버퍼에 입력 파일을 읽습니다.

통화 인수 :

  • 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 buffer이 필요합니다. bytesRead은 문자열이 아닌 읽은 바이트 수이며, 텍스트는 buffer이어야합니다.