- •Организация памяти.
- •Прграммная модель мп.
- •Ввод - вывод.
- •Внутренние операции мп.
- •Организация обмена с ву.
- •Прерывания.
- •Система команд и режимы адресации мп.
- •Программирование мп.
- •Команды передачи данных.
- •Команды арифметических операций.
- •Команды логических операций и сдвигов.
- •Команды передачи управления.
- •Команды управления мп.
- •Примеры программ.
- •Директивы.
- •Структура ассемблерной программы.
- •Пример оформления программы.
- •2. Порядок выполнения работы.
- •3.Варианты заданий:
- •Контрольные вопросы.
- •5 Содержание отчета.
- •6 Список литературы.
Директивы.
TITLE текст - печатать заголовок программы на каждой странице листинга. В качестве текста обычно используется имя, под которым программа хранится на диске.
PAGE str, sim - Задает число строк на странице и символов в строке листинга.
SEGMEMT - определение сегмента. Любая программа содержит по крайней мере один сегмент - кода, но обычно используются и сегменты стека и данных. Формат Имя SEGMENT [параметры]
...................
Имя ENDS
Имя должно обязательно присутствовать и быть уникальным. Директива ENDS означает конец сегмента и должна иметь то же имя. Может быть три типа параметров:
1. Выравнивание - определяет границу начала сегмента. Есть 5 типов выравнивания. Обычно имеет значение PARA, по которому сегмент устанавливается на границу параграфа.
2. Объединение - определяет, объединяется ли данный сегмент с другими сегментами в процессе компоновки программы (Если разные модули программы транслировались отдельно). Есть 6 типов объединения. Сегмент стека определяется следующим образом:
имя SEGMENT PARA STACK
3. Класс - используется для группирования отдельных сегментов при компоновке. Заключается в апострофы.
имя SEGMENT PARA STACK ‘Stack’
ASSUME - определяет назначение сегментных регистров.
ASSUME SS: имя_стек, DS: имя_данные, CS: имя_код
При выполнении команд для адресации стека будет использоваться адрес в регистре SS, данных - в регистре DS, кода - в CS. Но загружать значения в эти регистры надо отдельно.
PROC - описание процедуры. Формат:
Имя_процедуры PROC тип
тело процедуры
RET
ENDP
Имя должно быть уникальным и обязательно присутствовать, тип определяет доступ и может быть FAR или NEAR. При единственной процедуре обязательно FAR.
END [имя программы] - завершает программу.
Директивы определения данных.
[имя] Dn выражение
Имя не обязательно, но программа ссылается на элемент через имя. Можно определить DB - байт, DW - слово, DD - двойное слово и др. Выражение может содержать константу, несколько констант через запятую или знак вопроса ? для неопределенного значения (если нужно просто зарезервировать место). В формате
[имя] Dn число_повторений DUP ( выражение )
выражение повторяется заданное число раз. Например:
X1 DB 25 - байт с константой.
X1 DW ? - слово с неопределенным значением.
X2 DB 1,2,3,4,5 - несколько констант. Обращение к первой по имени X2, ко второй
X2+1 и т.д.
X3 DW 5 DUP(?) - 5 неопределенных слов.
STR DB ‘СТРОКА’ - символьная строка определяется директивой DB и заключается
в кавычки или апострофы.
Структура ассемблерной программы.
Существует два основных типа загрузочных программ: EXE и COM. Каждой программе в памяти предшествует префикс программного сегмента длиной 256 байт в котором . Компоновщик LINK автоматически генерирует EXE-фйлы. В них имеется специальный начальный блок (заголовок) длиной не менее 512 байт. В нем находится информация о размере программы, адресе стека и др. ЕХЕ-программа может иметь любой размер, СОМ - не более 64К. Размер СОМ-файла всегда меньше, чем соответствующего ЕХЕ. СОМ-программы автоматически генерирует стек. в СОМ-программах все данные должны быть определены в сегменте кода.
В реальной программе должны быть определены используемые сегменты и выполнены четыре требования DOS (для EXE-программ):
1. Указать, какие сегментные регистры каким сегментам соответствуют.
2. Сохранить в стеке содержимое регистра DS на момент начала выполнения программы.
3. Записать в стек нулевой адрес.
4. Загрузить в DS адрес сегмента данных.
Выход из программы и возврат в DOS производится командой RET.
