Непосредственная загрузка пары регистров
| LXI ri, Данные | ri <B3> < B1> | ri | |||
| ri+1 <B2> <B2> | Мл. байт данных (7-0) | ||||
| <B3> | Ст. байт данных (15-8) | ||||
ri –код старшего регистра пары (B, D, H).
При ri = 110: SP <B3><B2>, то есть загружается указатель стека.
По этой команде в 16-разрядную пару регистровBC, DE или HL заносятся данные, содержащиеся во втором и третьем байтах команды, причем данные заносятся соответственно в младший и старший регистры пары. Это 3-х байтовая команда, выполняемая за три цикла (10 тактов). При выполнении команды содержимое триггеров признаков не меняется.
Пример:
0124) LXI H, 48A7
По этой команде данные, находящиеся во втором байте команды (число А7 Н) будут переданы в регистр L, а число, записанное в третьем байте (48 Н) - в регистр Н. Содержимое ячеек памяти при этом не меняется, как и регистр признаков.
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| A7 | A7 | |
| H | DE | |
| L | AD | A7 |
| PC |
4.5.4 Запоминание/загрузка аккумулятора и пары HL
а)
| STAX B | [(B)(C)] (A) <B1> |
б)
| STAX D | [(D)(E)] (A) <B1> |
в)
| LDAX B | (A) [(B)(C)] <B1> |
г)
| LDAX D | (A) [(D)(E)] <B1> | |||
По командам группы а) и б) содержимое аккумулятора запоминается в оперативной памяти по адресу, хранимому в паре регистров ВС (а) или DE (б). По командам группы в) и г) содержимое оперативной памяти из ячейки, адресом которой является содержимое пары регистров ВС (в) или DE (г), загружается в аккумулятор.
Команды группы а - г являются однобайтовыми и выполняются за два машинных цикла (7 тактов). Для того, чтобы можно было воспользоваться этими командами, в соответствующую пару регистров необходимо предварительно загрузить нужный адрес.
Примеры:
00B1) STAX D
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| 00B1 | ||
| А | ||
| D | ||
| E | ||
| E3 | ||
| PC | 00B1 | 00B2 |
По этой команде содержимое аккумулятора (A)=49H будет скопировано в ячейку памяти с адресом 6699 Н, хранимым в паре регистров DE.
0800) STAX B
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| B | 0A | 0A |
| C | ||
| A | ||
| 0A11 | BE | |
| FL | ||
| PC |
0801) LDAX B
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| 0A | 0A | |
| B | 0A | 0A |
| C | ||
| A | BE | |
| 0A11 | BE | BE |
| FL | ||
| PC |
0802) LDAX D
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| 1A | 1A | |
| D | ||
| E | ||
| E3 | E3 | |
| A | E3 | |
| FL | ||
| PC |
д)
| STA Адрес | [<B3><B2>] (A) <B1> | |||
| <B2> | Мл. байт адреса | |||
| <B3> | Ст. байт адреса |
е)
| LDA Адрес | (A) [<B3><B2>] <B1> | ||||
| <B2> | Мл. байт адреса | ||||
| <B3> | Ст. байт адреса | ||||
По командам д) и е) содержимое аккумулятора запоминается в ячейке памяти, адрес которой приводится во втором и третьем байтах команды (д), или содержимое ячейки памяти, адрес которой приводится во втором и третьем байтах команды, передается в аккумулятор (е).
Команды этой группы трехбайтовые, выполняются за 4 цикла (13 тактов).
1F00) STA 0F1C
По этой команде содержимое аккумулятора скопируется в ячейке памяти с адресом 0F1C
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| 1F00 | ||
| 1F01 | 1C | 1C |
| 1F02 | 0F | 0F |
| 0F1C | 2A | |
| A | ||
| PC | 1F00 | 1F03 |
После выполнения операции и в ячейке 0F1C и в аккумуляторе будет записано одно и то же число.
0803) LDA 0F1C
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| 1C | 1C | |
| 0F | 0F | |
| 0F1C | 2A | 2A |
| A | 2A | |
| PC | ||
| FL |
ж)
| SHLD Адрес | [<B3><B2>] (L) <B1> | |||
| [<B3><B2>+1] (H) <B2> | Мл. байт адреса | |||
| <B3> | Ст. байт адреса |
з)
| LHLD Адрес | (L) [<B3><B2>] <B1> | ||||
| (H) [<B3><B2>+1] <B2> | Мл. байт адреса | ||||
| <B3> | Ст. байт адреса | ||||
По командам этой группы происходит передача данных из пары регистров HL в две соседние ячейки оперативной памяти (ж) или в обратном направлении (з). 16-разрядный адрес первой ячейки приводится во втором и третьем байтах команды; адрес второй ячейки вычисляется в МП с помощью инкремента (увеличения на единицу) содержимого второго и третьего байтов команды.
Команды этой группы трехбайтовые, выполняются за 5 циклов(16 тактов). При выполнении этих команд содержимое триггеров признаков не изменяется.
0F41) SHLD 32AF
При выполнении этой команды содержимое пары регистров HL будет скопировано в соседних ячейках памяти 32AF и 32B0. При этом содержимое (HL) не изменяется.
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| 0F41 | ||
| 0F42 | AF | AF |
| 0F43 | ||
| 32AF | 4B | 5D |
| 32B0 | 8D | 3F |
| H | 3F | 3F |
| L | 5D | 5D |
| PC | 0F41 | 0F44 |
0806) LHLD 6AFF
| Адрес/регистр | Код до выполнения операции | Код после выполнения операции |
| 2A | 2A | |
| FF | FF | |
| 6A | 6A | |
| H | FD | |
| L | AF | |
| 6AFF | ||
| 6B00 | FD | FD |
| FL | ||
| PC |
Дата добавления: 2016-03-10; просмотров: 1271;
