2011-12-28 21 views
2

まず:アセンブリ内の このコードは、私はそれが名前読み取りファイル

セカンドだ入力ファイルを開くことができません。 を私はそれを使用している私のコードにこのコードをマージする方法がわかりません開いているファイル

TITLE Reading a File (ReadFile.asm) 
            ; Opens, reads, and displays a text file using 
            ; procedures from Irvine32.lib. 
INCLUDE Irvine32.inc 
INCLUDE macros.inc 
BUFFER_SIZE = 5000 
.data 
buffer BYTE BUFFER_SIZE DUP(?) 
filename BYTE 80 DUP(0) 
fileHandle HANDLE ? 
.code 
main PROC 
              ; Let user input a filename. 
mWrite "Enter an input filename: " 
mov edx,OFFSET filename 
mov ecx,SIZEOF filename 
call ReadString 
              ; Open the file for input. 
mov edx,OFFSET filename 
call OpenInputFile 
mov fileHandle,eax 
              ; Check for errors. 
cmp eax,INVALID_HANDLE_VALUE    ; error opening file? 
jne file_ok         ; no: skip 
mWrite <"Cannot open file",0dh,0ah> 
jmp quit          ; and quit 
file_ok: 
              ; Read the file into a buffer. 
mov edx,OFFSET buffer 
mov ecx,BUFFER_SIZE 
call ReadFromFile 
jnc check_buffer_size      ; error reading? 
mWrite "Error reading file. "    ; yes: show error message 
call WriteWindowsMsg 
jmp close_file 
check_buffer_size: 
cmp eax,BUFFER_SIZE       ; buffer large enough? 
jb buf_size_ok ; yes 
mWrite <"Error: Buffer too small for the file",0dh,0ah> 
jmp quit          ; and quit 
buf_size_ok: 
mov buffer[eax],0       ; insert null terminator 
mWrite "File size: " 
call WriteDec        ; display file size 
call Crlf 
              ; Display the buffer. 
mWrite <"Buffer:",0dh,0ah,0dh,0ah> 
mov edx,OFFSET buffer      ; display the buffer 
call WriteString 
call Crlf 
close_file: 
mov eax,fileHandle 
call CloseFile 
quit: 
exit 
main ENDP 
END main 
+2

ファイル名でなければなりませんが「開けない」という意味ですか?コードを実行するとどうなりますか?代わりに何が起こると思いますか?また、作業しているプラ​​ットフォームを指定してください。 –

+0

ここに動作します。推測:ファイルのアクセス許可に関する問題。 – rkhb

答えて

0

あなたは、ファイル名にはドライブ名が含まれている必要があり、たとえば、Cドライブから読み込みたいファイルがある場合:あなたは何をすべきか:「\ anyFileName.txt C」

関連する問題