Команда перемещения данных микропроцессора К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 больше), затем указатель стека увеличивается на два. Формат команды - один байт.