- •Программное управление — основа автоматизации вычислительного процесса
- •2 Состав машинных команд
- •3 Режимы работы компьютеров
- •3.1 Однопрограммные и многопрограммные режимы
- •I.Система прерываний программ в пк
- •3.2 Адресация регистров и ячеек памяти в пк
- •3.3 Относительная адресация
- •II.Стековая адресация
- •3.4 Элементы программирования на языке ассемблер
- •4 Основные компоненты языка ассемблер
- •4.1Алфавит языка
- •4.2 Константы (числа и строки)
- •4.3 Директивы (псевдооператоры)
- •4.4 Модификаторы
- •4.5 Адресация регистров и ячеек памяти в ассемблере
- •4.6 Непосредственная адресация
- •4.7 Прямая адресация регистров мпп
- •4.8 Адресация ячеек оп
- •Основные команды языка ассемблер
- •A.Команды пересылки данных
- •I.Команды сложения, вычитания и сравнения
- •1.Команды приращения
- •A.Команды умножения
- •I.Команды безусловной передачи данных
- •4.9 Команды перехода к подпрограмме и выхода из подпрограммы
- •4.10 Команда перехода к подпрограмме: call opr
- •4.11 Команда выхода из подпрограммы
- •4.12 Команды условной передачи управления
- •4.13 Команды условной передачи управления для беззнаковых данных
- •4.14 Команды условной передачи управления для знаковых данных
- •4.15 Команды условной передачи управления для прочих проверок
- •4.16 Команды управления циклами
- •4.17 Команды прерывания
- •4.18Основные директивы ассемблера
- •4.19 Директивы определения идентификаторов
- •4.20 Директивы определения данных
- •Директивы определения сегментов и процедур
- •4.21 Директивы управления трансляцией
- •5 Краткие сведения о программировании процедур работы с устройствами ввода-вывода
- •5.1 Программирование работы с дисплеем
- •5.2 Видеооперации с прерыванием 10н bios
- •5.3 Видеооперации с прерыванием 21н dos
- •5.4 Программирование работы с клавиатурой
- •5.5 Программирование работы с принтерами
- •5.6 Печатающие устройства параллельного типа
- •5.7 Печатающее устройство последовательного типа
- •5.8 Программирование работы с файлами
- •5.9 Прерывания, используемые при работе с файлами на дисках
- •5.10 Некоторые аспекты создания исполняемых программ
- •5.11 Процедуры формирования программы
- •5.12 Структура исходной программы на языке ассемблера для получения исполняемой программы .Ехе
- •5.13 Основные сведения о листинге и его структуре
- •5.14 Особенности структуры машинных команд
- •5.14 Последовательность работы пк при выполнении программы
- •6 Краткие сведения об отладчике программ debug
- •6.1 Основные команды отладчика debug
3.2 Адресация регистров и ячеек памяти в пк
Адресация операндов в командах программы может быть:
непосредственной;
прямой;
косвенной;
ассоциативной;
неявной.
Непосредственная адресация заключается в указании в команде самого значения операнда, а не его адреса.
Прямая адресация состоит в указании в команде непосредственно абсолютного или исполнительного адреса операнда.
Косвенная адресация имеет в виду указание в команде регистра(ов) или ячейки памяти, в которых находятся абсолютный, исполнительный адрес операнда или их составляющие.
Ассоциативная адресация — указание в команде не адреса, а идентифицирующего содержательного признака операнда, подлежащего выборке (используется в ассоциативных запоминающих устройствах).
Неявная адресация — адреса операнда в команде не указанно, но он подразумевается кодом операции.
Адресация ячеек основной памяти ПК имеет две важные разновидности: относительную и стековую.
3.3 Относительная адресация
Абсолютный (Аинд) адрес формируется как сумма адресов исполнительного (Аисп) и сегментного (Асегм):
Аабс = Асегм + Аисп
где Асегм — 20-битовый начальный адрес сегмента, который является увеличенным в 16 раз (сдвинутым на четыре бита влево) 16-битовым адресом сегмента А’сегм хранящемся в одном из 16-битных сегментных регистров. Начальный адрес сегмента в таком варианте всегда кратен 16, и он может быть полностью идентифицирован значением А’сегм (сегмент всегда состоит из целого числа параграфов, а параграф равен 16 битам), то есть:
Асегм = 16*А’сегм = А’сегм 0000.
16-битовый исполнительный адрес может в ПК представлять собой сумму трех адресов:
Аисп = Асмещ + Абазы + Аинд.
где Асмещ — 16-битовый адрес смещения относительно начала сегмента (или относительно базы, если есть Абазы);
Абазы — 16-битовый адрес смещения базы адреса операнда относительно начала сегмента;
Аинд — адрес индекса (или просто индекс) — дополнительная составляющая адреса операнда,
использующаяся часто при программировании циклических процессов с массивами и таблицами. Индекс должен быть непосредственно задан в соответствующем регистре МПП.
При адресации данных могут использоваться все составляющие адреса:
Аабс = Асегм + Аисп = Асегм + Асмещ[+Абазы][+Aинд],
где Асегм = 16 * А’сегм , А’сегм берется из регистра DS по умолчанию или из регистра DS, если это указано в программе. Абазы и Аинд берутся соответственно из регистров ВХ и индексных (SI или DI), а Асмещ в явном или неявном виде указываются в программе.
При адресации команд программы могут использоваться только две составляющие адреса:
Аабс = Асегм + Аисп = Асегм + Асмещ = А’сегм * Асмещ.
А’сегм берется из регистра CS, а Асмещ — из регистра IP.
II.Стековая адресация
В стековой памяти (стеке) доступ к ячейкам памяти не произвольный, а по принципу «последний записанный операнд первым считывается» (FILO).
Аабс = Асегм + [Абазы] + Асмещ.
16-битный адрес сегмента А'сегм берется из регистра SS, смещения относительно начала сегмента стека автоматически считываются из регистров ВР (смещение базы стека — Абазы) и SP (смещение активной ячейки стека, в которую записывается или из которой считывается информация, — «вершины стека» относительно базы – Асмещ).
В защищенном (многопрограммном) режиме работы микропроцессора начальные адреса сегментов хранятся в дескрипторных таблицах и имеют длину 24 или 32 бит (в зависимости от типа МП). В сегментных регистрах в этом режиме хранятся селекторы, содержащие адресные ссылки на соответствующие дескрипторные таблицы.
