Двухбайтные пересылки
Для пересылок между регистрами процессора и памятью имеются команды типа 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.