-
Notifications
You must be signed in to change notification settings - Fork 1
09. Организация многомодульных программ.
Как и на других языках программирования, программа на ассемблере может состоять из нескольких файлов - модулей. При компиляции (трансляции) каждый модуль превращается в объектный файл, далее при компоновке объектные файлы соединяются в единый исполняемый модуль.
Модули обычно состоят из описания сегментов будущей программы с помощью директивы SEGMENT.
Пример:
имя SEGMENT [READONLY] выравнивание тип разряд 'класс'
…
имя ENDS
Параметры:
● Выравнивание - расположение начала сегмента с адреса, кратного какому-либо значению. Варианты:
BYTE;
WORD (2 байта);
DWORD (4 байта);
PARA (16 байт, по умолчанию);
PAGE (256 байт).
● Тип:
PUBLIC (сегменты с одним именем объединятся в один);
STACK (для стека); COMMON (сегменты будут “наложены” друг на друга по одним и тем же адресам памяти);
AT <начало> - расположение по фиксированному физическому адресу, параметр - сегментная часть этого адреса;
PRIVATE - вариант по умолчанию.
● Класс - метка, позволяющая объединить сегменты (расположить в памяти друг за другом).
Меня всегда можно найти в Telegram: @mrrvz
-
Выполнение программы. Машинный код. Исполняемые файлы. Язык ассемблера.
-
Виды переходов. Условные, безусловные переходы. Короткий, ближний, дальний переход.
-
Стек. Регистры, связанные со стеком. Команды записи/извлечения из стека.
-
Стек. Использование при вызове подпрограмм. Команды вызоваподпрограммы и возврата.
-
Прерывания. Назначение, виды прерываний. Таблица векторов прерываний.
-
Срабатывание прерывания. Обработчик прерывания в реальном режиме. Возврат из обработчика прерывания.
-
Модели памяти в защищённом режиме. Регистры управления памятью. Страничное преобразование.
-
Математический сопроцессор. Типы данных. Представление вещественных чисел.