- •1)Блочная структура программы: внутренние и внешние процедуры
- •3) Блочная структура программы: расположение процедур в исходном файле
- •4) Использования прерываний в ассеемблер-программах
- •5)Команды передачи управления: безусловные переходы. Адресация в переходах
- •6) Команды передачи управления: организация циклов
- •7) Команды передачи управления: условные переходы
- •8) Команды сдвигов и их использования
- •13. Место языков ассемблера среди языков программирования.
- •14. Модели памяти и их использования в tasm.
- •16. Передача параметров между процедурой и вызывающей программой Ассемблер.
- •17. Предложение языка ассемблера: директивы.
- •18. Предложения языка ассемблера: команды.
- •19. Предложения языка ассемблера: коментарии.
- •20. Представление данных в ibm pc: алфавитно-цифровые данные
- •21 Представление данных в ibm pc : Вещественные данные
- •22 Представление данных в ibm pc: Двоично-десятичных чисел
- •23 Представление данных в ibm pc: Целые числа
- •24 Программные пакеты masm и tasm общие функции и различие
- •29. Способы адресации в командах мп intel 80 * 86
- •Регистровая адресация
- •Непосредственная адресация
- •30.Способы передачи параметров между процедурой и вызывающейся программой
- •31. Стек . Работа со стеком
- •32. Структуры и форматы команд мп intel 80 * 86. Команды пересылки данных
- •34. Структура мп Intel 80x86: используемые регистры
- •35. Структура мп Intel 80x86: Операционное устройство, Устройство шинного интерфейса
1)Блочная структура программы: внутренние и внешние процедуры
Процедуры могут быть внутренними, внешними и модульными. Описание внутренней процедуры непосредственно включается в текст охватывающей программной единицы (носителя) и не может содержать вложенных процедур. Внешняя процедура существует автономно и может быть разработана на дру- гих языках (С и его версии, ассемблер). Программные единицы бывают следующих видов: главная программа, внеш- няя процедура, модуль и блок данных. Каждая из них • физически отделена от других; • начинается оператором-заголовком, содержащим специфическое для данной программной единицы ключевое слово: program, subroutine; function, module, block data. В.Б. Альгин «Курс лекций по компьютерной информатике» 125 • заканчивается предложением end с повторением (иногда не обязатель- ным, но рекомендуемым) того же ключевого слова и собственного имени программной единицы; • обрабатывается компилятором отдельно от остальных. Любая программная единица может содержать неограниченное число пред- ложений вида include '' (при необходимости — с указанием пути к файлу). Стандартные директории для поиска вставок задаются настройкой MDS. Вставленный текст далее обра- батывается компилятором как составная часть программной единицы. Выполняемая программа состоит из головной программы и произвольного числа остальных программных единиц. Частью головной программы могут быть внутренние процедуры. Вложенные процедуры любого вида имеют доступ ко всем объектам своего носителя. Внешняя процедура отличается от головной программы только заголовком и ключевым словом в завершающей строке. Она приводится в действие опера- тором call из вызывающей программной единицы или указателем функции (для функций). Внутренние процедуры выглядят так же, как модульные, но не могут иметь вложенных в них процедур.
2)блочная структура программы: правила описания и вызова процедур
Для описания процедур вы можете использовать директиву PROC.
В режиме Ideal она имеет следующий синтаксис:
PROC [[модификатор_языка] язык] имя [расстояние]
[ARG список_аргументов] [RETURN список_элементов];
[LOCAL список_аргументов]
[USES список_элементов]
.
.
.
ENDP [имя]
В режиме MASM используется следующий синтаксис:
имя PROC [[модификатор_языка] язык] [расстояние]
[ARG список_аргументов] [RETURN список_элементов];
[LOCAL список_аргументов]
[USES список_элементов]
.
.
.
[имя] ENDP
Турбо Ассемблер также воспринимает для определения процедур
синтаксис MASM.
Файл с процедурами должен быть оформлен как обычный исходный файл и подвергнут трансляции для получения объектного кода. Впоследствии этот объектный файл на этапе компоновки объединяется с файлом, в котором эти процедуры используются. Этот способ предполагает наличие в исходном тексте программы еще некоторых элементов, связанных с особенностями реализации концепции модульного программирования в языке ассемблера. Вариант расположения процедур в отдельном модуле используется также при построении Windows-приложений на основе вызова API-функций.
Поскольку имя процедуры обладает теми же атрибутами, что и метка в команде перехода, то обратиться к процедуре можно с помощью любой команды условного или безусловного перехода. Но благодаря специальному механизму вызова процедур можно сохранить информацию о контексте программы в точке вызова процедуры. Под контекстом понимается информация о состоянии программы в точке вызова процедуры. В системе команд микропроцессора есть две команды, осуществляющие работу с контекстом. Это команды call и ret:
call ИмяПроцедуры@num — вызов процедуры (подпрограммы).
ret число — возврат управления вызывающей программе.
число — необязательный параметр, обозначающий количество байт, удаляемых из стека при возврате из процедуры. Для вызова подпро- граммы-процедуры используется оператор CALL, имеющий вид CALL (S) где S — список фактических параметров. Между формальными и фактиче- скими параметрами должно соблюдаться соответствие по порядку следования и типу. Оператор CALL помещается в вызывающем программном модуле.
