【发布时间】:2022-01-16 06:53:07
【问题描述】:
我必须编写一个创建和删除目录的 TASM 程序,但我找到了仅创建文件的示例。
model small
.data
handle dw 0
filename db "file2.txt",0
.stack 256
.code
main:
mov ax,@data
mov ds,ax
mov ah,3ch
mov cx,1
lea dx,filename
int 21h
jc exit
mov handle,ax
exit:
mov ax,4c00h
int 21h
end main
如何修改此代码以创建目录而不是文件?以及如何删除创建的火药?
【问题讨论】:
-
int 21h 这不是 Windows。使用
CreateDirectoryW -
使用DOS
int 21his39h创建目录的函数代码。 -
您的示例是针对 DOS 的,当您使用 DOS 函数CREATE SUBDIRECTORY 和 REMOVE SUBDIRECTORY 时,它将在 32 位 Windows 中运行。您应该更新您的问题的标签。或者,如果您需要 MS Windows 的原生 PE 程序,请搜索更好的 32 位保护模式程序示例。
-
TASM 甚至可以制作原生 Windows 可执行文件,而不仅仅是 DOS?我认为 Windows 程序会使用
.386/.model flat,stdcall。所以看起来你实际上是在制作一个纯 DOS 程序。如果您碰巧在旧的 / 32 位 Windows 系统上运行它,它可能会在 NTVDM 下运行。所以你应该修复你的标签,并检查一个 DOS 系统调用列表。必要的调用应该列在创建文件的调用旁边。
标签: windows winapi assembly mkdir tasm