Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.66.13] |
|
Сообщ.
#1
,
|
|
|
Знаю, что в Windows можно загонять программу в стек и запускать её оттуда. Нельзя ли сделать что-либо подобное под MS-DOS? Или хотя бы запихнуть её в память, но не записывать на диск?
|
Сообщ.
#2
,
|
|
|
Что-то ты какие-то ужасы рассказываешь...
|
Сообщ.
#3
,
|
|
|
В принципе, можно. Если вызываемая программа скомпилирована в .COM - то вообще без проблем: выделяешь память, запихиваешь прогу, вызываешь по адресу точки старта.
Если .EXE - то тоже можно, но гораздо сложнее. Придется писать свой загрузчик, которого надо научить разбираться с релокейшенами... |
Сообщ.
#4
,
|
|
|
Да, только проблема в том, что на диск записывать всё равно придётся (читать-то её откудато надо)... Память ведь вещь такая, что при перезагрузке всё сбрасывается. Если только записать её во FLASH ))
|
Сообщ.
#5
,
|
|
|
Валерий, вот как раз COM меня и интересует. Если не трудно, объясни на пальцах, как найти этот самый адрес, куда надо делать CALL или JMP. "Точку старта", в общем.
|
Сообщ.
#6
,
|
|
|
К сожалению, не смог найти своих старых исходников на эту тему (( Поэтому предлагаю взглянуть на http://pascal.sources.ru/exec/ - там есть нечто похожее...
|
Сообщ.
#7
,
|
|
|
to Andramedek: Вообще, COM-файл должен быть записан по смещению 100h. И Запускаться именно оттуда...
|
Сообщ.
#8
,
|
|
|
Тогда уж давайте расставлять все точки над i )) СОМ-файл "должен быть записан" со смещения 0h и... до конца файла. А вот точка старта в нем расположена _обычно_ со смещения 100h относительно начала самого файла.
|