关于8086汇编,int21写入文件不成功,文件为空

;rddisk.asm
;function:创建一个save.txt,并把0磁头0磁柱1扇区数据读取过去

assume cs:code,ds:data
data segment
file db 'save.txt',0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0
mov es,ax
;创建文件save.txt
mov dx,offset file
mov cx,0
mov ah,3cH
int 21H

;将0磁头,0柱面,1扇区读取到0:200内存区
mov bx,200H
mov ah,2

mov al,1

mov ch,0

mov cl,1

mov dh,0

mov dl,80H

int 13H

   ;打开save.txt
   mov dx,offset file
   mov al,1        
   mov ah,3dH
   int 21h

   ;将0:200写入save.txt
   mov bx,0
   mov ds,bx
   mov dx,200H
   mov bx,ax       
   mov cx,256      
   mov ah,40H
   int 21H

   ;关闭文件
   mov ah,3eH
   int 21H

   mov ax,4c00H
   int 21H

code ends
end start

你在什么环境下运行的,如果是windows,根本不让你写扇区的。
如果你要看到效果,需要安装一个bochs之类的模拟器,里面运行dos 6.x等真正的dos系统。在你的虚拟磁盘上写文件。

在windows下是不能,我装了个虚拟机,里面是dos7.10,可以读写扇区,但我读写文件不成功

在dos6.22实机 上没有问题的,早年经常用。

谢谢楼上两位,问题已经解决,创建文件后得到的文件号和打开文件得到的文件号不一样,也就是说,创建后就相当于打开了,
已经获得了一个文件号,不需再打开。如果再次打开那就操作的不是那个文件。
删除打开的代码 写入成功