
- •7 Регистры состояния и управления. Флаги
- •9 Формирование физического адреса в реальном режиме
- •10 Жизненный цикл программы на Ассемблере.
- •13 Структура машинной команды. Способы задания операндов.
- •14 Функциональная классификация машинных команд
- •15 Стандартные и упрощенные директивы
- •18 Команды обмена данными с сопроцессором (ldc,stc)
- •19 Ввод - вывод в порт
- •21 Безусловные переход
- •22 Условный переход
- •23 Работа с адресами и указателями памяти
- •24 Преобразование данных
- •25 Организация стека. Команды работы со стеком.
- •27 Сложение двоичных чисел без знака.
- •28 Сложение двоичных чисел со знаком. Вычитание двоичных чисел со знаком.
- •29 Умножение двоичных чисел без знака. Деление двоичных чисел без знака.
- •29 Умножение двоичных чисел со знаком. Деление двоичных чисел со знаком
- •31 32 Сложение вычитание и деление и сложение упакованных bcd чисел
13 Структура машинной команды. Способы задания операндов.
Машинная команда представляет собой закодированную информацию о выполняемом процессором действии
Префиксы – необязательные элементы машинной команды, модифицирующие выполнение машиной команды. Префикс повторения позволяет организовать цепочное исполнение команд; префикс размера адреса позволяет менять разрядность (16 или 32 разрядов); префикс размера оператора позволяет менять размер оператора (16 или 32 разряда); префикс замены сегмента позволяет сменить сегменты;
Код операции – обязательный элемент машинной команды, обозначающий выполняемое действие.
Байт режима адресации modr/m – определяет режим работы с адресом. Поле mod определяет количество байт адреса.
Поле reg/коп определяет содержимое первого операнда, это может быть либо регистр, либо продолжение кода операции.
Поле r/m используется совместно с полем mod и определяет использование первого операнда, который может быть либо регистром, либо использоваться для вычисления эффективного адреса (при значении mod=11).
Байт sib – используется для задания адресов операторов. При этом поля mod и b r/m имеют следующие значения mod=01 или mod=10, r/m=100. Поля байта sib имеют следующие значения: ss – масштабный множитель для индексного регистра, возможные значения 1, 2, 4 или 8; index – номер регистра используемого в качестве индексного; base – номер базового регистра.
Поле смещения в команде – 8, 16 или 32 разрядное значение адреса операнда.
Непосредственный операнд – 8, 16 или 32 разрядное числовое значение.
Способы задания операндов команды
Неявный способ – команда работает с конкретными, уже заранее известными операндами или регистрами.
Непосредственный операнд – операнд находится в самой команде
Регистровый операнд – операнд размещается в одном из регистров процессора.
Размещение операнда в памяти – в качестве адреса используется адрес ячейки памяти.
Порт ввода/вывода – в качестве операнда выступает адрес ячейки памяти выделенной для обмена с внешними устройствами, например LPT, COM.
Стек – в качестве операнда выступает стек.
14 Функциональная классификация машинных команд
Все машинные команды можно разбить на группы:
●Пересылки данных:
Различают четыре типа пересылок: общего назначения, с участием аккумулятора, адреса операнда и флагов. Ни одна из команд этой группы не влияет на флаги, за исключением двух команд, которые осуществляют явную загрузку регистра флагов F.
●Арифметические:
В эту группу входят такие команды, как: ADD (сложение, INC (инкремент), SUB (вычитание), NEG (отрицание), СМР (сравнение), MUL (умножение), IMUL (умножение целых чисел), DIV (деление), IDIV (деление целых чисел)
● Логические:
Четырьмя основными логическими командами являются AND (и), OR (или), XOR (исключающее или), NOT (не).
● Передачи управления:
Обычно в программе есть точки, в которых нужно принять решение о том, какая команда будет выполняться следующей. Это решение может быть:
безусловным — в данной точке необходимо передать управление не следующей команде, а другой, которая находится на некотором удалении от текущей;
условным — решение о том, какая команда будет выполняться следующей, принимается на основе анализа некоторых условий или данных.
● Цепочные
MOVS Пересылка данных из цепочки в цепочку
CMPS Сравнение двух цепочечных операндов
INS Ввод из порта в цепочку
OUTS Вывод цепочки в порт
● Управление состоянием процессора:
►работа с флагами;
►работа с системными регистрами.