程序集 - 试图写入文件但访问被拒绝

Assembly - trying to write to file but access denied

我有一个文件需要从数据段中的 "Buffer" 写入,但是当我尝试使用 DOS 中断 21h 40h 写入文件时,它将进位标志设置为 1,斧头到 05 - 这意味着访问被拒绝,该怎么办

代码段:

    proc scanScreen

        push offset Buffer
        call openFile
        mov [fileHandle], ax


        mov dx, [BMPX]
        mov di, [BMPY]
        mov cx, [BMPHeight]
        scanScreen_toBuffer:
            push cx
            mov si, offset graphicBuffer
            mov cx, [BMPWidth]
            scanScreen_toBuffer_line:
                push cx
                mov bh, 0
                mov cx, dx
                push dx
                mov dx, di
                mov ah, 0Dh
                int 10h
                mov [si], al
                inc si
                pop dx
                inc dx
                pop cx
            loop scanScreen_toBuffer_line
            mov ah, 40h                             -
            mov cx, [BMPWidth]                       |
            mov dx, offset graphicBuffer             |> HERE IS THE PROBLEM
            mov bx, [fileHandle]                     |  
            int 21h                                 -     
            pop cx
            mov dx, [BMPX]
            inc di
        loop scanScreen_toBuffer

        call closeFile
        ret
    endp scanScreen

来电者:(我扫描屏幕并立即打印,看它是否保持不变,这意味着它有效)

            mov [BMPX],66
            mov [BMPY],38
            mov [BMPHeight], 5
            mov [BMPWidth], 12
            call scanScreen
            push offset Buffer
            call openFile
            mov [fileHandle], ax
            mov bx, [fileHandle]
            call showBMP
            call closeFile

数据段:

    BMPHeader       db HEADER_SIZE dup (RESET)
    BMPPalette      db AMOUNT_OF_COLORS * COLOR_SIZE dup (RESET)
    BMPX            dw ?
    BMPY            dw ?
    BMPWidth        dw ?
    BMPHeight       dw ?
    BMPMaxLine      db MAX_WIDTH dup (RESET)
    graphicBuffer   db MAX_WIDTH dup (RESET)

    Buffer          db "buffer.buf", RESET

    fileHandle      dw ?

变量:

   RESET               equ 0
MAX_WIDTH           equ 320
AMOUNT_OF_COLORS    equ 256
HEADER_SIZE         equ 54
COLOR_SIZE          equ 4

当我打开文件时,我没有打开它进行写入

来自

        xor ax, ax
        mov ah, 3Dh
        int 21h

        mov al, 1
        mov ah, 3Dh
        int 21h