Мнемоника | Код | Число циклов | Число тактов | Флаги: CY, Z, M, P, C, AC | Содержание |
MOV dst, srs | 01DDDSSS | ----- | dst <- srs | ||
MOV dst, M | 01DDD110 | ----- | dst <- (HL) | ||
MOV M, srs | 01110SSS | ----- | (HL) <- srs | ||
MVI dst, data | 00DDD110 | ----- | dst <- data | ||
MVI M, data | ----- | (HL) <- data | |||
LDA addr | 3A | ----- | A <- (addr) | ||
STA addr | ----- | (addr) <- A | |||
LDAX B | 0A | ----- | A <- (BC) | ||
LDAX D | 1A | ----- | A <- (DE) | ||
STAX B | ----- | (BC) <- A | |||
STAX D | ----- | (DE) <- A | |||
LXI B, data16 | ----- | BC <- data16 | |||
LXI D, data16 | ----- | DE <- data16 | |||
LXI H, data16 | ----- | HL <- data16 | |||
LXI SP, data16 | ----- | SP <- data16 | |||
LHLD addr | 2A | ----- | HL <- (addr) | ||
SHLD addr | ----- | (addr) <- HL | |||
SPHL | F9 | ----- | SP <- HL | ||
PUSH B/D/H | C5/D5/E5 | ----- | (SP) <- BC/DE/HL | ||
PUSH PSW | F5 | ----- | (SP) <- PSW | ||
POP B/D/H | C1/D1/E1 | ----- | BC/DE/HL <- (SP)+ | ||
POP PSW | F1 | +++++ | PSW <- (SP)+ | ||
XCHG | EB | ----- | DE <-> HL | ||
XTHL | E3 | ----- | (SP) <-> HL |
Наряду с мнемоникой и кодом операции (первый байт команды) таблица содержит такие важнейшие для команды характеристики, как число обращений к системной магистрали и число периодов тактовой частоты, составляющих ее полный командный цикл. Здесь же представляется информация о влиянии команды на флаги регистра признаков F (при знаке “+” команда воздействует на соответствующий флаг). Длина команды в байтах легко определяется из ее мнемоники.
Поля src и dst обозначают один из 8-разрядных регистров A, B, C, D, H, L, закодированных в соответствии со следующей таблицей:
Регистр | B | C | D | E | H | L | A |
Код |
Рассмотренная группа команд содержит команды обмена между памятью и регистрами. Это наиболее часто встречающиеся в программах команды, занимающие около 45% процентов их общего числа.
Группа команд пересылки не оказывает влияния на флаги, за исключением POP PSW.
Основу группы составляют следующие команды:
MOV, MVI Перемещение
LDA, LDAX, LXI, LHLD Загрузка
STA, STAX, SHLD Сохранение
Эти команды оперируют как байтами (MOV, MVI, LDA(X), STA(X)), так и словами (LXI, LHLD, SHLD).
В командах пересылки поля src и dst используются для указания 8-разрядных регистров A...L, а М — обозначает косвенную адресацию через регистровую пару HL, которая должна содержать прямой адрес байта, участвующего в обмене.
В составе команд имеются также операции загрузки аккумулятора с прямой (LDA) и косвенной (LDAX) адресацией через регистровые пары BC и DE, а также их обратные эквиваленты STA, STAX. С учетом значимости 16-разрядного регистра НL предусмотрены операции загрузки LHLD и хранение SHLD его содержимого по прямому адресу.
Команды MVI и LXI используют непосредственную адресацию, обеспечивающую загрузку 8- и 16- разрядного регистра константой.
Для начальной установки SP предусмотрены две команды:
LXI SP, data 16; SP <- data16
SPHL; SP <- HL
Первая команда обеспечивает загрузку указателя стека SP константой. С помощью второй команды можно организовать установку SP в соответствии со значением некоторой переменной. Такая операция удобна при реализации нескольких стеков.