При запуске программы в среде MS DOS командный процессор передает ей окружение. Формат окружения:
‘var1=n1’,0
‘var2=n2’,0
…
Просмотреть окружение можно с помощью команды SET. Для добавления новой переменной в окружение служит команда SET var=n
В PSP программы по смещению 2Ch находится адрес окружения.
Пример поиск переменной в окружении
;--------------------------
;EXE program
;Поиск значения и переменной окружения
;---------------------------
codesg segment 'CODE'
assume CS: codesg,DS: datasg,SS: stacksg
begin:
mov AX,datasg
mov DS,AX
;----------------------------
mov AX,ES:2Ch ;адрес
;окружения
mov ES,AX
mov BX,0
cld
compr:
mov CX,len
mov SI,offset envvar
mov DI,BX
repe cmpsb
je gotit
tstnul:
cmp byte ptr ES:[BX],0
je gotnul
inc BX
jmp tstnul
gotnul:
inc BX
cmp byte ptr ES:[BX],0
jne compr
;извлечение значения переменной
gotit:
mov BX,-1
notend:
inc BX
cmp byte ptr ES:[DI][BX],0
jne notend
;-----------------------------
mov CX,BX
push ES
push DS
pop ES
pop DS
mov SI,DI
mov DI,offset ES:bufer
rep movsb
push ES
pop DS
;----------------------------
mov AH,09h
mov DX,offset bufer
int 21h
;-----------------------------
mov AX,4C00h
int 21h
codesg ends
datasg segment 'DATA'
bufer db 128 dup('$')
envvar db 'WORK='
len=$-envvar
datasg ends
stacksg segment stack 'STACK'
dw 128 dup (0)
stacksg ends
end begin