Прямая адресация
В адресной части кода команды содержится адрес операнда. Код команды с прямой адресацией занимает в памяти три последовательных байта:
‑ код операции;
‑ младший байт адреса;
‑ старший байт адреса.
В мнемонической записи кодов команд адреса записываются обычным порядком: сначала старшие разряды, потом – младшие.
Примеры:
LDA 2314 |
Содержимое ячейки памяти с адресом 2314 пересылается в аккумулятор. |
JMP CONT |
Адрес ячейки с символическим именем CONT пересылается в программный счетчик МП, следовательно, управление будет передано по адресу CONT. |
Косвенная регистровая адресация
В адресной части кода команды указывается регистровая пара, в которой содержится адрес операнда.
Косвенная адресация удобна при работе с массивами, а также необходима в тех случаях, когда адрес операнда является результатом различных преобразований. Наиболее часто для косвенной адресации используется пара HL. При символической записи кодов команд символом M (от MEMORY – память) обозначают ячейку памяти, адрес которой содержится в регистровой паре HL.
Примеры:
MOV M,C |
Содержимое регистра C пересылается по адресу, находящемуся в паре HL. |
ADD M |
К содержимому аккумулятора прибавляется содержимое ячейки памяти с адресом, находящимся в паре HL; результат остается в аккумуляторе. |
STAX B |
Байт из аккумулятора записывается в память по адресу, содержащемуся в паре BC. |
Непосредственная адресация
Операнд размещается непосредственно в коде команды. В системе команд МП КР580 непосредственный операнд может иметь длину 1 или 2 байта и размещаться после первого байта кода команды, содержащего код операции. Если операнд имеет длину 2 байта, то сначала размещается младший байт, а затем старший. В мнемонической записи байты указываются в обычной порядке: сначала старший, а затем младший.
Примеры:
LXI B, 1AF4 |
Загрузка пары BC константой 1AF4. |
ORT F0 |
Дизъюнкция содержимого аккумулятора с константой F0. |
Непосредственная адресация широко используется для указания различных констант.
2.3. Команды пересылок
Основные команды пересылок представлены в таблице 3.1. Команды ввода-вывода и команды работы со стеком, также относящиеся к группе команд пересылок, будут рассматриваться в других лабораторных работах.
2.4. Команды арифметических операций
Вычислительные возможности МП КР580 ограничены простыми командами сложения и вычитания восьми битных операторов. Операции умножения и деления, а также операции с другими форматами данных реализуются с помощью подпрограммы, что приводит к значительному уменьшению производительности МП-системы.
Команды арифметических операций приведены в таблице 3.2.
2.4.1. Команды с однобайтными операндами в аккумуляторе
Операнды представлены в форме целого числа со знаком в дополнительном коде с диапазоном изменения от –128 до +127. Старший бит представляет собой знак.
В командах, в которых формируются признаки переноса или заема, операнды рассматриваются как целые числа без знака с диапазоном изменения от 0 до 255.
Первый операнд и результат операции подразумеваются в аккумуляторе; второй операнд может находиться в любом РОН, в памяти или непосредственно в команде. Все флаги (признаки) устанавливаются в соответствии с результатом операции.
Команды сравнения CMP и CPI производят вычитание из содержимого аккумулятора значения адресуемого операнда, модифицируют по результату все флаги, но не изменяют содержимого аккумулятора. Наличие такого неразрушающего сравнения упрощает, например, операции поиска в массиве чисел.
Таблица 3.1.
МНЕМОНИ-КА КОМАНДЫ |
ДВОИЧ-НЫЙ КОД КОМАН-ДЫ |
ВЫПОЛНЯЕМЫЕ ДЕЙСТВИЯ |
ЧИСЛО БАЙТ ТАКТОВ ЦИКЛОВ |
||
MOV RD,RS |
01DDDSSS |
ПЕРЕСЫЛКА БАЙТА ИЗ RS В RD |
1 |
1 |
5 |
MOV R,RS |
01110SSS |
ПЕРЕСЫЛКА БАЙТА ИЗ RS В ПАМЯТЬ ПО АДРЕСУ ИЗ HL |
1 |
2 |
7 |
MOV RD,M |
01DDD110 |
ПЕРЕСЫЛКА БАЙТА ИЗ ПАМЯТИ (ПО АДРЕСУ В HL) В RS |
1 |
2 |
7 |
MVI RD,Д8 |
00DDD110 |
ПЕРЕСЫЛКА БАЙТА Д8 В RD |
2 |
2 |
7 |
MVI M,L8 |
00110110 |
ПЕРЕСЫЛКА БАЙТА Д8 В ПАМЯТЬ ПО АДРЕСУ ИЗ HL |
2 |
3 |
10 |
CDA АДР |
00111001 |
ЗАГРУЗКА АККУМУЛЯТОРА ИЗ ПАМЯТИ С УКАЗАННЫМ АДРЕСОМ |
3 |
4 |
13 |
STA АДР |
00110010 |
ЗАПИСЬ ИЗ АККУМУЛЯТОРА В ПАМЯТЬ ПО УКАЗАННОМУ АДРЕСУ |
3 |
4 |
13 |
LDAX РП |
00SSS010 |
ЗАГРУЗКА АККУМУЛЯТОРА ИЗ ПАМЯТИ С АДРЕСОМ ИЗ РП |
1 |
2 |
7 |
STAX РП |
00DDD010 |
ЗАПИСЬ ИЗ АККУМУЛЯТОРА В ПАМЯТЬ ПО АДРЕСУ ИЗ РП |
1 |
2 |
7 |
XCNG |
11101011 |
ОБМЕН СОДЕРЖИМЫМ ПАР DE И HL |
1 |
1 |
4 |
LXI РП, Д16 |
11DDD010 |
ЗАГРУЗКА ПАРЫ РП ДВУМЯ БАЙТАМИ Д16 ИЗ КОДА КОМАНДЫ |
3 |
3 |
10 |
LHLD АДР |
00101010 |
ЗАГРУЗКА В HL СОДЕРЖИМОГО ДВУХ ЯЧЕЕК ПАМЯТИ: (АДР)L,(АДР+1) H |
3 |
5 |
16 |
SHLD АДР |
00100010 |
ЗАПИСЬ ИЗ HL В ПАМЯТЬ: (L) АДР,HАДР+1 |
3 |
5 |
16 |
МП КР580 может производить также обработку двоично-десятичных чисел. В этом формате байт содержит две десятичные цифры (тетрады) в коде 8-4-2-1. Сложение таких чисел выполняется в два этапа:
операнды складываются как двоичные числа;
производится десятичная коррекция.
Однобайтная команда десятичной коррекции DAA в два приема корректирует значение в аккумуляторе на две десятичные цифры с правильной установкой флага C:
если младшая тетрада содержит число, большее 9, или установлен флаг AC=1, содержимое аккумулятора увеличивается на 6;
Таблица 3.2.
МНЕМО -НИКА |
МАШИННЫЙ ДВОИЧНЫЙ КОД |
ВЫПОЛНЯЕМЫЕ ДЕЙСТВИЯ |
ЧИСЛО БАЙТ ТАКТОВ ЦИКЛОВ |
|||||
КОМАНДЫ С ОДНОБАЙТНЫМИ ОПЕРАНДАМИ В АККУМУЛЯТОРЕ |
||||||||
|
10000SSS |
СЛОЖЕНИЕ |
1 |
1 |
4 |
|||
ADD M |
10000110 |
1 |
2 |
7 |
||||
ADI Д8 |
11000110 |
2 |
2 |
7 |
||||
ADC RS |
10001SSS |
СЛОЖЕНИЕ С УЧЕТОМ ПЕРЕНОСА |
1 |
1 |
4 |
|||
ADC M |
10001110 |
1 |
2 |
7 |
||||
ACI Д8 |
11001110 |
2 |
2 |
7 |
||||
DAA |
00100111 |
ДЕСЯТИЧНАЯ КОРРЕЦИЯ |
1 |
1 |
4 |
|||
SUB RS |
10010SSS |
ВЫЧИТАНИЕ |
1 |
1 |
4 |
|||
SUB M |
10010110 |
1 |
2 |
7 |
||||
SUI Д8 |
11010110 |
2 |
2 |
7 |
||||
SBB RS |
10011SSS |
ВЫЧИТАНИЕ С УЧЕТОМ ЗАЕМА |
1 |
1 |
4 |
|||
SBB M |
10011110 |
1 |
2 |
7 |
||||
SBI Д8 |
11011110 |
2 |
2 |
7 |
||||
|
10111SSS |
СРАВНЕНИЕ |
1 |
1 |
4 |
|||
SMP M |
10111110 |
1 |
2 |
7 |
||||
SPI Д8 |
11111110 |
2 |
2 |
7 |
||||
|
||||||||
КОМАНДЫ С ОДНОБАЙТНЫМИ ОПЕРАНДАМИ В РЕГИСТРАХ И ПАМЯТИ |
||||||||
|
00SSS100 |
ИНКРЕМЕНТ |
1 |
1 |
5 |
|||
INR M |
00110100 |
1 |
3 |
10 |
||||
DCR RS |
00SSS101 |
ДЕКРЕМЕНТ |
1 |
1 |
5 |
|||
DCR M |
00110101 |
1 |
1 |
10 |
||||
|
|
|
|
|
|
|||
КОМАНДЫ С ДВУХБАЙТНЫМИ ОПЕРАНДАМИ |
||||||||
INX РП |
00SSS011 |
ИНКРЕМЕНТ |
1 |
1 |
5 |
|||
DCX РП |
00SSS011 |
ДЕКРЕМЕНТ |
1 |
1 |
1 |
|||
DAD РП |
00SSS001 |
ПРИБАВЛЕНИЕ СОДЕРЖИ- МОГО ПАРЫ РП К СОДЕР- ЖИМОМУ ПАРЫ HL. |
1 |
3 |
10 |
|||
если после этого старшая тетрада аккумулятора содержит число, большее 9, или если установлен флаг C, то в старшую тетраду прибавляется 6.
Следует специально подчеркнуть, что команда DAA не корректирует вычитания.
2.4.2. Команды с однобайтными операндами в регистрах и памяти
Эти команды увеличивают или уменьшают на единицу содержимое любого РОН, аккумулятора или ячейки памяти, адресуемой через пару HL. Содержимое аккумулятора при этом не изменяется. Модифицируются все флаги, кроме флага C.
2.4.3. Команды с двухбайтными операндами в регистровых парах
Операндами является содержимое регистровых пар в формате целого числа без знака. Значения всех флагов не изменяются, только команда DAD модифицирует флаг переносов C.
3. ОБЪЕКТЫ ИССЛЕДОВАНИЯ
Работа проводится на учебно-отладочном устройстве «Электроника-580» без дополнительных модулей и контрольно-измерительной аппаратуры.
4. ЗАДАНИЕ ДЛЯ ПОДГОТОВКИ
4.1. Ознакомьтесь с системой команд МП КР580, изучите методы адресации, которые можно использовать в командах при разработки машинных программ. Ознакомьтесь с командами пересылок.
4.2. Составьте программу 3.1 для выполнения действий, описанных в соответствующей строке таблицы 3.3, не используя косвенную адресацию.
4.3. Составьте программу 3.2 для того же варианта с использованием косвенной адресации.
Таблица 3.3.
Вариант |
Выполнить указанные действия |
1 |
85+1018251 31-14D (8251)+18251 (D) 8252 (8251) +(D)B |
2 |
22-76C (A)+418301 (C)+18302 121D (D)-(C)8303 |
3 |
99E (E)-2280C4 51D (D) –(E) 80C3 (DE)+(HL)HL |
4 |
(2F1) B 44+59C (B)-(C)8010 (C)-28011 –1208012 |
5 |
37+528320 21B (B) +418321 (A)-(B)8322 (8321)+178323 |
6 |
78C4DE 26-18H 31+4l (DE)+(HL)HL (H)80FA |
7 |
127-74C (C)-1480E4 66-(C)(D) (B)+(D)80E3 (C)+(D)80E2 |
8 |
(17A)E (E)+1826E 98+5826F (E)-4826 -62826C |
9 |
18+81C 42-37D (C)+(D)8341 (C)-(D)8342 (C)+28343 |
10 |
110-93D (D)+27B (D)+18800A (A)+18009 (B)-8-(C)8007 |
11 |
12C (E)+88302 121D (D)-(C)8303 (DE)+(HL)80FA |
12 |
2480E4 60-(C)(D) (B)+(D) 8320 21B (B) +418321 |
13 |
51D (D) –(E) 80C3 (DE)+(HL)HL121D (D)-(C)8303 |
14 |
81C 42-37D (C)+(D)8341 (C) -1480E4 66-(C)(D) (B)+(D) |
15 |
(2F1) B 40+63D (B)-(D)8012 (C)-28013 –1208014 |
5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
5.1. Занесите программу 3.1 в память УОУ, определите начальное содержимое всех программно-доступных регистров, установите стартовый адрес программы.
5.2. Выполните программу 3.1 и определите содержимое всех программно-доступных регистров. Результаты занесите в таблицу. Проверьте правильность работы программы.
5.3. Аналогично исследуйте программу 3.2.
5.4. Сравните программы по занимаемой памяти и времени выполнения.
6. СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен содержать:
текст программы 3.1;
содержимое регистров и используемых ячеек памяти до и после выполнения программы 3.1;
текст программы 3.2;
содержимое регистров и используемых ячеек памяти до и после выполнения программы 3.2;
характеристики программ;
выводы.
7. КОНТРОЛЬНЫЕ ВОПРОСЫ
7.1. Объясните различие между прямой и непосредственной адресацией.
7.2. Объясните различие между прямой и косвенной адресацией.
7.3. Укажите все методы адресации, используемые при составлении программы 3.2.
7.4. Какие форматы чисел предусмотрены в системе команд МП КР580?
7.5. Как осуществляется десятичная коррекция?

ADD
RS
SMP
RS
INR
RS