- •Предисловие
- •1.2. Можно ли самому построить эвм?
- •Какую микро-эвм мы будем строить?
- •2.1. Основные блоки микро-эвм
- •2.2. Содержимое центрального блока
- •2.3. Какую микро-эвм мы будем называть "простейшей"?
- •Некоторые общие сведения о работе микро-эвм
- •3.1. Данные и программы
- •3.2. Основные логические операции
- •3.3. Основные арифметические операции
- •Архитектура
- •И компонентов
- •4.1. Конструктивное оформление пм-эвм
- •4.2. Основные связи и структура шин
- •4.3. Общая функциональная схема пм-эвм
- •4.4. Функциональная схема микропроцессора
- •4.5. Как микропроцессор выполняет команду?
- •4.6. Система команд и способы адресации
- •4.6.1. Группа команд пересылки данных
- •4.6.2. Группа арифметических команд
- •4.6.3. Группа логических команд
- •4.6.4. Группа команд переходов
- •4.6.5. Группа команд управления и работы со стеком
- •4.7. Программирование пм-эвм
- •Используемые микросхемы
- •5.1. Общие вопросы
- •5.3. Временные диаграммы
- •5.4. Микросхемы, реализующие логические функции
- •5.5. Микросхемы, содержащие элементы памяти
- •Структура и функционирование микропроцессорного блока
- •6.1. Микропроцессор кр580ик80а
- •6.2. Синхронизация
- •6.3. Шины адреса, данных и управления
- •7.2. Структура памяти
- •7.3. Клавиатура и индикация
- •7.4. Программа-монитор
- •7.5. Инструкция по работе на микро-эвм
- •Сборка и отладка
- •8.1. Этапы сборки и проверки узлов
- •8.2. Статический аппаратный эмулятор
- •8.3. Отладка в рабочем режиме
- •8.4. Подготовка пм-эвм к работе
- •9.1. Программируемый калькулятор
- •9.3. Сбор и обработка данных
- •9.4. Реализация диалогового режима
- •Расширение возможностей
- •10.1. Клавиатура и индикация
- •10.2. Внешняя память
- •10.3. Накопитель на базе бытового магнитофона
- •10.4. Дисплей на базе бытового телевизора или осциллографа
- •10.5. Простой графический дисплей
- •10.6. Звуковая сигнализация
- •10.7. Другие возможности пм-эвм
- •Приложения
- •Список рекомендуемой литературы
4.6. Система команд и способы адресации
Система команд микропроцессора КР580ИК80А представлена 244 кодами операций, которые могут быть расклассифицированы по разным признакам. Наиболее существенными для ознакомления с особенностями их использования являются следующие три признака: длина команды, или число занимаемых байтов, функциональный признак, или выполняемые командой операции, и способ адресации. Полный перечень команд приведен в приложении 1. В таблице приведены символическая запись (мнемокод) команды, описание выполняемых ею функций, длина в байтах, обозначения изменяемых флагов и число машинных тактов, занимаемых при ее выполнении. Из 256 возможных кодов (при восьми двоичных разрядах) не используются следующие 12 кодовых комбинаций (в восьмеричной записи): 010, 020, 030, 040, 050, 060, 070, 313, 331, 335, 355 и 375. Этим и объясняется количество всех команд: 244. Команды в таблице разбиты на три группы по числу занимаемых байтов: все команды делятся на однобайтовые, двухбайтовые и трехбайтовые. При этом первый байт всегда отводится под код команды, а второй и третий байты содержат либо данные, либо адрес, по которому они находятся в памяти (рис. 4.6).
Восьмеричные коды всех однобайтовых, двухбайтовых и трехбайтовых команд приведены соответственно в табл. 4.1, 4.2 и 4.3. При этом в табл. 4.1 наряду с обычными указаны обобщенные коды, т. е. коды, содержащие кроме восьмеричных цифр кодовые переменные S, D и А. В табл. 4.1 если код команды содержит только цифры, это означает, что существует единственная команда с соответствующим кодом. Некоторые коды кроме цифр содержат буквы: S (первые И команд), D (третья команда) и А (последняя команда). Таким кодам соответствуют множества команд. При этом каждой команде из первых 11 команд, кроме третьей, соответствует группа конкретных команд, мнемокод которых вместо символа г (регистр) содержит обозначения конкретных регистров (В, С, D, Е, Н, L), либо символ памяти (М), либо символ аккумулятора (А). Соответствующий конкретный восьмеричный код команды вместо символа S должен содержать одну из цифр: О, 1, 2, 3, 4, 5, 6, 7 соответственно, т. е. символу В в мнемокоде соответствует цифра 0 в восьмеричном коде, символу С в мнемокоде — цифра 1 в восьмеричном коде и т. д,. . ., символу М в мнемокоде — цифра 6 в восьмеричном коде и, наконец, символу А в мнемокоде — цифра 7 в восьмеричном коде. Для третьей команды в табл. 4.1 точно такая же аналогия соблюдается для пар символов гь г2 и D, S. Последняя команда таблицы содержит символ А в мнемокоде и в восьмеричном коде. Она соответствует группе из восьми конкретных команд, в каждой из которых символ А принимает одно из значений: О, 1, ... ...,7.
Рис. 4.6. Форматы команд: однобайтовой (а), двухбайтовой (б), трехбайтовой (в)
Таблица 4.1 |
|||||||||||||||
Код |
Команда |
Код |
Команда |
|
|
Код |
Команда |
||||||||
OS4 |
INR |
r |
|
051 |
DAD |
H |
|
370 |
RM |
|
|||||
OS5 |
DCR |
r |
|
071 |
DAD |
SP |
311 |
RET |
|
||||||
1DS |
MOV |
r1r2 |
301 |
POP |
В |
|
007 |
RLC |
|
||||||
20S |
ADD |
r |
|
321 |
POP |
D |
|
017 |
RRC |
|
|||||
21S |
ADC |
r |
|
341 |
POP |
H |
|
027 |
RAL |
|
|||||
22S |
SUB |
r |
|
361 |
POP |
PSW |
037 |
RAR |
|
||||||
23S |
SBB |
r |
|
305 |
PUSH |
В |
|
353 |
XCHG |
||||||
24S |
ANA |
r |
|
325 |
PUSH |
D |
|
343 |
XTHL |
||||||
25S |
XRA |
r |
|
345 |
PUSH |
H |
|
371 |
SPHL |
||||||
26S |
ORA |
r |
|
365 |
PUSH |
PSW |
351 |
PCHL |
|||||||
27S |
CMP |
r |
|
002 |
STAX |
В |
|
166 |
HLT |
|
|||||
003 |
INX |
в |
|
022 |
STAX |
D |
|
000 |
NOP |
|
|||||
023 |
INX |
D |
|
012 |
LDAX |
В |
|
363 |
DI |
|
|||||
043 |
INX |
H |
|
032 |
LDAX |
D |
|
373 |
El |
|
|||||
063 |
INX |
SP |
300 |
RNZ |
|
|
047 |
DAA |
|
||||||
013 |
OCX |
В |
|
310 |
RZ |
|
|
057 |
CMA |
|
|||||
033 |
OCX |
D |
|
320 |
RNC |
|
|
067 |
STC |
|
|||||
053 |
OCX |
H |
|
330 |
RC |
|
|
077 |
CMC |
|
|||||
073 |
DCX |
SP |
340 |
RPO |
|
|
3A7 |
RST |
A |
||||||
011 |
DAD |
В |
|
350 |
RPE |
|
|
|
|
|
|||||
031 |
DAD |
D |
|
360 |
RP |
|
|
|
|
|
|||||
Таблица 4.2 |
|||||||||||||||
Код |
Команда |
Код |
Команда |
||||||||||||
306 |
ADI |
|
<B2> |
|
323 |
OUT |
<B2> |
|
|||||||
316 |
ACI |
|
<B2> |
|
006 |
|
MVI |
В |
<B2> |
|
|||||
326 |
SUI |
|
<B2> |
|
016 |
|
MVI |
С |
<B2> |
|
|||||
336 |
SBI |
|
<B2> |
|
026 |
|
MVI |
D |
<B2> |
|
|||||
346 |
ANI |
|
<B2> |
|
036 |
|
MVI |
E |
<B2) |
|
|||||
356 |
XRI |
|
<B2> |
|
046 |
|
MVI |
H |
<B2> |
|
|||||
366 |
ORI |
|
<B2> |
|
056 |
|
MVI |
L |
<B2> |
|
|||||
376 |
CPI |
|
<B2> |
|
066 |
|
MVI |
M |
<B2> |
|
|||||
333 |
IN |
|
<B2> |
|
076 |
|
MVI |
A |
<B2> |
|
|||||
Таблица 4.3 |
|
||||||||||||||
Код |
Команда |
Код |
Команда |
|
|||||||||||
302 |
JNZ |
<В2><ВЗ> |
344 |
СРО |
<B2><B3> |
|
|||||||||
312 |
JZ |
<В2><ВЗ> |
354 |
СРЕ |
<B2><B3> |
|
|||||||||
322 |
JNC |
<В2><ВЗ> |
364 |
СР |
<B2><B3> |
|
|||||||||
332 |
JC |
<В2><ВЗ> |
374 |
СМ |
<B2><B3> |
|
|||||||||
342 |
JPO |
<В2><ВЗ> |
315 |
CALL |
<B2><B3> |
|
|||||||||
352 |
JPE |
<В2><ВЗ> |
001 |
LXIB |
<B2><B3> |
|
|||||||||
362 |
JP |
<В2><ВЗ> |
021 |
LXI D |
<B2><B3> |
|
|||||||||
372 |
JM |
<В2><ВЗ> |
041 |
LXIH |
<B2><B3> |
|
|||||||||
303 |
JMP |
<В2><ВЗ> |
061 |
LXISP |
<B2><B3> |
|
|||||||||
304 |
CNZ |
<В2><ВЗ> |
062 |
STA |
<B2><B3> |
|
|||||||||
314 |
CZ |
<В2><ВЗ> |
072 |
LDA |
<B2><B3> |
|
|||||||||
324 |
CNC |
<В2><ВЗ> |
042 |
SHLD |
<B2><B3> |
|
|||||||||
334 |
СС |
<В2><ВЗ> |
052 |
LHLD |
<B2><B3> |
|
|||||||||
Как видно из табл. 4.2, микропроцессор КР580ИК80А может выполнять всего 18 двухбайтовых и 26 трехбайтовых команд, приведенных в табл. 4.3.
Прежде чем переходить к обзору особенностей выполнения различных операций приведенными командами, остановимся на возможных способах адресации. Под способом или режимом адресации подразумевается способ определения данных, участвующих в операциях, или, иначе говоря, способ определения операндов. Для составления программы важно знать особенности процедур, позволяющих преобразовать информацию об адресах команд и данных в физические адреса участков памяти машины.
Для МП КР580ИК80А существуют следующие четыре возможных способа адресации: непосредственная, прямая, регистровая и косвенная.
Непосредственная адресация является наиболее экономичным способом хранения и поиска информации, поскольку необходимые данные содержит сама команда. Эти данные содержатся во втором и третьем байтах трехбайтовой команды или во втором байте двухбайтовой команды. В случае трехбайтовой команды младшие разряды 16-битового числа содержатся во втором байте команды, а старшие - в третьем (рис. 4.7,а).
Менее экономичной, но также довольно простой является прямая адресация. В этом случае во втором и третьем байтах команды содержится полный 16-разрядный адрес памяти. Младшим байтом адреса является <В2>, старшим — <ВЗ) (рис. 4.7,6). Таким способом можно адресоваться к любой ячейке адресного пространства памяти.
При регистровой адресации код команды содержит указание на регистр или пару регистров, в которых содержатся данные. Используемые в регистровой адресации команды являются однобайтовыми (рис. 4.7,в). Возможность указания пары регистров в однобайтовой команде реализуется за счет того, что адреса регистров являются трехразрядными двоичными кодами.
Косвенная адресация отличается от регистровой лишь тем, что в регистровой паре, определяемой кодом команды, содержатся не данные, а полный 16-разрядный адрес ячейки памяти,в которой имеются эти данные (рис. 4.7,г). Старший байт адреса записывается в первом регистре пары, а младший байт — во втором. Обычно указателем адреса при косвенной адресации являются пара регистров Н, т. е. регистры Н, L, но иногда используются и пары В и D.
При всевозможных пересылках данных из регистров в регистры или из памяти в регистры или обратно различают регистры — источники данных и регистры — приемники данных. Первые обозначаются символом S (source — источник), вторые — символом D (destination — место назначения). В регистровых парах В, С; D, Е и Н, L старшими являются первые регистры пар, т. е. регистры В, D, Н соответственно. Коды регистров общего назначения, пар регистров и флагов строго фиксированы (табл. 4.4).
В табл. 4.4 обозначение условия в мнемокоде команды в зависимости от значения флагов расшифровывается следующим образом: NZ — результат ненулевой; Z — результат нулевой; NC — нет переноса; С — есть перенос; РО - нет четности; РЕ — есть четность; Р — результат положительный (плюс) ; М -результат отрицательный (минус).
Рис. 4.7. Способы адресации: непосредственная (а), прямая (б), регистровая (в) и косвенная (г)
Все команды по функциональному признаку могут быть разбиты на следующие пять групп: группа команд пересылки данных, арифметические команды, логические команды, команды переходов и команды управления и работы со стеком. Рассмотрим работу наиболее типичных представителей этих групп команд, многие из которых вошли в описываемую ниже программу-монитор (см. § 7.4).
