Nicron #07
14 ноября 1996

Программирование - курс изучения ассемблера от Wlodek Black, продолжение.

<b>Программирование</b> - курс изучения ассемблера от Wlodek Black, продолжение.
╔═════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░Курс обучения ассемблеру░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚═════════════════════════════════════════════════════════════╝

(c) WLODEK BLACK

		007h. КОМАНДЫ 16-РАЗРЯДНЫХ ПЕРЕСЫЛОК.

Их не очень много:
_______________________________________________
LD HL,d16    LD HL,(addr)    LD (addr),HL
LD DE,d16        -"-              -"-
LD BC,d16        -"-              -"-
LD IX,d16        -"-              -"-
LD IY,d16        -"-              -"-
LD SP,d16        -"-              -"-

(d16 - 16-разрядная константа).
_______________________________________________

LD SP,HL
LD SP,IX
LD SP,IY
___________

EX DE,HL   - обменяться значениями HL и DE.
____________________________________________

EX (SP),HL - обменяться значениями HL и словом с вершины стека.

EX (SP),IX
EX (SP),IY
______________________________________________________________

Команды с парой HL наиболее коротки и эффективны.

	  Дополнение к теме "Восьмиразрядные пересылки".
		Команды групповых пересылок.

Эта группа команд очень скромна по количеству,  но  чрезвычайно
важна из-за огромной эффективности входящих  в  нее  всего  4-х
команд:

LDIR (Load with Increment of Register)
LDDR (Load with Decrement of Register)
LDI
LDD
Все эти команды используют регистровые пары HL, DE и BC
и регистр флагов F:
HL = адрес "откуда"
DE = адрес "куда"
BC = сколько байт пересылать.

LDIR работает на основе инкремента, то есть "увеличения  на еди-
ницу" - каждый элементарный этап операции пересылает байт,  при
этом текущие адреса источника и приемника увеличиваются на 1.
Счетчик на паре BC уменьшает свое значение на 1.Строгий расклад
операции LDIR по последовательности выполняемых действий таков:
1. Берется байт с адреса (HL);
2. Байт заносится по адресу (DE);
3. HL и DE увеличиваются на 1;
4. Значение BC уменьшается на 1;
5. Проверяется, равно ли BC нулю. Если да, то сбрасывается  в 0
   флаг P/V, и операция завершается. Если нет, то:
6. Счетчик команд уменьшается на 2 (на длину кода команды);
7. Код команды заново считывается из памяти, и процесс  повторя-
ется с шага 1.

Вникнув в тонкости приведенной последовательности,можно сделать
ряд важных выводов:
- на выходе из LDIR: HL и DE указывают на  адреса,  на  единицу
  большие адресов концов пересылаемого блока и принимающей обла-
  сти; флаг P/V равен 0;
- регистр-аккумулятор не используется и не меняет своего текуще-
  го значения;
- LDIR является не элементарной командой, а, по  сути,  сложным
  оператором цикла. Тот факт, что после пересылки каждого байта
  код команды заново считывается из памяти, влечет за собой  по
  крайней мере два следствия. Одно из них очевидное: пересылать
  блок кодов в ОЗУ с перекрытием самой команды LDIR  невозможно.
  Второе следствие более хитрое: работа команды LDIR  может пре-
  рываться прерываниями (звучит коряво, но как еще сказать?).

Команда LDDR пересылает блок кодов в сторону уменьшения адресов;
в остальном она аналогична LDIR. Наличие команд как LDIR, так и
LDDR позволяет эффективно пересылать блоки  кодов  с  частичным
наложением области-приемника на область-источник.

LDI и LDD выполняют пересылку лишь одного байта за одно  обраще-
ние к команде. О завершении пересылки всего блока можно  судить
по флагу P/V - в этом случае он будет сброшен в 0.

Команды групповой пересылки - единственные, выполняющие пересыл-
ки из памяти в память, минуя 8-разрядные регистры общего  назна-
чения.

						(c)WLODEK BLACK



Другие статьи номера:

Вступление - вступительное слово и оглавление.

BBS - список станций BBS ZXNet.

Железо - обзор микропроцессора Zilog Z380, продолжение.

Программирование - курс изучения ассемблера от Wlodek Black, продолжение.

Игры - "Гражданин, пройдемте... игру" - анонс новой рубрики.

Графика - картинкa АNSI графики.

Самиздат - пьеса "Как трезвеют SysOp-ы", акт второй. Savin Boris.

Реклама - реклама и объявления.

Обратная связь - контакты редакции.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Новые программы - И.Рощин. HELP_Z80. В.Давыдов. Catalog's Base v1.8.
Двигатель торговли - Ищу хардеров для обмена идеями и схемами.
Adventure Project - Проектирование и разработака Адвентюрных и RPG игр.
Mouse Driver - О драйвере поддержки Kemston Mouse.
Специальный репортаж - В недалеком прошлом, как говорится, не прошло и недели, приезжали в наш славный город-герой Минск наши братья по спектруму Гарачыя Витебские Парни.

В этот день...   21 ноября