使用 int 21h 读取文件时出现错误
Bug when using the int 21h to read files
我正在尝试使用 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
我只是不明白为什么它不起作用。仅供参考,fileHandler 在 dw
中。
DOS 函数 0Fh 和 10h 使用 FCB(文件控制块,来自 CP/M-times 的旧遗迹)。这些已经过时了。
您应该改用 3Dh(打开文件)和 3Eh(关闭文件),它们使用句柄。
我正在尝试使用 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
我只是不明白为什么它不起作用。仅供参考,fileHandler 在 dw
中。
DOS 函数 0Fh 和 10h 使用 FCB(文件控制块,来自 CP/M-times 的旧遗迹)。这些已经过时了。
您应该改用 3Dh(打开文件)和 3Eh(关闭文件),它们使用句柄。