Оперативная память

краскопульт пульверизатор цены на водостойкую абразивную бумагу. | Купить торговый павильон на http://eurodom-vp.ru. | Это надо знать: https://novostiu.ru/ | Это надо знать: https://novostiq.ru/

Классификация подпрограмм


Оформление подпрограмм
Оформление подпрограмм Использование подпрограмм (subroutine) или процедур (procedure) является одним из универсальных приемов программирования. Возможность работы с ними предусмотрена...
Классификация подпрограмм
Классификация подпрограмм При работе с Макроассемблером подпрограммы (процедуры) делятся на ближние и дальние, внутренние и внешние. Два первых термина характеризуют способ вызова подп...
Ближние подпрограммы
Ближние подпрограммы При входе в ближнюю (near) подпрограмму и при возврате из нее текущее содержимое сегментного регистра cs не изменяется. Это означает, что вызов ближней подпрограммы...
Дальние подпрограммы
Дальние подпрограммы Дальняя (far) подпрограмма отличается от ближней тем, что она расположена не в том сегменте, в котором находится вызывающий модуль. Поэтому при обращении к удаленн...
Описание подпрограмм
Описание подпрограмм Для оформления подпрограмм предназначены две директивы PROC и ENDP. Первая объявляет начало блока подпрограммы, а вторая — его конец. Перед обеими директивами указ...
Дополнительные точки входа
Дополнительные точки входа В зависимости от конкретного назначения подпрограмма может иметь не одну, а несколько точек входа. Для описания дополнительных точек входа в процедуры применя...
Пример В 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 ; тип микро...
Разрядность сегмента
Разрядность сегмента При обработке директив описания сегментов Макроассемблер проверяет установленный тип микропроцессора и выбирает соответствующий режим выполнения команд, расположен...
Расположение сегмента
Расположение сегмента в тексте программы зависит от версии MASM, который вы используете. Если это MASM 6.0 и выше, то дополнительный сегмент может располагаться как перед основным текс...
Подключение исходного модуля
Подключение исходного модуля. Расположенные в теле задачи модули не являются общедоступными. Поэтому после отладки дополнительный сегмент с описанием подпрограмм удаляется из текста про...
Пример объектного модуля
Пример объектного модуля Для получения объектного модуля надо внести изменения в подключаемый модуль и откомпилировать его отдельно от основной задачи. Изменения заключаются в том, что в...
Пример В З Исходный текст для получения объектного модуля
Пример В.З. Исходный текст для получения объектного модуля ; Сюда надо вставить макроопределения из примера 2.12 subr SEGMENT word public 'subr' ; начало сегмента EXTERN GrUnit:word, Cur...
Заключение
Заключение. При программировании на ассемблере можно использовать подпрограммы, хранящиеся либо в исходных модулях, подключаемых во время компиляции основного текста, либо в виде объек...
Общие сведения
Общие сведения Стеком называется любой произвольно выбранный блок оперативной памяти, работа с которым производится по принципу "последнее записанное — первое считанное" (LIF...
Новое макроопределение
Новое макроопределение Перед обращением к подпрограмме в стек записываются ее параметры. Запись в стек обычно выполняет команда push. Для сокращения текста программы и придания ему боль...
Пример В 4 Макроопределение для вызова подпрограмм
Пример В.4. Макроопределение для вызова подпрограмм @Invoke macro name, par ; заголовок макроопределения irp r, <par> ; начало оператора повторения push r ; заготовка повторяемой ко...
Работа процедур со стеком
Работа процедур со стеком В данном разделе описаны правила, которых следует придерживаться при составлении внешних подпрограмм, ориентированных на работу со стеком. Распределение простра...
Промежуточные переменные
Промежуточные переменные B зависимости от конкретных особенностей подпрограммы при ее выполнении может возникнуть необходимость в использовании переменных для хранения промежуточных ре...
Пример В 6 Варианты оформления начала подпрограммы
Пример В.6. Варианты оформления начала подпрограммы...
; Вариант 1
; Вариант 1 — использование трех команд push bp ; сохранение содержимого bp mov bp, sp ; запись в bpдреса верхушки стека sub sp, N ; резервирование N байтов в стеке...
; Вариант 2
; Вариант 2 — специальная команда enter enter N, 0 ; заменяет три команды варианта 1 В первом варианте примера В.6 показано, как резервируется пространство размером N байтов с помощью об...
Имена параметров и переменных
Имена параметров и переменных Запись адреса в явном виде вполне корректна, но не наглядна. Для того чтобы текст подпрограммы был более понятен, при визуальном анализе лучше использовать...
Контроль пространства стека
Контроль пространства стека Контроль состояния стека нужен в тех случаях, когда задача использует вложенные процедуры и уровень вложенности достаточно велик. Вложенными называются проц...
Учет особенностей компилятора
Учет особенностей компилятора При разработке ассемблерных процедур для программных модулей, составленных на алгоритмических языках, должны быть выполнены два условия. Во-первых, процед...
Различие алгоритмических языков
Различие алгоритмических языков Алгоритмические языки созданы и создаются для решения различных классов или категорий задач, поэтому они принципиально отличаются друг от друга. Здесь на...
Полное описание процедуры
Полное описание процедуры По-прежнему допустима сокращенная форма описания процедуры, при которой указывается только ее тип 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...
Прототип процедуры
Прототип процедуры Если процедура и вызывающий модуль готовятся независимо друг от друга и объединяются только при компоновке задачи, то выполнить указанное выше условие невозможно. В т...
Заключение
Заключение. Практическая ценность директив PROC, PROTO и INVOKE состоит в том, что при их использовании Макроассемблер самостоятельно учитывает особенности компиляторов при формировани...


Начало