Помощь - Поиск - Пользователи - Календарь
Полная версия: Кол-во строк окружения
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
НеКто
Как реализовать паскалевскую функцию EnvCount() на ассемлере.Где расположено количество строк окружения???????????
xds
Цитата(НеКто @ 11.02.2007 7:42) *
Где расположено количество строк окружения???????????
Оно вычисляется:
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"???????????
xds
Область переменных окружения в среде 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.