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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Последняя версияСледующая версия справа и слева
asm:lesson4 [06/10/2010 19:56] arabusovasm:lesson4 [19/10/2010 19:59] ybezrukov
Строка 1: Строка 1:
 +====== Урок 4 ======
 +
 +===== Процедуры и оператор CALL =====
 +
 +Типичный синтаксис процедуры:
 +
 +                    NAME     PROC FAR
 +                         .
 +                         .
 +                    NAME     ENDP
 +
 +Операнд FAR информирует систему о том, что данный адрес явля
 +ется точкой входа для выполнения,  а директива ENDP определя
 +ет конец процедуры. Кодовый сегмент, однако, может содержать
 +любое  количество процедур,  которые разделяются директивами
 +PROC и ENDP. Типичная организация многопроцедурной программы
 +приведена на рис. 7.3.
 +Обратите внимание на следующие особенности:
 +
 +* директивы PROC по меткам  B10  и C10 имеют операнд NEAR
 +для указания того,  что эти процедуры находятся  в текущем  кодовом сегменте.  Во многих  последующих примерах
 +этот операнд опущен,  так  как  по  умолчанию ассемблер
 +принимает тип NEAR.
 +* Каждая  процедура имеет уникальное  имя и  содержит собственную директиву ENDP для указания конца процедуры.
 +* Команда RET всегда  выполняет возврат в  вызывающую программу.
 +Использование процедур дает  хорошую возможность организовать  логическую  структуру программы.  Кроме того, операнды
 +для команды CALL могут иметь значения,  выходящие за границу от -128 до +127 байт.
 +Технически управление  в процедуру типа  NEAR  может быть передано с помощью команд перехода или даже  обычным построчным  кодированием.  Но в  большенстве  случаев рекомендуется использовать команду CALL  для передачи  управления  в процедуру и команду RET для возврата.
 +
 +===== Прерывания =====
 Для обработки событий, происходящих асинхронно по отношению к выполнению программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое событие в системе, которое нужно проанализировать сразу же, как только оно произошло (например: нажатие клавиши). Как только происходит это событие, вызывается процедура обработки прерывания, которая по завершении своей работы возвращает управление прерванной программе. Для обработки событий, происходящих асинхронно по отношению к выполнению программы, лучше всего подходит механизм прерываний. Прерывание можно рассматривать как некоторое событие в системе, которое нужно проанализировать сразу же, как только оно произошло (например: нажатие клавиши). Как только происходит это событие, вызывается процедура обработки прерывания, которая по завершении своей работы возвращает управление прерванной программе.
 Кроме асинхронных событий прерывание может быть вызвано из программы командой Кроме асинхронных событий прерывание может быть вызвано из программы командой