Как реализовать паскалевскую функцию EnvCount() на ассемлере.Где расположено количество строк окружения???????????
program AsmEnvCount;
function EnvCount: Integer; assembler;
asm
mov ah,62h
int 21h
mov es,bx
mov es,es:[2Ch]
xor di,di
xor bx,bx
xor ax,ax
@@1:
mov cx,-1
repne scasb
inc cx
inc cx
jcxz @@2
inc bx
jmp @@1
@@2:
mov ax,bx
end;
begin
Writeln(EnvCount);
end.
Короче я понял,что оно ни где не расположено...его считать надо....
непонятно что такое "repne scasb"???????????
Область переменных окружения в среде DOS расположена по адресу <env_seg>:0, где значение <env_seg> - адрес блока переменных среды - хранится в PSP (префиксе программного сегмента) по смещению 2Ch. Для получения адреса самого PSP используем системный вызов ah=62h/int 21h. Переменные хранятся последовательно в виде строк "a=b" в формате ASCIIZ (последний байт - 0), последняя строка - пустая (один нулевой байт). Что такое repne scasb можно узнать из любой книги по ассемблеру x86.
"Что такое repne scasb можно узнать из любой книги по ассемблеру x86."
А на фига вот ты мне всё это писал если на вопрос всё равно не ответил!!!!!!!!!!!!!!
НУ вы даёте ребята........
а так же можно с помощью 51h фукции прерывания 21h....адрес PSP записывается в DX