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

时间:2015-12-30 13:25:05

标签: assembly dos x86-16

我不知道为什么函数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

2 个答案:

答案 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需要$终止字符串。