+ -
当前位置:首页 → 问答吧 → 汇编:无法写入文件,却显示在屏幕上

汇编:无法写入文件,却显示在屏幕上

时间:2011-11-28

来源:互联网

我是学的别人的代码写的一段,就是想要讲字符串str1写入文件abc1.txt。可结果却是不能写入文件,文件成功创建了,但没有写入,反而将ds里的一部分内容显示在了屏幕上。这是怎么回事?
[code=Assembly][/code]
data segment
str1 db '000123$'

fname db 'f:\assembly\tools\masm\abc1.txt'
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax



mov ah,3ch ;建立文件
mov dx,offset fname
int 21h


mov ah,3dh ;打开文件
mov dx,offset fname
mov al,2
int 21h

mov dx,0
mov cx,0 ;移动文件指针到末端
mov al,2
mov ah,42h
int 21h

mov cx,20
mov dx,offset str1
mov ah,40h ;写入文件
int 21h

mov ah,3eh ;关闭文件
int 21h

mov ah,4ch
int 21h
code ends
end start

作者: xzhqmly   发布时间: 2011-11-28

创建或打开文件的功能调用返回时,文件句柄是返回在 AX 里的;后续的对文件的操作,读/写/移动文件指针/关闭 等,文件句柄却是在 BX 里的。所以,在顺利地打开或创建文件后,需要将返回的文件句柄由 AX 赋予 BX,甚至是在其它地方保存,以备必要时重新赋予 BX 。

作者: zara   发布时间: 2011-11-29