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


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0256 ]   [ 15 queries used ]   [ Generated: 3.05.24, 11:15 GMT ]