
- •Цифровые устройства и микропроцессоры
- •Микропроцессорные устройства
- •Содержание
- •Введение
- •1. Функционирование микропроцессора при выполнении команд
- •1.1. Система команд микропроцессора к580вм80а
- •1.1.1. Команды пересылок
- •1.1.2. Команды ввода-вывода
- •1.1.3. Команды арифметических и логических операций
- •1.1.4. Команды управления
- •1.1.5. Специальные команды
- •1.2. Функционирование микропроцессора к580вм80а при выполнении команд
- •1.2.1. Чтение и запись данных
- •1.2.2. Работа в режиме прерывания
- •1.2.3. Работа в режиме прямого доступа к памяти
- •1.2.4. Выполнение команды останова
- •1.3. Описание учебного микропроцессорного комплекса
- •1.3.1. Описание клавиатуры
- •1.3.2. Ввод, индикация, и изменение содержимого памяти
- •1.3.3. Индикация и изменение содержимого регистров
- •1.3.9. Команды микропроцессора к580вм80а
- •1.4. Программа работы
- •1.4.1. Изучение функционирования учебного микропроцессорного комплекса
- •1.4.2. Изучение группы команд пересылок
- •1.4.3. Изучение группы арифметических команд
- •1.4.4. Изучение группы команд безусловного и условного переходов
- •1.4.5. Изучение команд вызова подпрограмм
- •1.4.6. Изучение группы команд работы со стеком
- •1.4.7. Организация циклов
- •1.5. Контрольные вопросы
- •2. Программируемый параллельный интерфейс
- •2.1. Описание интегральной схемы программируемого параллельного интерфейса к580вв55
- •2.2. Описание лабораторного макета
- •2.3. Программа работы
- •2.4. Контрольные вопросы
- •3. Требования к содержанию и оформлению отчетов
- •Список литературы
- •Цифровые устройства и микропроцессоры
- •Часть II Микропроцессорные устройства
- •195251, Санкт-Петербург, Политехническая, 29
1.1.1. Команды пересылок
Эти команды делятся
на команды однобайтовых или двухбайтовых
пересылок и команды обмена байтами.
Типичным примером команды однобайтовой
пересылки служит команда межрегистровой
пересылки, мнемонический код которой
имеет вид
.
В левой части, до двоеточия записан
мнемонический код команды, а справа
– его
реализация, также записанная в некоторой
символической форме. Буквы MOV
взяты из двух английских слов move
register
(осуществить
пересылку между двумя регистрами).
Команды
–
это группа операций, отличающихся друг
от друга названиями регистров, между
которыми осуществляется пересылка. В
частности, на место буквы
R
в мнемоническом коде подставляется имя
конкретного регистра, из которого
осуществляется пересылка, а на место
символов
Rl
–
регистра, в который осуществляется
пересылка. Все только что сказанное
символически изображено в виде записи
.
Значок
всегда обозначает помещение слова в
запоминающую ячейку или регистр, имя
которой указано у острия стрелки. Имеется
в виду, что передаваемое слово извлекается
из запоминающей ячейки или регистра,
имя которой указано с противоположной
стороны стрелки. Для указанной группы
команд межрегистровых пересылок,
использующей регистровую адресацию,
однобайтовая команда имеет следующий
вид:
.
Два левых (старших) разряда образуют
код операции пересылки, три разряда,
обозначенные буквами DDD,
соответствуют коду регистра – приемника
информации (destination),
а разряды, обозначенные буквами SSS,
– коду регистра-источника информации
(source).
Коды регистров определяются согласно
табл.1.
Всего в системе команд имеется 63 команды типа MOV, которые можно представить в виде табл.2. В заголовке каждой строки даны комбинации из четырех старших двоичных символов кода операций, а в заголовке каждого столбца – комбинации
Таблица 1 |
||
Десятичный код регистра |
Источник-приемник
|
Наименование регистра |
0 |
000 |
B |
1 |
001 |
C |
2 |
010 |
D |
3 |
011 |
E |
4 |
100 |
H |
5 |
101 |
L |
6 |
110 |
M |
7 |
111 |
A |
из четырех младших
двоичных символов кода операций.
Например, первая строка табл.2 имеет
заголовок 0100, третий слева
столбец – 0010. На пересечении
первой строки и третьего столбца имеем
команду
.
По этой команде, имеющей код
,
восьмиразрядное двоичное слово из
регистра D
пересылается в регистр B
и заменяет ранее находившееся там слово.
При этом содержимое регистра
D сохраняется –
это общее условие для всех пересылок.
Рассмотренная комбинация
и все остальные, перечисленные в
табл.2, не являются кодами
операции в чистом виде, поскольку в
неявной форме они содержат и адреса
регистров. Это специфическая особенность
набора команд микропроцессора К580ВМ80А.
Таблица 2 |
||||||||
Код |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
0100 |
MOV В,В |
MOB В ,С |
MOV B,D |
MOV B,E |
MOV B,H |
MOV B,L |
MOV B,M |
MOV B,A |
0101 |
MOV D,B |
MOV D,C |
MOV D,D |
MOV D,E |
MOV D,H |
MOV D,L |
MOV D,M |
MOV D,A |
0110 |
MOV H,B |
MOV H,C |
MOV H,D |
MOV H,E |
MOV H,H |
MOV H,L |
MOV H,M |
MOV H,A |
0111 |
MOV M,B |
MOV M,C |
MOV M,D |
MOV M,E |
MOV M,H |
MOV M,L |
HLT |
MOV M,A |
|
||||||||
Код |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
0100 |
MOV C,B |
MOV C,C |
MOV C,D |
MOV C,E |
MOV C,H |
MOV C,L |
MOV C,M |
MOV C,A |
0101 |
MOV E,B |
MOV E,C |
MOV E,D |
MOV E,E |
MOV E,H |
MOV E,L |
MOV E,M |
MOV E,A |
0110 |
MOV L,B |
MOV L,C |
MOV L,D |
MOV L,E |
MOV L,H |
MOV L,L |
MOV L,M |
MOV L,A |
0111 |
MOV А,В |
MOV A,C |
MOV A,D |
MOV A,E |
MOV A,H |
MOV A,L |
MOV A,M |
MOV A,A |
При последовательном
просмотре табл.2.
должно возникнуть недоумение при чтении
команды с кодом операции
,
поскольку
мнемонический код этой команды
соответствует операции
.
Это значит извлечь слово из регистра В
и поместить его в тот же регистр. Только
в регистр помещается не само слово, а
его инверсия, то есть другое слово, в
котором все единицы исходного заменены
нулями, а все нули – единицами. Например,
инверсией слова
будет
.
В этом случае в операции участвуют не
два, а один регистр общего назначения
(РОН). Предыдущее содержимое уничтожается
и вместо операции пересылки выполняется
операция инверсии. Аналогичные операции
имеются и для других регистров.
В коде операции
,
мнемонический код которой имеет вид
,
буквой M
обозначается ячейка памяти, адрес
которой хранится в паре регистров HL.
При этом код операции
требует
выполнения следующей последовательности
действий: извлечь содержимое пары
регистров
HL
и использовать его в качестве адреса
ячейки памяти, содержимое которой
поместить в регистр В
микропроцессора. Содержимое ячейки
памяти при этом остается неизменным.
Коду операции
соответствует
мнемонический код
.
Буквой А
в данном случае обозначен регистр-аккумулятор
(он же регистр результата).
По этой команде содержимое
регистра-аккумулятора будет скопировано
в регистр В.
Четвертая сверху
строка табл.2 обозначена комбинацией
0111. Первые
шесть команд этой строки означают, что
содержимое соответствующего регистра
В,
С,
D,
E,
H
или L
передается в ячейку памяти M,
адрес которой записан в паре регистров
HL.
Имеет смысл только сделать замечание
относительно команд с кодами
и
.
Каждая из них предусматривает, что в
ячейку памяти с некоторым адресом должна
быть передана половина этого адреса.
Вряд ли можно представить себе программу,
в составе которой понадобится такая
операция. Однако проще иметь в перечне
пару команд, никогда не используемых,
чем предусматривать специальные меры,
запрещающие появление подобных
комбинаций.
Команда с кодом
операции
не
относится к рассматриваемому классу.
Это команда останова HLT,
по которой прекращается выполнение
каких бы то ни было операций.
Команды последней строки табл.2 предусматривают передачу в регистр-аккумулятор содержимого любого из РОН или ячейки памяти M, адрес которой хранится в регистровой паре HL, или, наконец, содержимого того же регистра-аккумулятора, но с инверсией.
Относясь к одной и той же группе, команды могут почти не отличаться или же отличаться очень сильно. Но главное их свойство состоит в том, что каждый код операции однозначно без каких-либо нечеткостей или необходимости обращения к дополнительной информации указывает ту последовательность действий, которая должна быть выполнена в микропроцессорной системе. Система организации команд проявляется при их записи в виде таблицы, что позволяет достаточно просто ориентироваться во множестве различных команд. Кроме рассмотренной группы команд имеются еще шесть семейств операций однобайтовых пересылок.
Операции
.
Наличие символа D8
означает, что сама команда имеет
двухбайтовый формат. Смысл этого
семейства операций в том, что операнд
D8,
то есть содержимое второго байта команды,
передается в регистр, имя которого стоит
на месте символа
R.
Всего таких команд восемь. Они позволяют
записать операнд в любой из РОН, в ячейку
памяти M,
адрес которой хранится в регистровой
паре HL,
или в регистр-аккумулятор. Сам мнемонический
код
MVI
происходит от английских слов move
immediate
(переслать
слово, входящее непосредственно в состав
команды).
Семейство операций
.
STAX
расшифровывается как store
accumulator
indirect
(осуществить косвенное размещение
содержимого аккумулятора). Символом YZ
обозначается содержимое регистровой
пары ВС
или DE,
М(YZ)
– ячейка
памяти с адресом, помещенным в скобки
после буквы М.
В данном случае это ячейка памяти,
адресом которой является содержимое
регистровой пары, а имя помещено на
место символов
YZ.
Содержимое регистра-аккумулятора
передается в соответствующую ячейку
памяти. Всего таких команд две, которые
соответствуют
двум возможным различным регистровым
парам. Эти команды имеют однобайтовый
формат, так как согласно существующему
условию регистровую пару, если известно,
что это именно пара, можно называть лишь
именем первого регистра, то есть
мнемонические коды команд будут иметь
вид либо
,
либо
.
Семейство команд
.
LDAX
обозначает load
accumulator
indirect
(загрузить аккумулятор косвенно), то
есть осуществить пересылки аналогичные
предыдущему семейству, но в противоположную
сторону.
Команда
.
STA
– store
accumulator
direct
(осуществить прямое размещение содержимого
аккумулятора).
Команда имеет трехбайтовый формат.
Содержимое регистра-аккумулятора
передается в ячейку памяти М,
адрес которой записан во втором и третьем
байтах
команды.
Команда
.
STA
– load
accumulator
direct
(загрузить аккумулятор прямо).
Команда по своему смыслу является
обратной к предыдущей.
Команда
означает, что содержимое регистровой
пары HL
передается в регистр-указатель стека
SP
(stack
pointer).
Следующую подгруппу команд составляют команды двухбайтовых пересылок. Символические обозначения первых трех команд двухбайтовых пересылок имеют следующий вид:
;
;
.
Первая из этих команд не требует комментариев с тем исключением, что буквами YZ обозначается содержимое регистровых пар ВС, DE, HL или регистра SP. По второй команде содержимое регистровой пары HL передается в две соседние ячейки памяти. Подобный прием является типовым. Во всех операциях, выполняемых над словом длиной два байта, если при этом участвует память, указывается адрес одной ячейки, а обращение производится к двум соседним. Третья команда по смыслу противоположна предыдущей команде.
Рассмотрим две оставшиеся команды двухбайтовых пересылок. Их символические описания имеют вид:
;
.
Символ YZ обозначает содержимое регистровой пары ВС, DE, HL или регистра слова состояния PSW. Команда PUSH предусматривает пересылку содержимого одной из перечисленных регистровых пар в две соседние ячейки памяти M(SP-1) и M(SP-2). При этом в регистр-указатель стека также засылается адрес последней ячейки памяти. Данные действия представляют типичную операцию заполнения стека. Смысл стековой организации памяти состоит в том, что к моменту начала любой операции в регистре-указателе стека хранится адрес последней занятой ячейки. Команда POP по смыслу противоположна команде PUSH.
К командам пересылок относятся также команды обмена байтами. Символические описания данных команд следующие:
;
.