Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 192
от 21.07.2005, 19:30

Администратор:Калашников О.А.
В рассылке:Подписчиков: 249, Экспертов: 13
В номере:Вопросов: 1, Ответов: 2


Вопрос № 23596: Здравствуйте! Подскажите пожалуйста (с подробностями, асм понимаю, хоть в хитростях не искушен). Мне нужно загрузить в память дочернюю программу из материнской, а потом ее выполнить, вернувшись после обратно в материнскую. Причем...

Вопрос № 23.596
Здравствуйте!

Подскажите пожалуйста (с подробностями, асм понимаю, хоть в хитростях не искушен).

Мне нужно загрузить в память дочернюю программу из материнской, а потом ее выполнить, вернувшись после обратно в материнскую. Причем нужно передавать и получать данные как в функции. Дочерний код, нужно разместить в отдельном сегменте.
Как, собственно, загрузить код, мне понятно.
Но как выбрать сегмент для загрузки, я не знаю. Есть какое-то прерывание или, что там еще?
С передачей данных я вероятно разберусь использовав стек, или же выделю для этого блок памяти в том же самом сегменте, хотя буду благодарен за дельные советы.

Материнская прога для доса.
Отправлен: 16.07.2005, 19:24
Вопрос задал: Артем Талипов (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Евгений Иванов
Здравствуйте, Артем Талипов!
это называется резидентная программа.
обмен данными идёт через прерывания.

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 16.07.2005, 19:31
Оценка за ответ: 3

Отвечает: Стас
Здравствуйте, Артем Талипов!
Дочерняя твоя? Или нет? Если твоя то есть много способов передать ей данные.
Если нет то все зависит от того как программа получает эти данные, может клавиатуру эмулировать прийдется, или в файл писать...

А сегмент может быть любой, какой свободный даст система тот и будет ей местом.
Если это готовый EXE файл то загрузить его на выполнение можно функцией 4bh 21h прерывания.

Вход: AH=4bH
DS:DX=адрес строки ASCIIZ с именем файла, содержащего программу
ES:BX=адрес EPB (EXEC Parameter Block - блока параметров EXEC)
AL= 0 = Загрузить и выполнить
AL= 3 = Загрузить программный оверлей

Выход = AX - код ошибки если CF установлен
Ответ отправил: Стас (статус: Практикант)
Отправлен: 17.07.2005, 00:26
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться
Вспомнить пароль

В избранное