我在Stack Overflow上进行了搜索,但我没有找到与我的问题相似的内容。我的问题是这样的:我有一个代码打开一个文件并在最后写一条消息。当我第一次使用int 21h写入文件时,如果文件为空则写得很好,但如果文件有内容,程序会在末尾添加许多垃圾字节(字符如畂或其他日文或中文字符) )。
我检查过程序写的字节数不超过消息长度。请帮我。这是我的源代码:
.model tiny
.code
main:
call delta
delta:
pop bp
sub bp, offset delta
mov ax, @code ;Get the address of code segment and store it in ax
mov ds, ax ;Put that value in Data segment pointer.
;Now, we can reference any data stored in the code segment
;without fail.
;Subroutines
open:
mov ax, 3D02H ;Opens a file
lea dx, [bp+filename];Filename
int 21h ;Call DOS interrupt
mov handle, ax ;Save the handle in variable
move_pointer_to_end:
mov bx, handle
mov ax,4202h ; Move file pointer
xor cx,cx ; to end of file
cwd ; xor dx,dx
int 21h
write:
mov ax, 4000H
mov bx, handle
lea dx, [bp+sign]
mov cx, 16
int 21H
exit:
mov ah,4Ch ;Terminate process
mov al,0 ;Return code
int 21h
datazone:
handle dw ?
filename db 'C:\A.txt', 0
sign db 'Bush was here!!', 0
end main
请帮助我!!
答案 0 :(得分:2)
那是因为您要附加数据的文件是以unicode编码的。如果从记事本或其他文本编辑器中写出文件并保存,则必须选择ANSI作为编码。然后,如果您将程序指向ANSI编码的文本文件,它应该附加用预期结果指示的字符串。
Unicode为每个字符分配两个字节,因此在十六进制编辑器中,您可能会看到s.o.m.e.t.h.i.n.g. .l.i.k.e. .t.h.i.s.
而不是something like this
,您可能会看到ANSI或UTF-8。