在汇编程序中写入文件

时间:2015-04-09 17:24:42

标签: assembly nasm dosbox

我的任务是创建一个程序,将一些字符串写入文件。到目前为止,我想出了这个:

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。

1 个答案:

答案 0 :(得分:8)

您必须先创建文件(如果已存在则打开它),然后编写该字符串,最后关闭该文件。下一个代码是MASM并用EMU8086制作,我发布它是因为它可以帮助你理解如何做,中断是相同的,以及参数,所以算法:

.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