获取当前目录名称程序集 8086 tasm

Get current directory name assembly 8086 tasm

我不知道为什么函数 47h returns 缓冲区中的 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

我的 MS-DOS 参考说 Int 21h 函数 47h:

If the directory is the root directory, the string returned is nul (first byte 0).

此外,请注意 int 21h 函数 09h 需要一个 $ 终止字符串。

在 DOSBOX 0.74 中没有问题
如果我将你的程序 PAULC.EXE 放在我的目录 C:\ASM 中,该目录有一个子目录 EXEMPLES,然后从 DOSBOX 提示符下执行这些命令,我​​得到正确的响应:

mount d c:\asm
cd exemples
..\paulc.exe

屏幕现在显示:

EXEMPLES

如果现在我 return 从这个子目录和 运行 你的程序再次:

cd..
paulc.exe

我得到一个空字符串。