Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Общее представление команд




Для кодирования команд в системе команд микропроцессора 8080 использованы практически все возможные варианты 8-разрядного кода команд, то есть команд чуть меньше 256.

По функциональному назначению их можно разделить на 6 основных групп.

· Команды пересылок – обеспечивают операции перемещения однобайтных или двухбайтных операндов между регистрами процессора, памятью данных или памятью программ;

· Команды передач управления – обеспечивают безусловные и условные ветвления в программе.

· Команды организации подпрограмм – обеспечивают условные и безусловные вызовы подпрограмм и возвраты из подпрограмм.

· Команды арифметических, логических и сдвиговых операций среди которых арифметические сложение и вычитание, а также логические “И”, “ИЛИ”, “НЕ”, “Исключающее ИЛИ”, сдвига вправо и влево, сравнения.

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

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

Полный список команд с выделением групп представлен в табл. 1.6, а перечень использованных для описания команд сокращений представлен в табл. 1.7. Буквы в заголовке табл. 1.6 обозначают: Ф – формат команды, выраженный количеством байтов команды; Т – количество машинных тактов в команде; Ц – количество машинных циклов в команде.

Таблица 1.6

Список команд микропроцессора 8080

Мнемокод Действия F Название Код Ф Т Ц
Команды пересылок
MOV r1,r2 (r1)(r2) MOVe Register to Regist 01DDDSSS      
MOV M,r M(HL)(r) MOVe Register to Memory 01110SSS      
MOV r,M (r)M(HL) MOVe Memory to Register 01DDD110      
MVI r,d8 (r)d8 MOVe Immediate Register 00DDD110      
MVI M,d8 M(HL)d8 MOVe Immediate Memory        
STA adr M(adr)(A) STore A direct        
LDA adr (A)M(adr) LoaD A direct        
STAX B M(BC)(A) STore A indirect        
STAX D M(DE)(A) STore A indirect        
LDAX B (A)M(BC) LoaD A indirect        
LDAX D (A)M(DE) LoaD A indirect        
LXI B,d16 (BC)d16 Load Immediate Register pair B&C        
LXI D,d16 (DE)d16 Load Immediate register pair D&E        
LXI H,d16 (HL)d16 Load Immediate register pair H&L        
LXI SP,d16 (SP)d16 Load Immediate stack pointer        
SHLD adr M(adr)(L) M(adr+1)(H) Store H&L Direct        
LHLD adr (L)M(adr) (H)M(adr+1) Load H&L Direct        
XCHG (HL)«(DE) eXCHanGe H&L, D&E        
Команды передачи управления
PCHL (PC)(HL) H&L to Programm Counter        
JMP adr (PC)adr JuMP unconditional        
JNZ adr JMP if Z=0 Jump on No Zero        
JZ adr JMP if Z=1 Jump on Zero        
JNC adr JMP if CY=0 Jump on No Carry        
JC adr JMP if CY=1 Jump on Carry        
JPO adr JMP if P=0 Jump on Parity Odd        
JPE adr JMP if P=1 Jump on Parity Even        
JP adr JMP if S=0 Jump on Positive        
JM adr JMP if S=1 Jump on Minus        
Команды организации подпрограмм
CALL adr stack(PC) (PC)adr CALL unconditional        
CNZ adr CALL if Z=0 Call on No Zero        
CZ adr CALL if Z=1 Call on Zero        
CNC adr CALL if CY=0 Call on No Carry        
CC adr CALL if CY=1 Call on Carry        
CPO adr CALL if P=0 Call on Parity Odd        
CPE adr CALL if P=1 Call on Parity Even        
CP adr CALL if S=0 Call on Positive        
CM adr CALL if S=1 Call on Minus        
RST N stack(PC) (PC)N*8 ReSTart 11nnn111      
RET (PC)stack RETurn        
RNZ RET if Z=0 Return on No Zero        
RZ RET if Z=1 Return on Zero        
RNC RET if CY=0 Return on No Carry        
RC RET if CY=1 Return on Carry        
RPO RET if P=0 Return on Parity Odd        
RPE RET if P=1 Return on Parity Even        
RP RET if S=0 Return on Positive        
RM RET if S=1 Return on Minus        
Команды арифметических, логических и сдвиговых операций
ADD r (A)(A)+(r) + ADD Register to A 10000SSS      
ADD M (A)(A)+M(HL) + ADD Memory to A        
ADI d8 (A)(A)+d8 + ADd Immediate to A        
ADC r (A)(A)+(r)+ (CY) + ADd Register to A with Carry 10001SSS      
ADC M A)(A)+M(HL)+(CY) + ADd Memory to A with Carry        
ACI d8 (A)(A)+d8+ (CY) + Add Immediate to A with Carry        
INR r (r)(r)+1 –CY INcRement Register 00DDD100      
INR M M(HL) M(HL)+1 –CY INcRement Memory        
INX B (BC)(BC)+1 INcrement register pair B&C        
INX D (DE)(DE)+1 INcrement register pair D&E        
INX H (HL)(HL)+1 INcrement register pair H&L        
DAD B (HL)(HL)+ (BC) CY Double register ADd. Add B&C to H&L        
DAD D (HL)(HL)+ (DE) CY Double register ADd. Add D&E to H&L        
DAD H (HL)(HL)+ (HL) CY Double register ADd. Add H&L to H&L        
DAD SP (HL)(HL)+ (SP) CY Double register ADd. Add SP to H&L        
SUB r (A)(A)–(r) + SUBtract Register from A 10010SSS      
SUB M (A)(A)–M(HL) + SUBtract Memory from A        
SUI d8 (A)(A)–d8 + SUbtract Immediate from A        
SBB r (A)(A)–(r)–(CY) + SUbtract Register from A with borrow 10011SSS      
SBB M (A)(A)–M(HL)– (CY) + Subtract Memory from A with borrow        
SBI d8 (A)(A)–d8–(CY) + Subtract Immediate from A with Borrow        
DCR r (r)(r)–1 –CY DeCrement Register 00DDD101      
DCR M M(HL) M(HL)–1 –CY DeCrement Memory        
DCX B (BC)(BC)–1 DeCrement register pair B&C        
DCX D (DE)(DE)–1 DeCrement register pair D&E        
DCX H (HL)(HL)–1 DeCrement register pair H&L        
ANA r (A)(A)&(r) + ANd Register with A 10100SSS      
ANA M (A) (A)&M(HL) + ANd Memory with A        
ANI d8 (A)(A)&d8 + ANd Immediate with A        
ORA r (A)(A)Ú(r) + OR Register with A 10110SSS      
ORA M (A) (A)ÚM(HL) + OR Memory with A        
ORI d8 (A)(A)Úd8 + OR Immediate with A        
XRA r (A)(A)Å(r) + eXclusive or Register with A 10101SSS      
XRA M (A)(A)ÅM(HL) + eXclusive or Memory with A        
XRI d8 (A)(A)Åd8 + eXclusive or Immediate with A        
CMP r (F)(A–(r) + CoMPare Register with A 00DDD101      
CMP M (F)(A)–M + CoMPare Memory with A        
CPI d8 (F)(A)–d8 + ComPare Immediate with A        
RAR CY Rotate A Right through carry        
RAL CY Rotate A Left through carry        
RRC CY Rotate A Right into the Carry        
RLC CY Rotate A Left into the Carry        
DAA Десятичная коррекция + Decimal Adjust A        
CMA (A)() CoMplement A        
STC (CY)1 CY SeT Carry        
CMC (CY)() CY CoMplement Carry        
Команды управления стеком
SPHL (SP)(HL) H&L to Stack Pointer        
PUSH B stack(BC) PUSH register pair B&C on stack        
PUSH D stack(DE) PUSH register pair D&E on stack        
PUSH H stack(HL) PUSH register pair H&L on stack        
PUSH PSW stack(A)&(F) PUSH A&F on stack        
POP B (BC)stack POP register pair B&C off stack        
POP D (DE)stack POP register pair D&E off stack        
POP H (HL)stack POP register pair H&L off stack        
POP PSW (A)&(F)stack POP A&F off stack        
XTHL (HL)«stack eXchange H&L, Top of stack        
Команды ввода, вывода и управления состоянием процессора
IN port ABport (A)DB INput        
OUT port ABport DB(A) OUTput        
DI Запрет прерываний Disable Interrupts        
EI Разрешение прерываний Enable Interrupts        
HLT Останов HaLT        
NOP Нет операции No-OPeration        

 

Таблица 1.7

Обозначения принятые при описании команд

Обозн. Пояснения
r,r1,r2 один из 8 разрядных регистров общего назначения: A,B,C,D,E,H,L
SSS адрес регистра источника информации (Табл.1)
DDD адрес регистра приёмника информации (Табл.1);
() содержимое. Например,(A) – содержимое регистра A.
M() содержимое ячейки памяти, адрес которой задан косвенно. Например, M(HL) – содержимое ячейки памяти, адрес которой хранится в регистровой паре HL.
d8,d16 соответсвенно 8- и 16-разрядный операнды, адресуемые непосредственно
adr 16-разрядный адрес памяти
port 8-разрядный адрес устройства ввода-вывода
PC регистр-счётчик команд (Programm Counter)
SP регистр-указатель стека (Stack Pointer)
nnn двоичный код номера N
AB шина адреса (Adress Bus)
DB шина данных (Data Bus)
F влияние команды на признаки
+ команда влияет на все признаки
команда не влияет ни на какой признак
+CY команда влияет только на признак CY
–CY команда влияет на все признаки кроме признака CY
Ф формат команды (количество байт)
Т количество машинных тактов в команде
Ц количество машинных циклов в команде

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

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

В качестве операнда источника может быть:

· регистр (однобайтные операции) или регистровая пара процессора (двухбайтные операции);

· одна или две последовательно расположенные ячейки памяти данных;

· одна или две последовательно расположенные ячейки памяти программы, в которых размещены второй и третий байты самой команды пересылки.

В качестве операнда приёмника может быть:

· регистр или регистровая пара процессора;

· одна или две последовательно расположенные ячейки памяти данных.

Следует отметить, что команды пересылок между ячейками памяти отсутствуют в составе системы команд микропроцессора 8080. Такого рода пересылки предполагается выполнять через регистры процессора путём нескольких соответствующих команд.

Однобайтные пересылки

Для пересылок между регистрами процессора предназначены команды типа MOV r1,r2, в которых r1 – регистр приёмника, r2 – регистр источника. Приёмником или источником может быть любой регистр общего назначения процессора.

Пример 1.21

Адрес Число Мнемокод Комментарий

0800 78 MOV A,B; пересылка из регистра В в аккумулятор

0801 4C MOV C,H; пересылка из регистра H в регистр C

0802 55 MOV D,L; пересылка из регистра L в регистр D

Всё это короткие однобайтные по формату 5-тактовые команды. На их интерпретацию процессору требуется только один машинный цикл для выборки самой команды.

Для пересылок между регистрами процессора и памятью данных предназначены команды типа MOV r,M – для чтения памяти и MOV M,r – для записи памяти. В этих командах M – ячейка памяти, адрес которой будет взят из регистровой пары HL.

Пример 1.22

Адрес Число Мнемокод Комментарий

0800 56 MOV D,M; пересылка из ячейки M в регистр D

0801 71 MOV M,C; пересылка из регистра C в ячейку M

Это однобайтовые по формату, но уже 7-тактовые команды. Дополнительный машинный цикл нужен в фазе выполнения команды. Кроме того, программисту, применяющему данные команды, следует помнить о необходимости предварительной подготовки адреса памяти M в регистровой паре HL.

Есть и другие команды обеспечивающие пересылки между регистрами процессора и памятью данных. Их особенность в том, что регистром для обмена с памятью может быть только аккумулятор. Ячейка памяти может определятся:

· прямым адресом adr в командах типа LDA adr – чтение из памяти и STA adr – запись в память;

· косвенно через одну из двух возможных регистровых пар – BC или DE в командах LDAX B, LDAX D – чтение из памяти и в командах STAX B, STAX D – запись в память.

Пример 1.23.

Адрес Число Мнемокод Комментарий

0800 3A 00 0B LDA 0B00h; пересылка из ячейки адресом 0B00 в ре-;гистр A

0803 32 10 0B STA 0B10h; пересылка из A в ячейку с адресом 0B10

Это – медленные трёхбайтные 13-тактовые команды. Кроме трёх машинных циклов требуемых для чтения байтов команды, необходим ещё один цикл на выполнение операции пересылки.

Пример 1.24.

Адрес Число Мнемокод Комментарий

0800 1A LDAX D; пересылка из ячейки M(DE) в

; аккумулятор

0801 02 STAX B;пересылка из аккумулятора в ячейку;M(BC)

Эти команды занимают в памяти только один байт памяти. Они требуют на выполнение 7 машинных тактов и предварительного определения адреса в регистровой паре.

Для пересылок с целью записать в регистр процессора или в память какое-то непосредственно указанное число применяются команды типа MVI r,d8 – для записи в регистр и MVI M,d8 – для записи в память. В этих командах непосредственно указанное число обозначено в общем виде – d8, а ячейка памяти M определена косвенно через адрес в регистровой паре HL.

Пример 1.25.

Адрес Число Мнемокод Комментарий

0800 0E 45 MVI B,45h;пересылка числа 45 в регистр B

0802 36 6B MVI M,6Bh;пересылка числа 6B в ячейку памяти

;M(HL)

Двухбайтные пересылки

Для пересылок между регистрами процессора и памятью имеются команды типа LHLD adr – чтение памяти и SHLD adr – запись в память. Регистрами в этих командах являются регистры пары HL, а память можно определять прямо в самой команде адресом adr. Этот адрес определит место младшего байта числа, а место старшего байта числа окажется по адресу adr+1.

Пример 1.26.

Адрес Число Мнемокод Комментарий

0800 2A 00 0B LHLD 0B00h; пересылка числа из регистровой пары

; HL в память: M(0B00)(L),

; M(0B01)(H)

0803 22 10 0B SHLD 0B10h; пересылка числа из памяти

; в регистровую пару HL: M(0B00)(L),

; M(0B01)(H)

Несмотря на то что на выполнение этих команд требуется 16 тактов, аналогичные действия с применением нескольких команд однобайтных пересылок оказываются гораздо более долгими. Например, 36 тактов потребуется в варианте примера 6.7:

Пример 1.27

Метка Мнемокод Комментарий

LDA 0B00; 13 тактов

MOV L,A; 5 тактов

LDA 0B01; 13 тактов

MOV H,A; 5 тактов

Для двухбайтных пересылок между регистрами есть только одна команда, причём не обычная пересылка, а обмен содержимым регистровых пар DE и HL – команда HCHG.

Кроме того, имеются команды непосредственной загрузки регистровых пар и 16-разрядного регистра указателя стека SP вторым и третьим байтами из состава байтов команды – LXI B,d16; LXI D,d16; LXI H,d16; LXI SP,d16. В этих командах d16 – загружаемое двухбайтное число, а регистровые пары обозначены буквами своих старших регистров.

Пример 1.28.

Адрес Число Мнемокод Комментарий

0800 01 00 00 LXI B,0000h; Пересылка числа 0 в регистр. пару BC

0803 21 97 19 LXI H,1997h; Пересылка числа 1997 в регистровую

; пару HL: (H)19, (L)97.





Поделиться с друзьями:


Дата добавления: 2015-10-27; Мы поможем в написании ваших работ!; просмотров: 784 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

80% успеха - это появиться в нужном месте в нужное время. © Вуди Аллен
==> читать все изречения...

2241 - | 2105 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.