获取当前目录名称程序集 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
我得到一个空字符串。
我不知道为什么函数 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
我得到一个空字符串。