如何在DOS汇编程序中获取环境变量

问题描述 投票:-1回答:1

我必须在汇编程序中获取并打印环境变量DOS系统。我一直在寻找,但不幸的是我找不到解决方案。

assembly environment-variables dos x86-16
1个回答
2
投票

DOS将您的进程的环境变量存储在environment block中。环境块是一种数据结构,其中包含NUL终止的环境变量对及其值。环境块的最后一个条目只是一个空字符串。

environment_block:
        db      'COMSPEC=c:\command.com',0
        db      'PROMPT=$p$g',0
        db      'WP=c:\wordproc',0
        db      'PATH=d:\;c:\dos;c:\utils',0
        db      0

要查找环境块,请首先检索指向PSP的指针。在COM二进制文件中,可以在任何段的偏移0000处找到PSP。在EXE二进制文件中,它位于段0000DS的偏移量ES中。如果需要加载其他段选择器,请确保记住原始值DS的副本,以便找到您的PSP。

然后可以在PSP的地址002c处找到环境块的段:

        ; assuming DS is the segment of the PSP
        mov     es, [2ch]    ; ES:0000h now points to the environment block

然后,您可以像处理任何其他字符串序列一样处理环境块中的变量。]​​>

© www.soinside.com 2019 - 2024. All rights reserved.