Assembly 在部件中创建和保存文本文件
我正在尝试使用MASM 6.11中的汇编语言和Windows 7上的DOSBox创建新文件。我已将驱动器C、D、E装入文件夹BIN、BINR和palce,其中是我的程序。当我试图在控制台中运行我的程序时,它会被卡住,但当我对它进行调试时,使用CV命令的过程会正常终止。这是我的密码:Assembly 在部件中创建和保存文本文件,assembly,masm,Assembly,Masm,我正在尝试使用MASM 6.11中的汇编语言和Windows 7上的DOSBox创建新文件。我已将驱动器C、D、E装入文件夹BIN、BINR和palce,其中是我的程序。当我试图在控制台中运行我的程序时,它会被卡住,但当我对它进行调试时,使用CV命令的过程会正常终止。这是我的密码: .model small .stack 100h .data NazwaPliku db "dane.txt", 0 UchwytPliku dw ? Napis db "ASSEMB
.model small
.stack 100h
.data
NazwaPliku db "dane.txt", 0
UchwytPliku dw ?
Napis db "ASSEMBLER"
.code
ASSUME cs: @code, ds: @data
mov ax, @data
mov ds, ax
main PROC
MOV AH,3CH
MOV CX,0
MOV DX,OFFSET NazwaPliku
INT 21H
MOV AH, 3DH
MOV AL, 0
MOV DX, OFFSET NazwaPliku
INT 21H
mov UchwytPliku, ax
MOV AH,40H
MOV BX, UchwytPliku
MOV DX,OFFSET Napis
MOV CX, 5
INT 21H
mov ah, 4Ch
mov al, 0
int 21h
main ENDP
END main
我知道这是一个非常简单的程序,但我不能让它工作…这是你的程序,有修改
.model small
.stack 100h
.data
NazwaPliku db "dane.txt", 0
UchwytPliku dw ?
Napis db "ASSEMBLER"
.code
ASSUME cs: @code, ds: @data
main PROC
mov ax, @data <- Put in the execution path!
mov ds, ax <- so below "main PROC"
MOV AH,3CH
MOV CX,0
MOV DX,OFFSET NazwaPliku
INT 21H
jc fail <- In case DOS failed the operation
;MOV AH, 3DH <- After a succesful creation, the
;MOV AL, 1 <- file is already opened for normal
;MOV DX, OFFSET NazwaPliku <- read and write access.
;INT 21H
;jc fail
mov UchwytPliku, ax
MOV AH,40H
MOV BX, UchwytPliku
MOV DX,OFFSET Napis
MOV CX, 5 <- "ASSEMBLER" has 9 bytes. Typo ?
INT 21H
;jc fail
fail:
mov ah, 4Ch
mov al, 0
int 21h
main ENDP
END main
您将以AH=3Ch和AH=3Dh打开文件两次。
DS
的初始化将不会完成。将行main PROC
向上推两行。另外,在使用int 21h/ah=3Dh
打开文件时,您似乎没有设置访问代码。如果要打开文件进行写入,应使用al=1
或al=2
。当您使用int 21h/ah=3Ch
创建文件时,您应该首先清除cl
,除非您需要文件上的任何特殊属性。谢谢大家-现在一切正常:)
MOV AH,3CH
MOV CX,0
MOV DX,OFFSET NazwaPliku
INT 21H
jc fail
mov bx, ax
mov ah, 3Eh
int 21h
jc fail
MOV AH, 3DH
MOV AL, 1
MOV DX, OFFSET NazwaPliku
INT 21H
jc fail
mov UchwytPliku, ax