мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
asm:lesson4 [06/10/2010 19:46] – создано arabusovasm:lesson4 [19/10/2010 20:00] (текущий) ybezrukov
Строка 1: Строка 1:
-Для обработки событий, происходящих асинхронно по отношению к выполнению программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое событие в системе, которое нужно проанализировать сразу же, как только оно произошло (например: нажатие клавиши).+====== Урок 4 ====== 
 + 
 + 
 +===== Процедуры и оператор CALL ===== 
 + 
 +Типичный синтаксис процедуры: 
 +<code> 
 + 
 +                    NAME     PROC FAR 
 +                         . 
 +                         . 
 +                    NAME     ENDP 
 +</code> 
 +Операнд FAR информирует систему о том, что данный адрес явля 
 +ется точкой входа для выполнения,  а директива ENDP определя 
 +ет конец процедуры. Кодовый сегмент, однако, может содержать 
 +любое  количество процедур,  которые разделяются директивами 
 +PROC и ENDP. Типичная организация многопроцедурной программы 
 +приведена на рис. 7.3. 
 +Обратите внимание на следующие особенности: 
 + 
 +  * директивы PROC по меткам  B10  и C10 имеют операнд NEAR 
 +для указания того,  что эти процедуры находятся  в текущем  кодовом сегменте.  Во многих  последующих примерах 
 +этот операнд опущен,  так  как  по  умолчанию ассемблер 
 +принимает тип NEAR. 
 +  * Каждая  процедура имеет уникальное  имя и  содержит собственную директиву ENDP для указания конца процедуры. 
 +  * Команда RET всегда  выполняет возврат в  вызывающую программу. 
 +Использование процедур дает  хорошую возможность организовать  логическую  структуру программы.  Кроме того, операнды 
 +для команды CALL могут иметь значения,  выходящие за границу от -128 до +127 байт. 
 +Технически управление  в процедуру типа  NEAR  может быть передано с помощью команд перехода или даже  обычным построчным  кодированием.  Но в  большенстве  случаев рекомендуется использовать команду CALL  для передачи  управления  в процедуру и команду RET для возврата. 
 + 
 +===== Прерывания ===== 
 +Для обработки событий, происходящих асинхронно по отношению к выполнению программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое событие в системе, которое нужно проанализировать сразу же, как только оно произошло (например: нажатие клавиши). Как только происходит это событие, вызывается процедура обработки прерывания, которая по завершении своей работы возвращает управление прерванной программе. 
 +Кроме асинхронных событий прерывание может быть вызвано из программы командой 
 +    int   номер_прерывания 
 +где номер_прерывания - число от нуля до 255 (в компьютере IBM PC возможны лишь 256 различных процедур обработки прерываний). Каждому номеру сопоставляется адрес обработчика прерывания и внешнее событие, которое это прерывание вызывает. 
 +В MS-DOS прерывания используются для выполнения системных функций. Для того, чтоюы вызвать функцию DOS, нужно заполнить регистры общего назначения и выполнить команду int 21h. Подробна каждая функция описана в справочниках. Вот один из них:
 http://www.codenet.ru/progr/dos/ http://www.codenet.ru/progr/dos/