我必须在汇编程序中获取并打印环境变量DOS系统。我一直在寻找,但不幸的是我找不到解决方案。
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二进制文件中,它位于段0000
和DS
的偏移量ES
中。如果需要加载其他段选择器,请确保记住原始值DS
的副本,以便找到您的PSP。
然后可以在PSP的地址002c
处找到环境块的段:
; assuming DS is the segment of the PSP
mov es, [2ch] ; ES:0000h now points to the environment block
然后,您可以像处理任何其他字符串序列一样处理环境块中的变量。]>