- •Глава 14 Элементы программирования на языке ассемблера После изучения данной главы вы должны знать:
- •Основные компоненты языка ассемблер Алфавит языка
- •Константы (числа и строки) Числа — только целые
- •Строки (литералы)
- •Команды (операторы)
- •Директивы (псевдооператоры)
- •Модификаторы
- •Адресация регистров и ячеек памяти в ассемблере
- •Непосредственная адресация
- •Прямая адресация регистров мпп
- •Адресация ячеек оп
- •Основные команды языка ассемблер
- •Команды пересылки данных
- •Арифметические команды
- •Команды сложения, вычитания и сравнения
- •Команды приращения
- •Команды умножения
- •Команды деления
- •Логические команды
- •Команды безусловной передачи управления
- •Команды перехода к подпрограмме и выхода из подпрограммы
- •Команда перехода к подпрограмме: call opr
- •Команда выхода из подпрограммы
- •Команды условной передачи управления
- •Команды условной передачи управления для беззнаковых данных
- •Команды условной передачи управления для знаковых данных
- •Команды условной передачи управления для прочих проверок
- •Команды управления циклами
- •Команды прерывания
- •Основные директивы ассемблера
- •Директивы определения идентификаторов
- •Директивы определения данных
- •Директивы определения сегментов и процедур
- •Видеооперации с прерыванием 21h dos
- •Программирование работы с клавиатурой
- •Программирование работы с принтерами
- •Печатающие устройства параллельного типа
- •Печатающие устройства последовательного типа
- •Программирование работы с файлами
- •Прерывания, используемые при работе с файлами на дисках
- •Некоторые аспекты создания исполняемых программ
- •Процедуры формирования программы
- •Структура программы на языке ассемблера для получения исполняемого файла формата exe
- •Основные сведения о листинге и его структуре
- •Особенности структуры машинных команд
- •Последовательность работы пк при выполнении программы
- •Краткие сведения об отладчике программ debug
- •Основные команды отладчика debug
- •Вопросы для самопроверки
Команды деления
Команды деления — одноадресные, указывается только SRC (делитель); DST (делимое) задается строго определенным образом.
DIV src — деление (divide — деление без знака). Выполняет деление беззнакового делимого (16 или 32 бита) на беззнаковый делитель (8 или 16 битов). Команда одноадресная — указывается только SRC (делитель); DST (делимое) берется строго определенным образом. SRC может быть представлен оператором типа r или m (i — нельзя). Если формат SRC — байт, то делимое (слово) находится в AX, частное от деления (байт) будет в AL, остаток от деления (байт) помещается в AH; если формат SRC — слово, то делимое (двойное слово) заносится в DX:AX (старшие два байта в DX, младшие — в AX), частное от деления (слово) в AX, остаток от деления (байт) сохраняется в DL. Команда DIV формирует флаг IF (IF = 1 при делении на 0 и при делении большого числа на очень малое, если частное вне диапазона); воздействует на флаги AF, CF, OF, PF, SF, ZF (флаги не определены).
IDIV src — деление целых чисел со знаком (integer divide — деление целых чисел со знаком). Выполняет деление знакового делимого (16 или 32 бита) на знаковый делитель (8 или 16 битов). Команда одноадресная — указывается только SRC (делитель); DST (делимое) берется строго определенным образом. SRC может быть представлен оператором типа r или m (i — нельзя). Если формат SRC — байт, то делимое (слово) — в AX, частное от деления (байт) будет в AL, остаток от деления (байт) — в AH; если формат SRC — слово, то делимое (двойное слово) попадает в DX:AX (старшие два байта в DX, младшие в AX), частное от деления (слово) — в AX, остаток от деления (байт) — в DL. Команда IDIV формирует флаг IF (IF = 1 при делении на 0 и при делении большого числа на очень малое, если частное вне диапазона); воздействует на флаги AF, CF, OF, PF, SF, ZF (флаги не определены).
Логические команды
Это двухадресные команды, они используются для сравнения, сброса и установки битов операнда в операциях преобразования кодов и при выполнении арифметических операции в кодах ASCII.
OR dst, src — логическое сложение (or — или). Команда выполняет поразрядную дизъюнкцию (логическое сложение — операцию «ИЛИ») битов двух операндов; устанавливает 1 в тех битах операнда dst, в которых была 1 хотя бы у одного из исходных операндов. Операнды dst и src должны иметь одинаковый формат (оба или байт, или слово) и могут быть: src типа r, m, i; dst типа r, m (невозможно rsegm и нельзя, чтобы оба типа были m). Команда OR сбрасывает OF = 0 и CF = 0; формирует PF, SF, ZF; значение AF не определено.
AND dst, src — логическое умножение (and — и). Команда выполняет поразрядную конъюнкцию (логическое умножение — операцию «И») битов двух операндов; устанавливает 1 в тех битах операнда dst, в которых у обоих исходных операндов были 1. Операнды dst и src должны иметь одинаковый формат (оба или байт или слово) и могут быть: src типа r, m, i; dst типа r, m (невозможно rsegm и нельзя, чтобы оба типа были m). Флаги: OF = 0 и CF = 0; команда формирует PF, SF, ZF; значение AF не определено.