Assembly 如何在DOS汇编程序中获取环境变量
我必须在汇编中编写程序,在DOS系统中获取和打印环境变量。我在找,不幸的是我找不到解决办法 DOS将进程的环境变量存储在中。环境块是一种数据结构,包含以NUL结尾的环境变量对及其值。环境块的最后一个条目只是一个空字符串Assembly 如何在DOS汇编程序中获取环境变量,assembly,environment-variables,dos,x86-16,Assembly,Environment Variables,Dos,X86 16,我必须在汇编中编写程序,在DOS系统中获取和打印环境变量。我在找,不幸的是我找不到解决办法 DOS将进程的环境变量存储在中。环境块是一种数据结构,包含以NUL结尾的环境变量对及其值。环境块的最后一个条目只是一个空字符串 environment_block: db 'COMSPEC=c:\command.com',0 db 'PROMPT=$p$g',0 db 'WP=c:\wordproc',0 db
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二进制文件中,PSP可以在任何段的偏移量0000
处找到。在EXE二进制文件中,它位于段DS
和ES
的偏移量0000
。如果需要加载其他段选择器,请确保记住DS
原始值的副本,以便找到您的PSP
然后可以在PSP中的地址002c
找到环境块的段:
; assuming DS is the segment of the PSP
mov es, [2ch] ; ES:0000h now points to the environment block
然后,您可以像处理任何其他字符串序列一样处理环境块中的变量。您知道如何访问环境块吗?我只找到了一个关于PSP块的信息,这就是您的意思吗?这是一个好的开始。现在我知道什么样的答案对你有用了。让我写一个。你是在写COM还是EXE二进制?COM格式。我使用ORG100H指令