Команды микропроцессора КР580ИК80 





Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Команды микропроцессора КР580ИК80



 

Система команд микропроцессора содержит 78 команд, включающих в себя 111 операций. Команды микропроцессора могут быть 1, 2 или 3-х байтные. Рассмотрим их структуру.

Однобайтные команды занимают в памяти 1 байт, в котором содержится операция.

1 байт КОП Код операции

 

 

Двухбайтные команды занимают 2 байта памяти и содержат в первом байте код операции, а во втором - операнд.

 

1 байт КОП Код операции
2 байт ОП 1 Операнд

 

Трехбайтные команды в первом байте содержат код операции, а во втором и третьем байтах - операнды.

 

1 байт КОП Код операции
2 байт ОП1 1 Операнд
3 байт ОП2 2 Операнд

 

Программа для ЭВМ представляет собой последовательность команд. Прикладные программы располагаются в ОЗУ ЭВМ. Программа расположенная в ОЗУ ЭВМ и выглядит как показано:

 

Адрес (Адрес ячейки памяти в ОЗУ) Данные (содержимое ячеек памяти)
КОП
КОП
ОП1
КОП
КОП
ОП1
ОП2
КОП

 

Каждая команда микропроцессора может работать с определенными видами операндов, причем для каждой операции адресация операндов фиксирована. Под адресацией понимается совокупность способов задания адреса операндов в команде и механизма доступа к ячейкам памяти.

В микропроцессоре КР580ИК80А используется 5 способов адресации операндов:

1. Прямая: адрес ячейки памяти, где расположен операнд, указывается во втором и третьем байтах команд, причем во втором байте команды содержится младший байт адреса операнды, а в третьем — старший.

2. Регистровая: в команде задается адрес оперативного регистра или пары регистров, где находится 8-ми и 16-ти разрядный операнд.

3. Регистровая косвенная: адрес М ячейки памяти, где расположен операнд, определяется содержимым парного регистра, явно или нет указанного в команде. При этом старший байт находится в первом регистре пары, а младший — во втором.

4. Непосредственная: операнд содержится в команде. Для двухбайтовых команд: во втором байте, для трехбайтовых команд - во втором и третьем, причем во втором младшая часть операнда, в третьем - старшая.

5. Стековая - адрес ячейки памяти, где расположен операнд, находится в указателе стека SP.

По функциональному признаку все команды делятся на пять групп:

1. группа команд пересылки, осуществляющих передачу информации между регистрами (11 команд);

2. группа арифметических команд (14 команд);

3. группа логических команд (15 команд);

4. группа команд передачи управления (29 команд);

5. группа команд работы со стеком, ввода-вывода и управления регистрами процессора (9 команд);

Группа команд пересылки

Эту группу условно можно разделить на 3 подгруппы:

- команды засылки константы;

- команды пересылки;

- команды чтения-записи.

Команды передачи данных обеспечивают пересылку данных между регистрами, между памятью и регистрами.

Рассмотрим формат передачи данных КОП, DST, SRC.

КОП — код операции (число от 0 до 255).

DST — приемник информации.

SRC — источник информации.

Команды передачи данных при своем выполнении не изменяют состава флагового регистра.

 

Команды засылки константы

 

В результате выполнения команды засылки константы в регистр или регистровую пару загружается константа, содержащаяся во втором или во втором и третьем байтах команды. Рассмотри формат команд засылки констант:

 

Команда засылки 8 разрядной константы имеет формат

MVI DST,D8

где DST-любой из РОН (А, В, С, D, Е, Н, L) или ячейка памяти (М) адрес которой берется из регистровой пары НL; MVI — код операции; D8 - 8-разрядная константа, содержащаяся во втором байте команды.

 

Пример: пусть требуется загрузить в ячейку памяти с адресом 100516 число 3F.

Адрес Команда Содержание ячейки памяти Комментарий
MVI H   В регистр H засылается константа 1016 Н<-10
MVI L   В регистр L запишем младший байт адреса 05 (HL=100516)
MVI M   В ячейку памяти адресуемую с помощью регистровой пары HL записываем число 3F16
3F 3F

 

Команда засылки 16 разрядной константы имеет формат

LXI RP,D16 где RP - регистровая пара В, D, Н или указатель стека SP;

D16-16-разрядная величина константы, причем младший байт константы находится во втором байте команды, а старший в третьем.

 

Пример: пусть требуется загрузить в ячейку памяти с адресом 1005 число 3F.

Адрес Команда Содержание ячейки памяти Комментарий
LXI H   В регистровую пару HL засылается константа 051016 причем в регистр H засылается 1016, а в регистр L - 0516
MVI M   В ячейку памяти, адресуемую с помощью регистровой пары HL записываем число 3F16
3F 3F

 

Команда пересылки данных

При выполнении команд пересылки содержимое источника SRC пересылается в приемник DST, при этом содержимое источника не изменяется. В качестве источника и приемника операндов может быть использован любой из регистров общего назначения или ячейка памяти, адресуемая через регистровую пару (Н, L). Пересылка данных типа "ПАМЯТЬ-ПАМЯТЬ" запрещена.

Формат команд пересылки MOV DST, SRC,

где DST, SRC-любой из РОН (А, В, С, D, Е, Н, L) или ячейка памяти (М), адресуемая через регистровую пару HL.

 

