русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Загрузка и выполнение программ


Дата добавления: 2014-11-27; просмотров: 556; Нарушение авторских прав


Как к любая операционная система, DOS загружает и выполняет программы. При загрузке программы в начале отводимого для нее блока памяти (для СОМ- программ это вся свободная на данный момент память) создается структура данных PSP (префикс программного сегмента) размером 256 байт (100h). Затем DOS создает копию текущего окружения для загружаемой программы, помещает полный путь и имя программы в конец окружения. и записывает программу в память, начиная с адреса PSP:0100h. Если загружается ЕХЕ-программа, использующая дальние процедуры или сегменты данных, DOS модифицирует эти команды так, чтобы используемые в них сегментные адреса соответствовали сегментным адресам, которые получили указанные процедуры и сегменты данных при загрузке программы в намять. При запуске ЕХЕ-программы регистры SS:SP устанавливаются в соответствии с сегментом стека, определенным в программе, затем в стек помещается слово 0000h и выполняется переход на начало программы (PSP:0100h для СОМ, соб­ственная точка входа для ЕХЕ).

Все эти действия выполняет одна функция DOS - загрузить и выполнить программу.

Функция DOS 4Bh: Загрузить и выполнить программу

Вход: АН = 4Bh

AL = 00h - загрузить и выполнить

AL = 0lh - загрузить и нe выполнять

Подфункциям 00 и 01 требуется, чтобы свободная память для загрузки про­граммы была в нужном количестве, так что СОМ-программы должны воспользо­ваться функцией DOS 4Ah с целью уменьшения отведенного им блока памяти до минимально необходимого. При вызове подфункции 03 DOS загружает оверлей в память, выделенную текущим процессом, поэтому ЕХЕ-программы должны убедиться, что ее достаточно.

Эта функция игнорирует расширение файла и различает ЕХЕ- и СОМ-файлы, но первым двум байтам заголовка (MZ для ЕХЕ-файлов).

Подфункция 05 должна вызываться после загрузки и перед передачей управле­ния на программу, причем никакие прерывания DOS и BIOS нельзя вызывать после возвращения из этой подфункции и до перехода на точку входа повои программы.



Загруженной и вызванной таким образом программе предоставляется несколь­ко способов завершения работы. Способ, который чаще всего применяется для СОМ-файлов, - команда RETN. При этом управление передается па адрес PSP:0000, где располагается код команды INT 20h. Соответственно программу мож­но завершить сразу, вызвав INT 20h, но оба эти способа требуют, чтобы CS содер­жал сегментный адрес PSP текущего процесса. Кроме того, они не позволяют вер­нуть код возврата, который может передать предыдущему процессу информацию о том, как завершилась запущенная программа. Рекомендованный способ заверше­ния программы - функция DOS 4Ch.

Функция DOS 4Ch: Завершить программу

Вход: АН = 4Сh

AL = код возврата

Значение кода возврата можно использовать в пакетных файлах DOS как пере­менную ERRORLEVEL и определять из программы с помощью функции DOS 4Dh.

Функция DOS 4Dh: Определить код возврата последнего завершившегося процесса

Вход: АН = 4Dh

Выход: АН = способ завершения:

00h - нормальный

01h - Ctrl-Break

02h - критическая ошибка

03h - программа осталась в памяти как резидентная

AL = код возврата

CF=0

Пример программы.

1) Ввод на экран сообщения с клавиатуры.

.model tiny

.code

org 100h

start:

mov ah,06h

mov al,0

mov bh,07h

mov ch,0

mov cl,0

mov dh,24

mov dl,79

int 10h

 

mov ah,02h

mov bh,0

mov dh,7 ;Позиция y



<== предыдущая лекция | следующая лекция ==>
Оператор | OUT Записать данные в порт.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.076 сек.