DOS хранит переменные среды для вашего процесса в блоке среды . Блок среды - это структура данных, содержащая пары переменных среды и их значения с 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 PSP можно найти по смещению 0000
в любом сегменте. В двоичном файле EXE это смещение 0000
сегмента DS
и ES
. Если вам нужно загрузить другие селекторы сегментов, обязательно запомните копию исходного значения DS
, чтобы вы могли найти свой PSP.
Сегмент блока среды можно найти по адресу 002c
в PSP:
; assuming DS is the segment of the PSP
mov es, [2ch] ; ES:0000h now points to the environment block
Затем вы можете обрабатывать переменные в блоке окружения как любую другую последовательность строк.