Лабораторная работа: Команда перемещения данных микропроцессора К580
Лабораторная работа: Команда перемещения данных микропроцессора К580
Дон ГТУ
Лабораторная
работа № 2
Команда
перемещения данных микропроцессора К580
Цель лабораторной работы
- изучить форматы команд микропроцессора К580, методы адресации, команды
перемещения данных.
1
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Микропроцессор К580 имеет
27 оригинальных команд. С каждой из оригинальных команд возможно использование
различных методов задания операндов, поэтому общее число команд около 250.
Каждая команда
микропроцессора состоит из непосредственно кода команды и операндов. Операнд
может быть задан в самой команде или в команде указывается адрес, по которому
расположен операнд. Способ задания операнда в команде называется методом
адресации.
Команды микропроцессора
записываются в 8-разрядные ячейки памяти и могут иметь в длину одно, два или
три машинных слова (байта). Все слова команды должны следовать друг за другом и
располагаться в соседних ячейках памяти. В микропроцессоре К580 длину в одно слово
имеют команды перемещения данных из одного регистра в другой и другие команды
перемещения данных; длину в два слова имеют команды с непосредственной
адресацией (в первом байте находится код операции, во втором - байт данных),
команды ввода-вывода; из трех слов состоят команды условных и безусловных
переходов, команды загрузки и запоминания данных.
Методы
адресации
Прямая адресация - это
такой метод адресации, когда каждая команда состоит из кода операции (первый
байт) и адреса операнда, содержащегося во втором и третьем байтах (например,
рассмотренная выше команда LDA). Прямая адресация - самая простая, но зато и
самая неэкономичная с точки зрения объёма памяти и времени выполнения (13
машинных тактов).
Непосредственная
адресация - когда команда состоит из кода операции (первый байт) и байта данных
(второй байт), который подлежит обработке микропроцессором. Таким образом, данные непосредственно
содержатся в самой команде.
Косвенная адресация позволяет компактно адресоваться ко всем
ячейкам памяти микропроцессора. В этом случае в поле операнда указывается код
пары регистров, содержащих адрес памяти, по которому расположен байт данных.
Адрес может содержаться в парах регистров HL (основной указатель адреса), а также в парах регистров ВС, DE.
Команды перемещения данных
Команды перемещения данных MOV R1, R2 предназначены для перемещения байта
данных из регистра R2 в регистр R1. При выполнении этой команды
содержимое регистра R2 не изменяется. Формат команды - одно
машинное слово вида 01 dddSSS,
где ddd - код регистра приемника R1, SSS - код
регистра источника R2 (см. таблицу).
Таблица 1.1 – Форматы команд
Обозначение |
Двоичные коды |
Обозначение |
Двоичные коды |
B |
000 |
C |
001 |
D |
010 |
E |
011 |
H |
100 |
L |
101 |
M |
110 |
A |
111 |
(память) |
|
(аккумулятор) |
|
Если на месте R1 или R.2. стоит
М (память), то происходит перемещение данных в ячейку или из ячейки памяти,
адрес которой записан в паре регистров HL. Поэтому перед выполнением этих команд необходимо занести в
пару регистров HL нужный адрес ячейки памяти.
Команда перемещения данных с непосредственной адресацией MVIR предназначена для перемещения байта
данных, записанного во втором байте команды, в регистр R (или ячейку памяти М с адресом, содержащимся в регистровой
паре HL). Формат команды 000ddd <байт данных>, где ddd – код R (см.
таблицу).
Команда загрузки аккумулятора LDR – 3-байтная команда, предназначенная для загрузки в
аккумулятор А содержимого ячейки памяти, адрес которой записан во втором и
третьем байтах команды.
Команда запоминания данных STA - 3-байтная команда, предназначенная для передачи содержимого
аккумулятора в ячейку памяти с адресом, записанным во втором и третьем байтах команды.
Команды загрузки и запоминания с косвенной адресацией LDAX R и STAX R предназначены для загрузки в аккумулятор содержимого ячейки памяти,
адрес которой содержится в паре регистров, и занесения содержимого аккумулятора
в ячейку памяти, адрес которой содержится в паре регистров. Операнд R команды содержит код первого регистра регистровой пары, в
которой содержится адрес ячейки памяти (ВС или DE). Длина - один байт, двоичные коды – 00rr010 и 00rr0010, где rr - первые две
цифры кода первого регистра регистровой пары.
Команды непосредственной загрузки пары регистров LXIR - 3-байтовая команда загрузки пары регистров ВС, DЕ , HL или указателя стека SР адресом, находящимся во втором и третьем байтах команды.
Команды загрузки пары регистров HL и записи содержимого HL в память LHL D и SHL D загружают регистры HL из
пары ячеек памяти и записывают содержимое регистров HL в пару ячеек памяти. Адрес первой ячейки, из которой или в
которую загружается регистр L, указывается во втором и третьем
байтах команды. Из следующей ячейки или в нее загружается регистр H.
Команда обмена содержимого пар регистров XCHG: H – D, L – E. Формат команды - одно машинное слово.
Команда обмена XTHL пары
регистров HL и двух верхних ячеек стека, т.е.
последних загруженных в стек данных L - (SP), H - (SP+1).
Формат команды - один
байт, содержимое указателя стека SP - не изменяется.
Команда SPHL передает содержимое пары регистров HL в указатель команды - один байт.
Команда PCHL передает содержимое пары регистров HL в счетчик адреса. Таким образом, следующая команда программы
выбирается микропроцессором из ячейки с указанным адресом. Формат команды -
один байт.
Команды операции со
стеком. Команда PUSH R засылает в стек содержимое пары регистров. Содержимое
старшего регистра (В, D, H ) пересылается в ячейку памяти, адрес которой на один
меньше содержимого указателя стека SP, младший регистр
(С, Е, L) пересылается в ячейку памяти, на два меньше содержимого
указателя стека SP. Содержимое
указателя стека уменьшается на два. Формат команды - один байт.
Команда POP R засылает в пару регистров содержимое двух последних ячеек
стека (в младший регистр - ячейку с адресом, равным содержимому указателя стека
SP, в старший регистр - ячейку с адресом на 1 больше), затем
указатель стека увеличивается на два. Формат команды - один байт.