使用int 21h读取文件时出错

时间:2016-12-20 11:18:02

标签: assembly x86-16 emu8086

我正在尝试使用int 21h命令来读取文件并打开标志CF并且AX = 6这意味着我的文件处理程序无效。
你们有机会知道它为什么不起作用。这是我的程序:

proc openFile
    call xorAll
    mov ah,0Fh
    mov al,0
    mov dx, offset fileName
    int 21h
    jc error                    
    mov fileHandler, ax
    ret
endp openFile

proc closeFile
    call xorAll
    mov ah,10h
    mov bx, fileHandler
    int 21h
    ret
endp closeFile 

proc failOpenFile 
    mov ah,09
    int 21h
    ret
endp failOpenFile

proc xorAll
    xor ax,ax
    xor bx,bx
    xor cx,cx
    xor dx,dx
    ret
endp xorAll 

proc waitForClick
    mov ah,0
    int 16h
    ret
endp waitForClick

proc readBytes
    call xorAll
    mov ah,3Fh
    mov bx,fileHandler
    mov cl,bytesToRead 
    mov dx,offset readInfo
    int 21h 
    jc error
    ret
endp readBytes

我只是不明白为什么它不起作用。 FYI fileHandler位于dw

1 个答案:

答案 0 :(得分:2)

DOS函数0Fh和10h使用FCB(文件控制块,CP / M次的旧复制)。这些已经过时了。

你应该使用3Dh(打开文件)和3Eh(关闭文件)代替那些使用句柄。