在汇编程序中写入文件
Writing to a file in assembler
我的任务是创建一个将一些字符串写入文件的程序。到目前为止,我想到了这个:
org 100h
mov dx, text
mov bx, filename
mov cx, 5
mov ah, 40h
int 21h
mov ax, 4c00h
int 21h
text db "Adam$"
filename db "name.txt",0
但它什么也没做。我正在使用 nasm 和 dosbox。
您必须先创建文件(如果文件已经存在则打开它),然后写入字符串,最后关闭文件。接下来的代码是MASM,用EMU8086做的,我post是因为它可以帮助你理解怎么做,中断是一样的,还有参数,所以算法:
.stack 100h
.data
text db "Adam$"
filename db "name.txt",0
handler dw ?
.code
;INITIALIZE DATA SEGMENT.
mov ax,@data
mov ds,ax
;CREATE FILE.
mov ah, 3ch
mov cx, 0
mov dx, offset filename
int 21h
;PRESERVE FILE HANDLER RETURNED.
mov handler, ax
;WRITE STRING.
mov ah, 40h
mov bx, handler
mov cx, 5 ;STRING LENGTH.
mov dx, offset text
int 21h
;CLOSE FILE (OR DATA WILL BE LOST).
mov ah, 3eh
mov bx, handler
int 21h
;FINISH THE PROGRAM.
mov ax,4c00h
int 21h
我的任务是创建一个将一些字符串写入文件的程序。到目前为止,我想到了这个:
org 100h
mov dx, text
mov bx, filename
mov cx, 5
mov ah, 40h
int 21h
mov ax, 4c00h
int 21h
text db "Adam$"
filename db "name.txt",0
但它什么也没做。我正在使用 nasm 和 dosbox。
您必须先创建文件(如果文件已经存在则打开它),然后写入字符串,最后关闭文件。接下来的代码是MASM,用EMU8086做的,我post是因为它可以帮助你理解怎么做,中断是一样的,还有参数,所以算法:
.stack 100h
.data
text db "Adam$"
filename db "name.txt",0
handler dw ?
.code
;INITIALIZE DATA SEGMENT.
mov ax,@data
mov ds,ax
;CREATE FILE.
mov ah, 3ch
mov cx, 0
mov dx, offset filename
int 21h
;PRESERVE FILE HANDLER RETURNED.
mov handler, ax
;WRITE STRING.
mov ah, 40h
mov bx, handler
mov cx, 5 ;STRING LENGTH.
mov dx, offset text
int 21h
;CLOSE FILE (OR DATA WILL BE LOST).
mov ah, 3eh
mov bx, handler
int 21h
;FINISH THE PROGRAM.
mov ax,4c00h
int 21h