zoukankan      html  css  js  c++  java
  • ReadFile Program Example

    The following program opens a file for input, reads its contents into a buffer, and displays the
    buffer. All procedures are called from the Irvine32 library:

    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
    View Code

    The program reports an error if the file cannot be opened:

    Enter an input filename: crazy.txt
    Cannot open file

    It reports an error if it cannot read from the file. Suppose, for example, a bug in the program used
    the wrong file handle when reading the file:

    Enter an input filename: infile.txt
    Error reading file. Error 6: The handle is invalid.

    The buffer might be too small to hold the file:

    Enter an input filename: infile.txt
    Error: Buffer too small for the file

  • 相关阅读:
    怎么获取数组中的对象的某一项之和
    原型链
    js的事件循环(Eventloop) 机制/js的宏任务微任务执行顺序
    怎么替换数组中对象的属性
    求对象所有值的和
    sequelize中duplicating:false的使用
    WebSocket
    轮播

    ssl tsl
  • 原文地址:https://www.cnblogs.com/dreamafar/p/5985902.html
Copyright © 2011-2022 走看看