Адрес Команда Содержание ячейки памяти Комментарий
LXI H   В регистровую пару HL засылается константа 051016 причем в регистр H засылается 1016, а в регистр L - 0516
MVI B   Засылка в B числа 3F
3F 3F
MOV A,B   Передача числа 3F из регистра В в А, в В остается число 3F.
MOV М,B   Передача данных из регистра B в ячейку памяти

 

К командам пересылки можно также отнести команду XCHG, в результате выполнения которой регистровые пары (Н, L) и (D, Е) обмениваются содержимым следующим образом:

H c D

L c E

Команды чтения-записи.

LDAX RP-запись в аккумулятор содержимого ячейки памяти, адресуемой через регистровую пару BC или DE;

STAX RP-запись аккумулятора в ячейку памяти адресуемую через регистровую пару BC или DE;

Пример: необходимо записать в память по адресу 100516 число 3F16 с помощью команды STAX

 

Адрес Команда Содержание ячейки памяти Комментарий
LXI B   В регистровую пару HL засылается константа 051016 причем в регистр H засылается 1016, а в регистр L - 0516
MVI A   Засылка в A числа 3F
3F 3F
STAX B   Пересылка данных из аккумулятора А в память. Адрес ячейки памяти определяется содержимым регистровой пары BC.

 

LDAAdr-запись в аккумулятор содержимого ячейки, адрес которой определяется 16-разрядным адресом Adr;

 

Адрес Команда Содержание ячейки памяти Комментарий
LDA   А <-­M0801<-­0801 Значок <- означает направление передачи.

 

LHLD Adr - запись в регистровую пару НL содержимого двух последовательных ячеек памяти с адресами Adr и Adr+1, причем в регистр Н загружается содержимое ячейки по адресу Adr+1, а в регистр L - по адресу Adr;

 

Адрес Команда Содержание ячейки памяти Комментарий
LHLD НL <-­002А
 
 
     

 

SHLD Adr - запись содержимого регистровой парыНL в две последовательные ячейки памяти с адресами Adr и Adr+1, причем coдержимoe регистра Н записывается в ячейку с адресом Adr+1, а регистра L - в ячейку с адресом Adr.

 

Группа арифметических команд

 

Арифметические команды обеспечивают выполнение операций сложения и вычитания, а также изменение операнда на единицу.

Арифметические операции можно разделить на следующие группы:

1. операции с одним операндом, регистром или регистровой парой;

2. операции с двумя операндами, причем в качестве первого операнда всегда используется аккумулятор, а в качестве второго операнда может быть регистр, ячейка памяти или константа, которая в этом случае записывается в следующем за кодом команды байте.

Арифметические команды изменяют состояние битов условий флагового регистра.

 

Команды сложения

При выполнении команды сложения в аккумулятор заносится результат сложения аккумулятора и операнда-источника. Операндом-источником может быть регистр, ячейка памяти или констант.

К этим командам относятся:

ADD SRC - сложение содержимого аккумулятора с регистром или ячейкой памяти, например ADD В означает, что в аккумулятор помещается результат сложения аккумулятора и регистра В (А<­-А+В)

ADC SRC - сложение содержимого аккумулятора, операнда-источника и бита CY признакового регистра F (A<-­ A+SRC+CY(F)).

 

Пример: сложить 2 двухбайтных числа (35A0 и 67В2).

А0

+67В2

D52

 

Адрес Команда Содержание ячейки памяти Комментарий
LXI B   BC<­-35A0  
A0 A0
LXI D   DE<­-67B2  
B2  
 
MOV A, C   A <-­ A0
ADD E   A<-­ A+E
MOV C, A   C<­ -A
MOV A, B   A<­- B
080А ADC D   A<-­ A+D+CY
080В MOV B, A   B<-­ A

 

ADI D8 - сложение содержимого аккумулятора с константой, при этом константа содержится во втором байте команды (A<­ A+D8);

ACI D8 - сложение содержимого аккумулятора с константой и битом CY признакового регистра F.

 

Пример: составить программу, рассмотренную в предыдущем примере, но считая второе слагаемое константой.

 

Адрес Команда Содержание ячейки памяти Комментарий
LXI B   BC<­-35A0  
A0 A0
MOV A, C   A<­-C
ADI   A <-­ A+B2
B2 В2  
MOV C, A   C<­- A
MOV A, B    
ACI   A<-­ A+67+CY
 
080А MOV B, A   B<-­ A

 

DAD RP - сложение содержимого регистровой пары RP с регистровой паройНL. Результат сложения записывается в паруНL, эта команда изменяет только состояние бита СУ в признаковом регистре (например: DAD B: HL<- HL+BC).

 

Команды вычитания.

При выполнении команд вычитания в аккумулятор заносится результат вычитания операнда-источника из аккумулятора. Операндом-источником может быть регистр, ячейка памяти или константа, которая записывается в следующем за кодом команды байте.

К этим командам относятся:

SUB SRC-вычитание из содержимого аккумулятора содержимого регистра или ячейки памяти, адрес которой определяется содержимым регистровой пары HL (A<­ A-SRC).

SBB SRC-вычитание из содержимого аккумулятора операнда-источника и бита CY (A<­ A-SRC-CY(F)).

SUI D8-вычитание константы из содержимого аккумулятора;

SBI D8-вычитание из содержимого аккумулятора значения бита CYи константы.

Эти команды изменяют все биты условий.

 





Последнее изменение этой страницы: 2016-06-28; просмотров: 448; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.84.132.40 (0.007 с.)