汇编菜鸟又遇到问题了,求大神帮助
自己写了个文件操作程序,打开文件成功了,可关闭文件出错了,始终不明白先看代码:
DATA SEGMENT
TEMP DB 1024 DUP(00H)
PATH DB "C:\File\12.txt",0
MSG1 DB "Open File Failed !",0AH,0DH,"$"
MSG2 DB "Open File Succeed !",0AH,0DH,"$"
MSG3 DB "ERROR !",0AH,0DH,"$"
F_HD DW 0000H ;------------ 文件句柄保存位置
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,42H ;----------------调用DOS中断,打开文件
MOV AH,3DH
LEA DX,PATH
INT 21H ;----------------打开成功,则AX==文件句柄
JC FAIL ;----------------打开文件失败跳转并显示Open file faile信息
LEA DX,MSG2 ;------------------打开文件成功,显示Open file success信息
MOV AH,09H
INT 21H
JMP NEXT ;-----------------信息显示完后,进行跳到NEXT
FAIL:
MOV DX,OFFSET MSG1
MOV AH,09H
INT 21H
JMP EXIT
NEXT:
LEA SI,F_HD ;-----------------保存文件句柄到F-HD
MOV DS:[SI],AX
MOV BX,[F_HD] ;------------------调用DOS中断,关闭文件,BX=关闭文件句柄
MOV AH,3EH
INT 21H ;------------------如果CF==0,关闭成功,CF==1关闭失败
JNC CTN ;----------------关闭失败,显示失败信息
MOV DX,OFFSET MSG3
MOV AH,09H
INT 21H
CTN: ;-----------------程序结束
EXIT:
MOV AH,08H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
中断3EH功能:关闭指定句柄的文件
入口参数:AH=3EH
BX=文件句柄
出口参数:CF=0——关闭成功,否则,AX=错误号(06H),其含义见错误代码表
我不明白的是,程序中打开文件成功了,AX==文件句柄,然后我将文件句柄赋值给BX,最终文件确关闭失败(失败后我用DEBUG看到AX==0006),为什么???求大神帮助