- •Программное управление — основа автоматизации вычислительного процесса
- •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
Основные команды языка ассемблер
По назначению можно выделить команды (в скобках приводятся примеры мнемонических кодов операций команд ассемблера ПК типа IBM PC):
выполнения арифметических операций (ADD и ADC – сложения и сложения с переносом, SUB и SBB – вычитания и вычитания с заемом, MUL и IMUL – умножения без знака и со знаком, DIV и IDIV – деления без знака и со знаком, CMP – сравнения и т.д.);
выполнения логических операций (OR, AND, NOT, XOR, TEST и т.д.);
пересылки данных (MOV – переслать, XCHG – обменять, IN – ввести в микропроцессор, OUT – вывести из микропроцессора и т.д.);
передачи управления (ветвления программы: JMP – безусловного перехода, CALL – вызова процедуры, RET – возврата из процедуры, J* - условного прерывания и т.д.);
обработки строк символов (MOVS – пересылки, CVPS – сравнения, LODS – загрузки, SCAS – сканирования, REP – повторения и т.д.);
прерывания работы программы (INT – программное прерывания, INTO – условного прерывания при переполнении, IRET – возврата из прерывания);
управления микропроцессором (ST* и CL* - установки и сброса флагов, HLT – останова, WAIT – ожидания, ESC – выхода, NOP – холостого хода и т.д.).
С полным списком команд ассемблера можно познакомиться в работах [1, 3, 11].
A.Команды пересылки данных
Основные команды пересылки данных:
MOV dst,src – пересылка данных(move – переслать из src в dst).
Пересылает (в командах для отображения операндов используется обычное обозначение орг и семантические обозначения src (source — источник) и dst (destination — приемник)): один байт (если src и dst имеют формат байта) или одно слово (если src и dst имеют формат слова) между регистрами или между регистром и памятью, а также заносит непосредственное значение в регистр или память.
Операнды dst и src должны иметь одинаковый формат — байт или слово.
Src могут иметь тип: r (register) — регистр, m (memory) — память, i (impedance) -непосредственное значение. Dst могут быть типа r, t. Нельзя в одной команде использовать операнды: rsegm совместно с i; два операнда типа m и два операнда типа rsegm. Операнд i может быть и простым выражением:
mov AX,156*10H
mov AX,(152+101B)/15
и т.п.
Вычисление выражения выполняется только при трансляции. Флаги не меняет.
PUSH src - занесение слова в стек (push — протолкнуть; записать в стек из src). Помещает в вершину стека содержимое src — любого 16-битового регистра (в том числе и сегментного) или двух ячеек памяти, содержащих 16-битовое слово. Флаги не меняются.
POP dst — извлечение слова из стека (pop — вытолкнуть; считать из стека в dst). Снимает слово с вершины стека и помещает его в dst — любой 16-битовый регистр (в том числе и сегментный) или в две ячейки памяти. Флаги не меняются.
В командах PUSH и POP dst и src могут быть только r и m.
I.Команды сложения, вычитания и сравнения
Команды сложения, вычитания и сравнения — двухадресные.
ADD dst .src — сложение двоичных чисел (add — сложить). Прибавляет байт или слово из памяти, регистра непосредственно к содержимому регистра или прибавляет байт или слово из регистра непосредственно к памяти (содержимое src прибавляет к содержимому dst). Операнды dst и src должны иметь одинаковый формат (оба, или байт, или слово) и могут иметь тип данных: src — r, m, i; dst — r, m (невозможно rsegm, i и нельзя, чтобы оба типа были m или оба rsegm). Команда ADD формирует флаги AF, CF, OF, PF, SF и ZF.
SUB dst, src - вычитание двоичных чисел (substract — вычесть). Вычитает байт или слово, взятое из памяти, регистра или непосредственно из содержимого регистра или вычитает байт или слово, взятое из регистра или непосредственно из памяти (содержимое src вычитается из содержимого dst). Операнды dst и src должны иметь одинаковый формат (оба или байт или слово) и могут быть: src - r, m, i; dst — r, m (невозможно rsegm и нельзя, чтобы оба типа были m). Команда SUB формирует флаги AF, CF, OF, PF, SF и ZF.
CMP dst,src — сравнение (compare — сравнить). Сравнивает содержимое двух полей данных; фактически команда вычитает второй операнд (src) из первого (dst), но значение dst не изменяет, а лишь формирует флаги. Операнды dst и src должны иметь одинаковый формат (оба, или байт, или слово) и могут быть: src — r, m, i; dst — r, t (невозможно rsegm, i и нельзя, чтобы оба типа были m или оба rsegm). Команда СМР формирует флаги: CF, ZF при сравнении чисел без знака, CF, OF, SF, ZF при сравнении чисел со знаком; флаги AF, PF не определены.
