在程序集中创建和保存文本文件
Creating and save text file in assembly
我正在尝试使用 MASM 6.11 和 DOSBox 中的汇编语言在 Windows 上创建新文件 7. 我将驱动器 C、D、E 安装为文件夹 BIN、BINR 和 palce,我的程序在哪里。当我尝试在控制台中 运行 我的程序时,它卡住了,但是当我调试它时,使用 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
我知道这是一个非常简单的程序,但我无法让它工作...
这是经过更正的程序
.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
我正在尝试使用 MASM 6.11 和 DOSBox 中的汇编语言在 Windows 上创建新文件 7. 我将驱动器 C、D、E 安装为文件夹 BIN、BINR 和 palce,我的程序在哪里。当我尝试在控制台中 运行 我的程序时,它卡住了,但是当我调试它时,使用 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
我知道这是一个非常简单的程序,但我无法让它工作...
这是经过更正的程序
.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