- •А. В. Поздняков, б. Я. Цилькер микропроцессоры и микропроцессорные системы
- •Часть 1
- •(Учебное пособие)
- •Содержание
- •1. Микропроцессорные системы
- •1.1. Историческая справка
- •1.2. Архитектура мпс с магистрально-модульной организацией
- •1.3. Режимы работы мпс
- •2.1. Центральный процессор
- •2.1.1. Классификация микропроцессоров
- •2. Микропроцессорный модуль
- •2.1.2. Структура центрального процессора
- •2.1.2.1. Краткая характеристика микропроцессора Intel 8086
- •2.1.2.2. Архитектура микропроцессора Intel 8086
- •2.1.2.3. Программная модель микропроцессора Intel 8086
- •2.1.2.4. Представление информации в мп Intel 8086
- •2.1.2.5. Способы адресации операндов в мп Intel 8086
- •2.1.2.6. Система команд мп Intel 8086
- •2.1.2.7. Содержание цикла команды, типовые машинные циклы мп Intel 8086
- •2.1.2.8. Входные и выходные сигналы мп Intel 8086
- •2.2. Сопроцессор
- •2.3. Генератор тактовых импульсов
- •2.4. Системный контроллер
- •2.5. Согласующие элементы микропроцессорных систем
- •2.5.1. Шинные формирователи
- •2.5.2. Буферные регистры
- •2.6. Контроллер прерываний
- •2.7. Контроллер прямого доступа к памяти
- •2.8. Программируемый таймер
- •3. Модуль памяти
- •3.1. Организация модуля памяти
- •3.2. Распределение адресного пространства зу
- •3.3. Декодирование старших разрядов адреса.
- •3.3.1. Декодирование адресов методом линейной выборки
- •3.3.2. Декодирование адресов с помощью логических компараторов
- •3.3.3. Декодирование адресов с применением комбинационных логических схем
- •3.4. Выбор типа зу
- •3.5. Функциональная схема модуля памяти
- •3.6. Обеспечение необходимой емкости зу
- •3.6.1. Увеличение разрядности зу
- •3.6.2. Увеличение адресного пространства зу
- •4. Модуль ввода-вывода
- •4.1. Интерфейс ввода-вывода
- •4.2. Параллельные порты
- •4.2.1. Параллельный порт вывода
- •4.2.2. Параллельный порт ввода
- •4.2.3. Параллельные порты ввода-вывода
- •4.3. Последовательные порты
- •4.3.1. Последовательный асинхронный порт вывода
- •4.3.2. Последовательный асинхронный порт ввода
- •4.3.3. Программируемый последовательный интерфейс
- •4.4. Организация обращения к портам ввода/вывода
- •4.4.1. Обращение к портам ввода/вывода с помощью специальных команд
- •4.4.2. Обращение к портам ввода/вывода с помощью команд пересылок
- •4.5. Способы организации ввода/ вывода информации в мпс
- •4.5.1. Организация ввода/вывода информации под управлением основной программы
- •4.5.2. Организация ввода/вывода в режиме прерывания программы
- •4.5.3. Организация ввода/вывода в режиме прямого доступа к памяти
- •Система команд микропроцессора Intel 8086 Команды пересылки данных
- •Арифметические команды
- •Логические команды
- •Команды передачи управления
- •Команды управления процессором
- •Команды обработки строк
- •Литература
Арифметические команды
Арифметические команды реализуют операции арифметического сложения, вычитания, умножения, деления, сравнения и десятичной коррекции. Команды данной группы представлены в табл. П.2. В таблице использованы следующие условные обозначения:
op, op1, op2 – операнды;
i8, i16, i32 – 8-, 16- и 32-разрядные константы находящиеся непосредственно в командах;
r8, r16 – имя регистра РОН, содержащего 8-разрядный или 16-разрядный операнд;
m8, m16, m32 – адрес ячейки памяти, содержащей 8-,16- или 32-разрядный операнд;
CF – флаг переноса;
mod op – остаток от деления;
div op – неполное частное от деления;
КЧ – корректирующее число.
Таблица П.2. Арифметические команды
Мнемоника |
Операция |
Допустимые комбинации операндов |
Описание команды |
|
op1 |
op2 |
|||
Команды воздействуют на флаги AF, CF, OF, PF, SF, ZF |
||||
ADD op1,op2 |
op1:=op1+op2 |
r8 m8 r16 m16 |
i8, r8, m8 i8, r8 i16, r16, m16 i16, r16 |
Сложение (addition) |
ADC op1,op2 |
op1:=op1+op2+ +CF |
r8 m8 r16 m16 |
i8, r8, m8 i8, r8 i16, r16, m16 i16, r16 |
Сложение с учетом переноса (addition with carry) |
SUB op1,op2 |
op1:=op1-op2 |
r8 m8 r16 m16 |
i8, r8, m8 i8, r8 i16, r16, m16 i16, r16 |
Вычитание (subtract) |
SBB op1,op2 |
op1:=op1-op2- -CF |
r8 m8 r16 m16 |
i8, r8, m8 i8, r8 i16, r16, m16 i16, r16 |
Вычитание с учетом заема (subtract with barrow) |
CMP op1,op2 |
op1-op2 |
r8 m8 r16 m16 |
i8, r8, m8 i8, r8 i16, r16, m16 i16, r16 |
Сравнение (compare) |
NEG op |
op :=-op |
r8, m8, r16, m16 |
Изменение знака (negative) |
|
Команды воздействуют на флаги AF, OF, PF, SF, ZF |
||||
INC op |
op :=op +1 |
r8, m8, r16, m16 |
Увеличение на 1 (increment) |
|
DEC op |
op :=op -1 |
r8, m8, r16, m16 |
Уменьшение на 1 (decrement) |
|
Команды воздействуют на флаги AF, OF, PF, SF, ZF |
||||
MUL op
|
AX:=AL op |
r8, m8 |
Умножение целых без знака (multiply) |
|
(DX, AX):= AXop) |
r16, m16 |
|||
IMUL op |
AX:=AL op |
r8, m8 |
Умножение целых со знаком (integer multiply) |
|
(DX, AX):= AXop) |
r16, m16 |
|||
DIV op
|
AH:=AX mod op AL:=AX div op |
r8, m8 |
Деление целых без знака (divide) |
|
DX:= (DX,AX) mod op AX:= (DX,AX) div op |
r16, m16 |
|||
IDIV op |
AH:=AX mod op AL:=AX div op |
r8, m8
|
Деление целых со знаком (integer divide)
|
|
DX:= (DX,AX) mod op AX:= (DX,AX) div op |
r16, m16 |
|||
Команды не воздействуют на флаги |
||||
CBW |
AH := 00h при AL0 AH := 0FFh при AL0 |
AL |
Расширение байта до слова (convert byte to word) |
|
CWD |
DX := 0000h при AX0 DX := 0FFFFh при AX0 |
AX |
Расширение слова до двойного слова (convert word to double) |
|
Команды воздействуют на флаги AF, CF, PF, SF, ZF |
||||
DAA |
AL:=AL+КЧ |
AL |
Десятичная коррекция после сложения (decimal adjust after addition) |
|
DAS |
AL:=AL+КЧ |
AL |
Десятичная коррекция после вычитания (decimal adjust after subtraction) |
|
Команды воздействуют на флаги AF, CF |
||||
AAA |
AL:=AL+КЧ |
AL |
ASCII-коррекция после сложения (ASCII adjust after addition) |
|
AAS |
AL:=AL+КЧ |
AL |
ASCII-коррекция после вычитания (ASCII adjust after subtraction) |
|
Команды воздействуют на флаги AF, OF, PF, SF, ZF |
||||
AAM |
AX:=AX+КЧ |
AX |
ASCII-коррекция после умножения (ASCII adjust after multiply) |
|
AAD |
AL:=AL+КЧ |
AL |
ASCII-коррекция перед делением (ASCII adjust before division) |
|
