我正在尝试使用MASM 6.11中的汇编语言和Windows 7上的DOSBox创建新文件。我将驱动器C,D,E作为文件夹BIN,BINR和palce安装在我的程序中。当我尝试在控制台中运行我的程序时它会卡住,但是当我对它进行debbuging时,使用CV命令进程正常终止。这是我的代码:
.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
我知道这是一个非常简单的程序,但我无法让它工作......
答案 0 :(得分:1)
这是您的修正程序
.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
最好在操作失败时显示消息。
如果您确实需要明确地打开文件,请在创建文件后先关闭它。
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