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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: