ZX-Spectrum & TR-DOS для пользователей и программистов 1994 г.

Микропроцессор Z80 - система команд (окончание).


Команды ввода-вывода

Ввод байта из порта в ячейку памяти с декрементом. Байт считываете» с
порта, адресуемого регистром ВС, и записывается в ячейку памяти,
адресуемую регистром HL. После выполнения команды содержимое
регистров HL и В уменьшается на единицу. Если в результате выполне-
ния команды В обнуляется, то устанавливается флаг Z, в противном
случае Z=0.

Ввод массива значений из портов в память с декрементом. Адреса портов
задаются регистром ВС, начальный адрес массива памяти — регистром
HL. Ввод осуществляется в сторону уменьшения адресов, количество
принимаемых байт равняется значению регистра В. После приема оче-
редного байта содержимое регистров В и HL уменьшается на единицу.

Вывод байта из аккумулятора в порт с номером п. Полный 16-разрядный
адрес порта составляется из значения п (младший байт) и значения
аккумулятора (старший байт).

Вывод байта из аккумулятора в порт с номером п. Полный 16-разрядный
адрес порта составляется из значения п (младший байт) и значения
аккумулятора (старший байт).

Вывод байта из регистра г в порт, адресуемый регистром ВС (С —
младший байт адреса, а В — старший).

Вывод байта из регистра г в порт, адресуемый регистром ВС (С —
младший байт адреса, а В — старший).

Вывод байта из ячейки памяти в порт с инкрементом. Байт считывается
из ячейки памяти, адресуемой регистром HL, и пересылается в порт,
адресуемый регистром ВС. После выполнения команды содержимое HL
увеличивается на единицу, значение В уменьшается на единицу* Если в
результате выполнения команды регистр В обнуляется, то устанавлива-
ется флаг Z, в противном случае Z-0.

Вывод массива из памяти в порты с инкрементом. Адреса портов задаются
регистром ВС, начальный адрес массива — регистром HL. Вывод осуществ-
ляется в сторону увеличения адресов, количество передаваемых байт равно

значению регистра В, После передачи очередного байта содержимое
регистра В уменьшается на единицу, регистра HL увеличивается на

единицу.

значению регистра В, После передачи очередного байта содержимое
регистра В уменьшается на единицу, регистра HL увеличивается на

единицу.

Вывод байта из ячейки памяти в порт с декрементом. Байт считывается
из ячейки памяти, адресуемой регистром HL, и пересылается в порт,
адресуемый регистром ВС, После выполнения команды содержимое
регистров HL и В уменьшается на единицу. Если в результате выполне-
ния команды В обнуляется, то устанавливается флаг Z, в противном
случае Z—0.

Вывод массива мз памяти в порты с декрементом. Адреса портов задаются
регистром ВС» начальный адрес массива — регистром HL. Вывод осуще-
ствляется в сторону уменьшения адресов, количество передаваемых байт
равно значению регистра В. После передачи очередного байта содержи-
мое регистров В и HL уменьшается на единицу.

Недокументированные команды

При использовании 8-разрядной шины данных непосредственно можно
реализовать только 256 кодов команд (2^=256). Остальные 440 (696-256)
кодов команд Z80 являются двухбайтными первым байтом кода в них стоит
один из четырех префиксов: #СВ, #DD, #ED, #FD*. Следовательно, кроме
описанных 696 кодов команд возможно составить еще много вариантов «не-
учтенных» кодов. Выполнение некоторых из них может привести к вполне
осмысленным результатам. Эти коды составляют так называемые недокумен-
тированные команды. В фирменных описаниях процессора эти команды не
приводятся, однако многие программисты пользуются ими: иногда для удобст-
ва, иногда из соображений секретности (отладчики обычно «не берут» такие
команды), иногда для позы, мол, посмотрите, какой я умный.

Чаще всего применяются недокументированные команды, работаю-
щие с частями индексных регистров как с 8-разрядными регистрами общего
назначения. Эти регистры, верней, части регистров обозначаются IXh, 1X1
(старший и младший байты регистра IX) и IYh, IY1 (старший и младший
байты регистра IY).

Ниже приведены некоторые недокументированные команды Z80:

Ниже приведены некоторые недокументированные команды Z80:

*) Байты #DD и #FD содержатся в кодах команд, работающих с индексными
регистрами (IX и IY соответственно); #СВ — в кодах команд, работающих
с битами; #ED — в кодах остальных двухбайтных команд.

. _ . в CY Z P/V S N Н

LD d,r г d

где г - А, В, С, D, Е или п;
d - IXh, IXI. IYh, JYI,

Этими командами удобно пользоваться, когда нужно загрузить индекс-
ный регистр из какого-либо другого регистра. Например, вместо после-
довательности команд

PUSH DE ; запись в стеке содержимого регистра DE

POP IX ; загрузка регистра IX значением из стека

можно использовать

LD IXh,D
LD IXI.E

Хотя вторая последовательность команд занимает в памяти на один байт
больше, время ее выполнения меньше на 9 тактов процессора.
Ниже приведены недокументированные команды, действие которых не
отличается от действия «нормальных» команд байтовой арифметики.

ADD АА

CY Z P/V S

N H

А + s - А

t

t

V J

о i

ADC A,s

А + s + CY •* А

J

t

v t

0 i

SUB s

А — s -» А

1

t

V J

i J

SBC Ад

А — s — CY -» А

t

t

v {

i t

AND s

A AND s - А

0

1

p t

0 1

OR s

A OR s - А

0

i

p I

0 0

XOR s

A XORs - А

0

I

p t

0 0

CP s

А - s

t

J-

V {

1 t

INC s

S + 1 •» S

t

V J

0 I

DEC s

S - 1 - S

0

J

V i

1 J

гд е s

- IXh, IXI, IYh, IYI

Например, для увеличения значения регистра IX на 256

можно исполь-

зовать недокументированную команду INC IXh, выполнение которой эк-
вивалентно работе целой программы:
PUSH DE ; сохранение содержимого регистра DE

ID DE,256 ; загрузка регистра DE значением 256

ADD IX,DE ; увеличение содержимого регистра IX

POP DE ; восстановление значения регистра DE

Приведем еще одну недокументированную команду, дополняющую группу
команд сдвига:

. ._. ._, CY Z P/V S N Н

SLI s |cyV47«-s«-o ы t t р j о о

где s - А, В, С, D, Е, Н. L, (HL), (IX+d) или (IY+d).

Сдвиг содержимого регистра s влево на один разряд, в младший бит
записывается 1, старший бит переписывается во флаг переноса CY.

Мы привели лишь несколько недокументированных команд микро-
процессора Z80, надеемся, что они будут Вам полезны. Если же Вас заинте-
ресовали неизвестные возможности Z80, ничто не мешает Вам поэкспери-
ментировать самим.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
От редакции - новая Бесплатная компьютеpная газета для ZX SPECTRUM.
Заметки СисОпа - Правила пользования ZX-Magazine BBS-2...
Застрял ? - Описание игры "They Call Me Trooper".
Мнение - Спектрум умер, что делать дальше?
Реклама - реклама и обьявления.

В этот день...   20 апреля