Недокументированные команды
значению регистра В. После передачи очередного байта содержимое
регистра В уменьшается на единицу, регистра HL увеличивается на
единицу.
OUTD (В - А,A7...A0J - (HL) <? | P/V $ N Н
Вывод байта из ячейки памяти в порт с декрементом» Байт считывается
из ячеики памяти, адресуемой регистром HL, и пересылается в порт,
адресуемый регистром ВС. После выполнения команды содержимое
регистров HL и В уменьшается на единицу. Если в результате выполне-
ния команды В обнуляется, то устанавливается флаг Z, в противном
случае Z*0.
OTDR (HL, - {Вr A^Ag^ А7...А0) ? ?'С $ 1 2
Вывод массива иэ памяти в порты, с декрементом* Адреса портов задаются
регистром ВС, начальный адрес массива — регистром HL Вывод осуще-
ствляется в сторону уменьшения адресов, количество передаваемых байт
равно значению регистра В. После передачи очередного байта содержи-
мое регистров В и HL уменьшается на единицу.
Недокументированные команды
При использовании 8-разрядной шины данных непосредственно можно
реализовать только 256 кодов команд (28=»256). Остальные 440 (696-256)
кодов команд Z80 являются двухбайтными — первым байтом кода в них стоит
один иэ четырех префиксов: #СВ, #DD, #ED, #FD Следовательно, кроме
описанных 696 кодов команд возможно составить еще много вариантов «не-
учтенных» кодов. Выполнение некоторых из них может привести к вполне
осмысленным результатам. Эти коды составляют так называемые недокрюн-
тированные команды. В фирменных описаниях процессора эти команды не
приводятся, однако многие программисты пользуются ими. иногда для удобст
ва, иногда иэ соображений секретности (отладчики обычно ««tie берут- такие
команды), иногда для позы, мол, посмотрите, какой я умный
Чаще всего применяются недокументированные команды, работаю
щие с частями индексных регистров как с 6-раэрядными регистрами <>(>щего
назначения. Эти регистры, верней, части регистров обозначаются IXh. IX!
(старшин и младший байты регистра IX) и IYh. 1УГ(старшии и м чадит и
байты регистра 1Y|.
Ниже приведены некоторые недокументированные команды 760
CV Z P/V S N Н
Ю Г4 $** Г ♦
где г - А, В. С, О, Е;
• - IXh, IXI, IYh, IYI.
CY Z P/V S N Н
LD d,r г d ......
где г - А, В, С. D, Е или п;
d - IXh, IXI, IYh, IVI.
Этими командами удойно ноль «мыться, когда нужно загрузить индекс
ныи penivip и< какою-либо другого регистра. Например, вместо после
до вател ьн ос г и ко м а нд
PUSH DE ; запись в стеке содержимого регистра DE
POP IX ; загрузка регистра IX значением из стека
можно исполыовать
LD IXh.D
LD IXI.E
Хотя вторая последовательность команд занимает в памяти на один байт
больше, время ее вынонения меньше на 9 тактов процессора.
Ниже приведены недокументированные команды, деипвие которых не
отличается or действия «нормальных» команд бай го но и арифметики.
ADD |
|
|
|
CY |
Z P/V |
s |
N |
H |
A,s |
A + s - A |
|
t |
t V |
% |
0 |
t |
ADC |
A,s |
A + s + CV - |
A |
t |
: v |
t |
0 |
г |
SUB |
s |
A — s A |
|
i |
t V |
t |
1 |
t |
SBC |
A,s |
A - s - CY - |
A |
i |
i V |
t |
1 |
t |
AND |
s |
A AND s - A |
|
0 |
t p |
t |
0 |
1 |
OR |
s |
A OR s A |
|
0 |
t p |
t |
0 |
0 |
XOR |
s |
A XOR s - A |
|
0 |
t p |
t |
0 |
0 |
CP |
s |
A - s |
|
t |
t V |
t |
1 |
1 |
INC |
s |
s + 1 - s |
|
• |
t V |
t |
0 |
t |
DEC |
s |
s - 1 - s |
|
• |
t V |
t |
1 |
t |
где s - IXh, 1X1, IYh, IYI
Например, для увеличения значения регистра IX на 256 можно исполь-
зовать недокументированную команду INC IXh, выполнение которой эк-
вивалентно работе целой программы:
PUSH DE ; сохранение содержимого регистра DE
LD DE.2S6 ; загрузка регистра DE значением 256
ADD IX.DE ; увеличение содержимого регистра IX
POP DE ; восстановление значения регистра DE
Приведем еще одну недокументированную команду, дополняющую ipyimy
команд сдвига*
,_. ,___CY Z P/V S N Н
SLI $ (cy} {ТТТГо}- 1 t t Р t 0 о
где s - А, В. С, D, Е, Н, L, (HL), (IX+d) или (IY+d).
Сдвиг содержимого регистра s влево на один разряд, и младший бит
записываете 1, старший бит переписывается во флаг переноса CY.
Мы иринеи лишь неском.ко недокументированных команд микро-
процессора /80, надеемся, что они будут Нам полезны. Не ли же Вас заинте-
ресовали ней шестые |мхможмопи /80, ничто не мешаеч Нам ножепери-
меншроиагь < амим