Dosbox 在创建文本文件时关闭
Dosbox shut down while create text file
为什么我创建文件后我的dosbox会自动关闭??我的代码有什么问题吗?
.model small
.stack 100h
.data
msg1 db 10, 13, 10, 13, "Please select an item:",0Dh,0Ah,0Dh,0Ah,09h
db "1- Create File",0Dh,0Ah,09h
db "2- show data",0Dh,0Ah,09h
db "3- Exit",0Dh,0Ah,09h
db "Enter item number: "
db '$'
msg2 db 10,13,"Success Create$"
file db "test.txt"
handle dw ?
buffer dw 10 dup (?)
.code
main proc
mov ax,@data
mov ds,ax
ShowMenu:
lea dx, msg1
mov ah, 09h
int 21h
mov ah, 01h ;get choice
int 21h
cmp al, "1"
je CreateFile
cmp al, "2"
je ShowData
cmp al, "3"
jmp Quit
jl ShowMenu
Quit:
mov ah,4ch
int 21h
CreateFile:
mov ah,3ch ;create file
mov cx,0
lea dx,file;set file name
int 21h
lea dx,msg2
int 21h
jmp ShowMenu
ShowData:
mov ah,3dh ;open file
mov al,0 ;open as read only
lea dx,file
int 21h
mov handle,ax
;read one char
mov ah,3fh ;service to read file
mov bx,handle
mov cx,1 ;how many byte to read
mov dx,buffer ;where to store
int 21h
;close file
mov ah,3eh
mov bx,handle
int 21h
jmp ShowMenu
main endp
end main
创建文本文件
在显示成功消息 () 之前未设置功能代码 09h 的问题通常只会关闭您的程序,但 不会 DOSBox 模拟器。
您从创建文件中获得的句柄通常会留下 AH=0
,随后会调用 DOS 终止函数。Terminate program
file db "test.txt"
handle dw ?
您程序中的另一个问题是您忘记了零终止 filespec:
file db "test.txt", 0
垃圾文件规范可能会导致 DOSBox 关闭!
因为 handle 变量是用 ? (未初始化的内存)您可能不走运,因为以下字节恰好不是零。
为什么我创建文件后我的dosbox会自动关闭??我的代码有什么问题吗?
.model small
.stack 100h
.data
msg1 db 10, 13, 10, 13, "Please select an item:",0Dh,0Ah,0Dh,0Ah,09h
db "1- Create File",0Dh,0Ah,09h
db "2- show data",0Dh,0Ah,09h
db "3- Exit",0Dh,0Ah,09h
db "Enter item number: "
db '$'
msg2 db 10,13,"Success Create$"
file db "test.txt"
handle dw ?
buffer dw 10 dup (?)
.code
main proc
mov ax,@data
mov ds,ax
ShowMenu:
lea dx, msg1
mov ah, 09h
int 21h
mov ah, 01h ;get choice
int 21h
cmp al, "1"
je CreateFile
cmp al, "2"
je ShowData
cmp al, "3"
jmp Quit
jl ShowMenu
Quit:
mov ah,4ch
int 21h
CreateFile:
mov ah,3ch ;create file
mov cx,0
lea dx,file;set file name
int 21h
lea dx,msg2
int 21h
jmp ShowMenu
ShowData:
mov ah,3dh ;open file
mov al,0 ;open as read only
lea dx,file
int 21h
mov handle,ax
;read one char
mov ah,3fh ;service to read file
mov bx,handle
mov cx,1 ;how many byte to read
mov dx,buffer ;where to store
int 21h
;close file
mov ah,3eh
mov bx,handle
int 21h
jmp ShowMenu
main endp
end main
创建文本文件
在显示成功消息 (
您从创建文件中获得的句柄通常会留下 AH=0
,随后会调用 DOS 终止函数。Terminate program
file db "test.txt" handle dw ?
您程序中的另一个问题是您忘记了零终止 filespec:
file db "test.txt", 0
垃圾文件规范可能会导致 DOSBox 关闭!
因为 handle 变量是用 ? (未初始化的内存)您可能不走运,因为以下字节恰好不是零。