Окружение программы

При запуске программы в среде 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