Команды арифметических операций предназначены для выполнения следующих операций:
- сложение содержимого аккумулятора с содержимым регистра, ячейки памяти или константы;
- сложение содержимого аккумулятора с содержимым регистра, ячейки памяти или константы и флагом переноса;
- вычитание из содержимого аккумулятора содержимого регистра, ячейки памяти или константы;
- вычитание из содержимого аккумулятора содержимого регистра, ячейки памяти или константы и флага переноса;
- увеличение содержимого регистра или ячейки памяти на 1;
- уменьшение содержимого регистра или ячейки памяти на 1;
- сложение содержимого регистра HL с содержимым другого парного регистра;
- десятичная коррекция.
Команды передачи управления могут состоять из одного или двух байтов. Первый байт содержит код операции, второй – константное значение (если предусмотрено).
Команды арифметических операций изменяют состояние флагов.
Регистр флагов состоит из следующих признаков:
· C (Carry)- признак переноса;
· M (Minus) - признак отрицательного результата (в эмуляторе обозначен как S);
· Z (Zero) - признак нуля;
· P (Parity) - признак паритета/четности;
· AC (Auxiliary Carry) - признак половинного переноса.
Номер пп | Мнемоника | Код | Число циклов | Число тактов | Длина в байтах | Флаги: C, Z, M, P, AC | Содержание операции | Описание операции |
1 | ADD src | 10000SSS | 1 | 4 | 1 | +++++ | A <- A + src | Сложение аккумулятора и регистра |
2 | ADC src | 10001SSS | 1 | 4 | 1 | +++++ | A <- A + src + CY | Сложение аккумулятора, регистра и флага переноса |
3 | SUB src | 10010SSS | 1 | 4 | 1 | +++++ | A <- A - src | Вычитание регистра из аккумулятора |
4 | SBB src | 10011SSS | 1 | 4 | 1 | +++++ | A <- A - src - CY | Вычитание регистра и флага переноса из аккумулятора |
5 | ADD M | 86 | 2 | 7 | 1 | +++++ | A <- A + (HL) | Сложение аккумулятора и ячейки памяти |
6 | ADC M | 8E | 2 | 7 | 1 | +++++ | A <- A + (HL) + CY | Сложение аккумулятора, ячейки памяти и флага переноса |
7 | SUB M | 96 | 2 | 7 | 1 | +++++ | A <- A - (HL) | Вычитание ячейки памяти из аккумулятора |
8 | SBB M | 9E | 2 | 7 | 1 | +++++ | A <- A - (HL) - CY | Вычитание ячейки памяти и флага переноса из аккумулятора |
9 | ADI data | C6 | 2 | 7 | 2 | +++++ | A <- A + data | Сложение аккумулятора и константы |
10 | ACI data | CE | 2 | 7 | 2 | +++++ | A <- A + data + CY | Сложение аккумулятора, константы и флага переноса |
11 | SUI data | D6 | 2 | 7 | 2 | +++++ | A <- A - data | Вычитание константы из аккумулятора |
12 | SBI data | DE | 2 | 7 | 2 | +++++ | A <- A - data - CY | Вычитание константы и флага переноса из аккумулятора |
13 | INR dst | 00DDD100 | 1 | 5 | 1 | -++++ | dst <- dst + 1 | Увеличение регистра на 1 |
14 | DCR dst | 00DDD101 | 1 | 5 | 1 | -++++ | dst <- dst - 1 | Уменьшение регистра на 1 |
15 | INR M | 34 | 3 | 10 | 1 | -++++ | (HL) <- (HL) + 1 | Увеличение ячейки памяти на 1 |
16 | DCR M | 35 | 3 | 10 | 1 | -++++ | (HL) <- (HL) - 1 | Уменьшение ячейки памяти на 1 |
17 | DAA | 27 | 1 | 4 | 1 | +++++ | A <- 2/10 корр-я A | Десятичная коррекция |
18 | DAD B/D/H/SP | 09/19/29/39 | 3 | 10 | 1 | +---- | HL <- HL+BC/DE/HL/SP | Сложение регистра HL с содержимым парного регистра |
19 | INX B/D/H/SP | 03/13/23/33 | 1 | 5 | 1 | ----- | R16 <- R16 + 1 | Увеличение парного регистра на 1 |
20 | DCX B/D/H/SP | 0B/1B/2B/3B | 1 | 5 | 1 | ----- | R16 <- R16 - 1 | Уменьшение парного регистра на 1 |
5. Команды управления процессором
Команды управления процессором предназначены для выполнения следующих операций:
- разрешение и запрет прерываний;
- возбуждение обработки запросов на прерывание;
- останов;
- пустая операция;
- запись в порт вывода;
- чтение из порта ввода.
Команды управления процессором состоят из одного байта, содержащего код операции. Команды записи в порт вывода и считывания из порта ввода состоят из 2-х байтов, второй байт из которых содержит номер порта (0-255).
Команды управления процессором не изменяют состояние флагов.
Номер пп | Мнемоника | Код | Число циклов | Число тактов | Длина в байтах | Содержание операции | Описание операции |
1 | IN port | DB | 3 | 10 | 2 | A <- port | Чтение байта из порта ввода |
2 | OUT port | D3 | 3 | 10 | 2 | port <- A | Запись байта в порт вывода |
3 | RST n | 11NNN111 | 3 | 11 | 1 | -(SP) <- PC <- 8*n, n=0..7 | Передача управления обработчику вектора прерывания |
4 | EI | FB | 1 | 4 | 1 | Разрешить прерывание | Установка триггера разрешения прерываний |
5 | DI | F3 | 1 | 4 | 1 | Запретить прерывание | Сброс триггера разрешения прерываний |
6 | HLT | 76 | 1 | 7 | 1 | Останов | Останов МП |
7 | NOP | 00 | 1 | 4 | 1 | Нет операции | Пустая операция |
Поля src и dst обозначают один из 8-разрядных регистров A, B, C, D, H, L, закодированных в соответствии со следующей таблицей:
Регистр | B | C | D | E | H | L | A |
Код | 000 | 001 | 010 | 011 | 100 | 101 | 111 |
Команды арифметических и логических операций могут изменять флаги. В этом случае в соответствующем столбце таблицы для каждого флага указывается “+”, если флаг изменяется и “-” – если нет.
Скобки в обозначении операций означают содержимое оперативной памяти по адресу, взятому из источника, обозначенного внутри них.
Символы ->, <- означают направление пересылки, а <-> - обмен содержимым.
Обозначения data8, data16 и addr означают соответственно: однобайтное значение данных, двухбайтное слово данных и значение адреса.
Приложение 2
ТАБЛИЦА ПЕРЕВОДА ЧИСЕЛ МЕЖДУ РАЗЛИЧНЫМИ СИСТЕМАМИ СЧИСЛЕНИЯ
10 | 16 | 2 |
0 | 0 | 0000 |
1 | 1 | 0001 |
2 | 2 | 0010 |
3 | 3 | 0011 |
4 | 4 | 0100 |
5 | 5 | 0101 |
6 | 6 | 0110 |
7 | 7 | 0111 |
8 | 8 | 1000 |
9 | 9 | 1001 |
10 | A | 1010 |
11 | B | 1011 |
12 | C | 1100 |
13 | D | 1101 |
14 | E | 1110 |
15 | F | 1111 |
[1] 080110 Экономика и бухгалтерский учет
151001 Технология машиностроения
270116 Монтаж, наладка и эксплуатация электрооборудования промышленных и гражданских зданий
220301 Автоматизация технологических процессов и производств
260704 Технология текстильных изделий
190604 Техническое обслуживание и ремонт автомобильного транспорта
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |


