Сайт http://www.norma-stab.ru/stabilizire_vibor.html стабилизатор напряжения 10 квт. | Опалиха О3 переезд

Оформление подпрограмм


Оформление подпрограмм
Оформление подпрограмм...
Использование подпрограмм (subroutine)
Использование подпрограмм (subroutine) или процедур (procedure) является одним из универсальных приемов программирования. Возможность работы с ними предусмотрена во всех языках программир...
Классификация подпрограмм
Классификация подпрограмм...
При работе с Макроассемблером
При работе с Макроассемблером подпрограммы (процедуры) делятся на ближние и дальние, внутренние и внешние. Два первых термина характеризуют способ вызова подпрограммы и возврата из нее, а...
Ближние подпрограммы
Ближние подпрограммы При входе в ближнюю (near) подпрограмму и при возврате из нее текущее содержимое сегментного регистра cs не изменяется. Это означает, что вызов ближней подпрограммы...
Дальние подпрограммы
Дальние подпрограммы Дальняя (far) подпрограмма отличается от ближней тем, что она расположена не в том сегменте, в котором находится вызывающий модуль. Поэтому при обращении к удаленн...
Описание подпрограмм
Описание подпрограмм Для оформления подпрограмм предназначены две директивы PROC и ENDP. Первая объявляет начало блока подпрограммы, а вторая — его конец. Перед обеими директивами указ...
Дополнительные точки входа
Дополнительные точки входа В зависимости от конкретного назначения подпрограмма может иметь не одну, а несколько точек входа. Для описания дополнительных точек входа в процедуры применя...
Пример описания подпрограмм Для
Пример описания подпрограмм. Для работы с окнами видеопамяти в основной части книги неоднократно использовались процедуры и Prevwin, их исходный текст приведен в примере 2.8. Покажем (...
Пример В 1 Три подпрограммы для работы с видеоокнами
Пример В.1. Три подпрограммы для работы с видеоокнами NxtWin PROC far описание процедуры NxtWin push ax сохраняем содержимое ах mov ax, GrUnit читаем единицу приращения окна add Cur_wi...
Оформление программных модулей
Общедоступные подпрограммы могут располагаться в исходных или в объектных модулях. Исходный модуль состоит из программного сегмента, содержащего описание одной или нескольких подпрограмм...
Пример модуля в теле задачи
Пример модуля в теле задачи На первой стадии подготовки исходного модуля производится составление, набор текста и отладка подпрограмм, поэтому модуль удобнее включить в текст основной п...
Пример В 2 Сегмент с описанием подпрограмм NxtWin SetWin PrevWin
Пример В.2. Сегмент с описанием подпрограмм NxtWin, SetWin, PrevWin subr SEGMENT word public 'subr1 ; начало сегмента ASSUME cs:subr, ds:@data ; установка соответствия ; .386 ; тип микро...
Разрядность сегмента
Разрядность сегмента При обработке директив описания сегментов Макроассемблер проверяет установленный тип микропроцессора и выбирает соответствующий режим выполнения команд, расположен...
Подключение исходного модуля
Подключение исходного модуля. Расположенные в теле задачи модули не являются общедоступными. Поэтому после отладки дополнительный сегмент с описанием подпрограмм удаляется из текста про...
Пример объектного модуля Для получения
Изменения заключаются в том, что в начале текста модуля добавлены две директивы: EXTERN — для описания используемых внешних имен; PUBLIC — для объявления подпрограмм модуля общедос...
Пример В З Исходный текст для получения объектного модуля
Пример В.З. Исходный текст для получения объектного модуля ; Сюда надо вставить макроопределения из примера 2.12 subr SEGMENT word public 'subr' ; начало сегмента EXTERN GrUnit:word, Cur...
Построение задачи
Построение задачи Условимся считать, что файл, содержащий объектный модуль основного текста будущей задачи, имеет имя bmpsuper.obj, а файл, содержащий объектные модули подпрограмм, имя b...
Параметры в стеке
Параметры в стеке Характерной особенностью подпрограмм является то, что используемые при вычислениях величины передаются им в виде входных параметров. В свою очередь, подпрограммы могут...
Общие сведения
Общие сведения Стеком называется любой произвольно выбранный блок оперативной памяти, работа с которым производится по принципу "последнее записанное — первое считанное" (LIF...
Новое макроопределение
Новое макроопределение Перед обращением к подпрограмме в стек записываются ее параметры. Запись в стек обычно выполняет команда push. Для сокращения текста программы и придания ему боль...
Пример В 4 Макроопределение для вызова подпрограмм
Пример В.4. Макроопределение для вызова подпрограмм @Invoke macro name, par ; заголовок макроопределения irp r, <par> ; начало оператора повторения push r ; заготовка повторяемой ко...
Пример использования макровызова приведен в конце данного раздела
Пример использования макровызова приведен в конце данного раздела....
Доступ процедур к параметрам
Доступ процедур к параметрам При входе в процедуру в верхушке стека расположен адрес возврата, а перед ним параметры. Для работы с параметрами входящие в тело процедуры команды должны...
Таблица В 1 Вариант размещения данных в стеке
Таблица В.1. Вариант размещения данных в стеке Смещение Что находится в слове bp+ 0 Исходное содержимое регистра bp...
Пример В 5 Исходный текст процедуры cnvindec
Пример В.5. Исходный текст процедуры cnvindec PUBLIC cnvindec объявляем процедуру общедоступной subr SEGMENT word public 'subr'; начало сегмента subr ASSUME cs:subr cs ассоциируется с sub...
Работа процедур со стеком
Работа процедур со стеком...
В данном разделе описаны правила
В данном разделе описаны правила, которых следует придерживаться при составлении внешних подпрограмм, ориентированных на работу со стеком. Распределение пространства стека. Общий случай ра...
Таблица В 2 Распределение пространства стека в порядке увеличения адресов
Таблица В.2. Распределение пространства стека в порядке увеличения адресов Общедоступная область стека Промежуточные переменные подпрограммы...
Промежуточные переменные
Промежуточные переменные B зависимости от конкретных особенностей подпрограммы при ее выполнении может возникнуть необходимость в использовании переменных для хранения промежуточных ре...
Пример В 6 Варианты оформления начала подпрограммы
Пример В.6. Варианты оформления начала подпрограммы ; Вариант 1 — использование трех команд push bp ; сохранение содержимого bp mov bp, sp ; запись в bpдреса верхушки стека sub sp,...
Имена параметров и переменных
Имена параметров и переменных Запись адреса в явном виде вполне корректна, но не наглядна. Для того чтобы текст подпрограммы был более понятен, при визуальном анализе лучше использовать...
Контроль пространства стека
Контроль пространства стека Контроль состояния стека нужен в тех случаях, когда задача использует вложенные процедуры и уровень вложенности достаточно велик. Вложенными называются проц...
Учет особенностей компилятора
Учет особенностей компилятора...
При разработке ассемблерных процедур
При разработке ассемблерных процедур для программных модулей, составленных на алгоритмических языках, должны быть выполнены два условия. Во-первых, процедура должна поддерживать ту форму...
Различие алгоритмических языков
Различие алгоритмических языков Алгоритмические языки созданы и создаются для решения различных классов или категорий задач, поэтому они принципиально отличаются друг от друга. Здесь на...
Полное описание процедуры
Полное описание процедуры По-прежнему допустима сокращенная форма описания процедуры, при которой указывается только ее тип far или near Однако для того чтобы Макроассемблер взял на се...
Пролог и эпилог
Пролог и эпилог В процессе компиляции подпрограммы Макроассемблер включает в объектный модуль две группы команд, одна из которых называется прологом (prologue), а другая эпилогом (epil...
Пример В 7 Измененный текст процедуры cnvindec
Пример В.7. Измененный текст процедуры cnvindec .LI STALL разрешаем печатать все subr SEGMENT word public ' su эг ' ; начало сегмента s,ubr .386 задаем тип микропроцессора dten dd 10 к...
Директива вызова процедуры
Директива вызова процедуры Для вызова процедур, ориентированных на передачу параметров в стеке, предназначена специальная директива: Invoke имя_процедуры [, список_параметров] Список,...
Вызов cnvindec
Вызов cnvindec В качестве примера покажем, как может выглядеть вызов процедуры, описанной в примере В.7. Для этого в вызывающем модуле указывается следующая директива: Invoke cnvind...
Прототип процедуры
Прототип процедуры Если процедура и вызывающий модуль готовятся независимо друг от друга и объединяются только при компоновке задачи, то выполнить указанное выше условие невозможно. В т...


- Начало -