CodeNet / Языки программирования / Ассемблер / Прерывания DOS и BIOS
CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
CodeNet / Платформы / Другие платформы / DOS / Прерывания DOS и BIOS
Функции DOS - INT 2eH: выполнить команду DOS (нет в документации)
Вход:
- DS:SI = адрес выполняемой команды DOS в форме "Lstring" (должна быть доступная память для загрузки программы)
Выход:
- SS,SP = разрушены
- ?? = не ясно, как получить статус выполненного запроса
Это НЕДОКУМЕНТИРОВАННОЕ прерывание выполняет команду DOS, как если бы эта команда была введена в ответ на подсказку DOS.
При входе DS:SI указывает на строку, в первом байте которой содержится длина строки, а в последнем байте - 0dH (символ 0dH не входит в подсчет длины).
DB 0fH, "set PROMPT=$p$g", 0dH ; ** строка длиной 0fH байт **Этот пример иллюстрирует основное использование этого сервиса -- он позволяет устанавливать значения в главном (корневом) окружении DOS. В любых других случаях предпочтительнее функция DOS 4bH (например, выполнить COMMAND.COM, передав как параметр строку "/c dos_cmd"), поскольку она полностью документирована.
Замечание:
Не забывайте сначала сжать текущий MCB посредством функции DOS 4aH. Оставляйте МНОГО памяти для стека -- DOS буквально пожирает стек. SS и SP должны быть сохранены перед вызовом и восстановлены после. Этот сервис покрыт тайной. Он явно не используется ни одной программой DOS, включая COMMAND.COM. Из-за этой загадочности мы рекомендуем не использовать его.