МП I8080
Ниже представлены ряд таблиц с командами МП I8080 в которых: RBD – 8-разрядный регистр из множества A, B, C, D, E, H, L, в который помещается результат (приемник); RBS - 8-разрядный регистр из множества A, B, C, D, E, H, L, из которого извлекается операнд (источник); SSS - двоичный код регистра источника; DDD – двоичный код регистра приемника; RWD – 16 –разрядный регистр (регистровые пары) в который помещается результат (приемник); RWS - 16 – разрядный регистр (регистровые пары) из которого извлекается операнд (источник); RW – 16-разрядный регистр B, D, H, SP; RW* - 16-разрядный регистр (BC, DE), код которого равен В – 0, D – 1; ADDR – 8-разрядный адрес внешнего устройства значение которого равно РР; DADDR – 16-разрядный адрес, значение которого равно QQPP; DATA 8 – 8-разрядная константа, значение которой равно YY; DATA 16 - 16-разрядная константа, значение которой равно YYYY.
Коды регистров и регистровых пар
-
Регистр
Номер регистра
Регистровые пары
Номер регистровой пары
B
000
BC
00
C
001
DE
01
D
010
HL
10
E
011
SP
11
H
100
L
101
M
110
A
111
Команды пересылок Таблица 3.1
Мнемоника |
Формат команды |
Виды адресации |
Число тактов |
Функциональное назначение |
MVI RBD, DATA 8 |
00DDD 110 YY |
1-й адрес- прямая регистровая 2-й – непосредственная |
7 |
Загрузить 8-разрядный регистр RBD 8-разрядной константой DATA8: (RBD)←YY |
LXI RWD, DATA16 |
00rw 0001 Y Y Y Y |
1-й - прямая регистровая 2-й – непосредственная |
10 |
Загрузить 16-разрядный регистр RWD 16-разрядной константой DATA16: (RWD)←YYYY |
MOV RBD, RBS |
01 DDD SSS |
1-й - прямая регистровая 2-й - прямая регистровая |
5 |
Переслать содержимое 8-разрядного регистра RBS в 8-разрядный регистр RBD: (RBD)←(RBS) |
SPHL |
11111001 |
Неявная |
5 |
Переслать содержимое HL в SP: (SP)←(HL) |
PCHL |
11101001 |
Неявная |
5 |
Переслать содержимое HL в РС: (РС)←(HL) |
MVI M, DATA 8 |
00110110 Y Y |
1-й – косвенная регистровая (регистр HL задан неявно); 2-й - непосредственная |
10 |
Переслать 8-разрядную константу DATA8 в ячейку памяти по адресу, содержащемуся в HL: ((HL))←(YY) |
MOV M, RBS |
01110 SSS |
1-й - косвенная регистровая 2-й - прямая регистровая |
7 |
Переслать содержимое 8-разрядного регистра RBS в ячейку памяти по адресу HL: ((HL))←(RBS) |
MOV RBD, M |
01 DDD 110 |
1-й - прямая регистровая 2-й - косвенная регистровая |
7 |
Переслать содержимое ячейки памяти по адресу, хранящемуся в HL в 8-разрядный регистр RBD: (RBD)←((HL)) |
LDA DADDR |
00111010 P P Q Q |
Прямая |
13 |
Загрузить аккумулятор содержимым ячейки памяти по адресу DADDR: (А)←(QQPP) |
STA DADDR |
00110010 P P Q Q |
Прямая |
13 |
Сохранить содержимое аккумулятора в ячейке памяти по адресу DADDR: (QQPP)←(А) |
LDAX RW* |
000 r 1010 |
Косвенная регистровая |
7 |
Загрузить аккумулятор содержимым ячейки памяти по адресу, хранящемуся в 16-разрядном регистре RW*: (А)←((RW*)) |
STAX RW* |
000 r 0010 |
То же |
7 |
Сохранить содержимое аккумулятора в ячейке памяти по адресу, хранящемуся в 16-разрядном регистре RW*: (RW*)←((А)) |
SHLD DADDR |
00100010 P P Q Q |
Прямая |
16 |
Сохранить содержимое пары регистров HL в ячейках памяти по адресам DADDR и DADDR+1: (QQPP)←(L), (QQPP+1)←(H) |
LHLD DADDR |
00101010 P P Q Q |
Прямая |
16 |
Загрузить пару регистров HL содержимым ячейки памяти по адресам DADDR и DADDR+1: (L)←(QQPP), (H)←(QQPP+1) |
PUSH RW |
11 rw 0101 |
Стековая |
11 |
Сохранить содержимое 16-разрядного регистра RW в области памяти, на которую указывает указатель стека SP, т.е. в ячейках с адресами (SP)-1 – старший байт, и (SP)-2 – младший байт |
POP RW |
11 rw 0001 |
Стековая |
10 |
Загрузить 16-разрядный регистр RW содержимым верхушки стека, т.е. ячеек с адресами (SP) и (SP)+1 (указатель стека затем снова увеличивается на единицу) |
IN ADDR |
00110110 P P |
Прямая |
10 |
Ввести в аккумулятор содержимое порта с адресом ADDR: (А)←(PP) |
OUT ADDR |
00110110 P P |
Прямая |
10 |
Вывести содержимое аккумулятора в порт по адресу ADDR: (PP)←(А) |
XCHG |
11101011 |
Неявная |
4 |
Поменять содержимое регистров HL и DE: (H)↔(D), (L)↔(E) |
XTHL |
11100011 |
Неявная |
18 |
Поменять содержимое регистров HL и двух ячеек памяти, расположенных в верхушке стека (содержимое регистра L меняетси с содержимым ячейки по адресу SP, а содержимое H с содержимым ячейки по адресу SP+1): (H)↔((SP+1)), (L)↔((SP)) |