我不知道为什么函数47h在缓冲区中返回ASCIZ。如何获取当前目录的名称?请帮帮我,我的代码如下。
assume cs:code, ds:data
data segment
numed db "Directory name: $"
msge db "Error!$" ;error if jc is set
buffer db 200 dup("$") ;buffer for directory name
data ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
mov dl,0 ;default drive
mov si,offset buffer ;si = buffer
mov ah,47h
int 21h
jc errorr
jmp final
errorr:
mov ah,09h
mov dx,offset msge ;error message
int 21h
final:
mov ah,09h
mov dx,offset buffer;print directory name
int 21h
mov ax, 4C00h
int 21h
code ends
end start
答案 0 :(得分:1)
DOSBOX 0.74中没有问题
如果我将程序PAULC.EXE
放在我的目录C:\ASM
中,该目录具有子目录EXEMPLES
,然后从DOSBOX提示符执行这些命令,我会收到正确的响应:
mount d c:\asm
cd exemples
..\paulc.exe
屏幕现在显示:
EXEMPLES
如果现在我从这个子目录返回并再次运行你的程序:
cd..
paulc.exe
我得到一个空字符串。
答案 1 :(得分:0)
我的MS-DOS参考文献说明Int 21h函数47h:
如果目录是根目录,则返回的字符串为
nul
(第一个字节0)。
另外,请注意int 21h函数09h需要$
终止字符串。