2011-12-28 100 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

你這是什麼意思是「無法打開」?如果你運行代碼會發生什麼?你預期會發生什麼?另外,請指明您正在處理的平臺。 – 2011-12-28 11:52:04

+0

在此工作。猜測:文件權限有問題。 – rkhb 2016-01-02 07:35:39

回答

0

,如果你有,你想從驅動器C例如文件名應包含驅動器名讀取文件: 文件名必須是「C:\ anyFileName.txt」