在汇编程序中写入文件

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