Возврат из маскируемого прерывания. — КиберПедия 

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Возврат из маскируемого прерывания.

2022-10-04 21
Возврат из маскируемого прерывания. 0.00 из 5.00 0 оценок
Заказать работу

 

CY Z P/V S N H

RETN         IFF2®IFF1;(SP)®PC;SP+2®SP • • • • • •

Возврат из немаскируемого прерывания.

 

CY Z P/V S N H

RST р SP-2®SP;PC®(SP);p®PC[      • • • • • •

где р – 0,8,16,24,32,40,48 или 56.

Командное прерывание. Безусловный переход к подпрограмме, расположенной по фиксированному адресу р; выполняется аналогично команде CALL p.

Команды условного и безусловного перехода

 

CY Z P / V S N H

JP nn       nn ® PC               • • • • • •

Безусловный переход по абсолютному адресу. Управление передается команде, расположенной по адресу nn.

 

CY Z P / V S N H

JP cc,nn   nn ® PC          • • • • • •

(при выполнении условия cc)

где cc - NZ,Z,NC,С,PO,РЕ,Р,М (см. CALL cc.nn).

Условный переход по абсолютному адресу. Передача управления происходит только при выполнении условия cc, в противном случае выполняется следующая команда программы.

CY Z P / V S N H

JR e   PC + е ® PC           • • • • • •

Где е — смещение относительно текущего адреса.

Безусловный переход по относительному адресу. Управление передается команде, расположенной по адресу, полученному прибавлением смещения е к текущему значению счетчика команд.

CY Z P / V S N H

JR cc, e     PC + е ® PC           • • • • • •

(при выполнении условия ее)

где е — смещение относительно текущего адресa;

cc — NZ — не ноль (флаг Z=0);

Z — ноль (флаг Z=1);

NC — нет переноса (флаг CY=0);

С — перенос (флаг CY=1).

Условный переход по относительному адресу. Передача управления происходит только при выполнении условия cc, в противном случае выполняется следующая команда программы.

CY Z P/V S N Н

JP (ss)    ss – PC           • • • • • •

где ss - HL,IX или IY.

Безусловный переход по адресу, содержащемуся в регистре ss.

 


CY Z P/V S N H

DJNZ  e                                  • • • • • •

Условный переход по относительному адресу при ненулевом счетчике.

Значение регистра В уменьшается на единицу. Если при этом B=/0, то осуществляется переход по адресу РС+е, в противном случае управление передается следующей команде программы. Команда удобна для организации циклов, счетчиком повторения в которых служит регистр В.

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

CY Z P/V S N H

IN A,(n)    (A®A15...A8;n®A7...AO) ®А • • • • • •

где n — номер порта.

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

 

CY Z P / V S N H

IN r,(С)    (В®А15...А8;С®А7...А0) ®r • o P o 0 o

где r - А,В,С,D,E,H,L.

Ввод байта из порта и помещение его в регистр. Адрес порта содержится в регистре ВС (в С — младший байт адреса, В — старший). Далее вместо подобного словосочетания будет использоваться фраза «порт адресуется регистром ВС».

 

CY Z P/V S N H

IN (HL),(C) F(В ® A15...A8;С ® А7...А0)         • o P o 0 o

Ввод байта из порта с выставлением флагов. Адрес порта задается регистром ВС. Команда аналогична команде IN r,(C |, но при ее выполнении принятый байт никуда не записывается, а только в зависимости от его значения изменяются биты флагового регистра.

 

CY Z P / V S N H

INI    ( В®А15...А8;C®А7...А0) ®(HL) Ï o Ï Ï 1 Ï

HL+1 ® HL;B-1 ® В

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

 


CY Z P/V S N H

INIR                                      Ï 1 Ï Ï 1 Ï

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

 

CY Z P / V S N H

IND   (В®А15...А8;С®А7...А0) ®(HL) Ï o Ï Ï 1 Ï

HL-1®HL;B-1®B

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

 


CY Z P / V S N H

INDR                                       Ï 1 Ï Ï 1 Ï

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

 

CY Z P / V S N H

OUT (n),A   А®(А®А15...А8;n®A7...A0) • • • • • •

где n — номер порта.

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

 

CY Z P / V S N H

OUT (С), r   r®(В®А15...А8;С®А7...А0) • • • • • •

где r - А,В,С,D,E,H,L.

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

 

CY Z P / V S N H

OUTI          (В®А15...А8;С®А7...А0) ®(HL) Ï o Ï Ï 1 Ï

HL+1®HL;B-1®B

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

 

 


CY Z P/V S N H

OTIR                                           Ï 1 Ï Ï 1 Ï

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

 

CY Z P / V S N H

OUTD          (В®А15...А8;С®А7...А0) ®(HL) Ï o Ï Ï 1 Ï

HL-1®HL;B-1®B

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

 

 

 


CY Z P/V S N H

OTDR                                           Ï 1 Ï Ï 1 Ï

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

 

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

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

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

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

 

___________________________________________________________

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

CY Z P / V S N H

LD r,s   s ® r                 • • • • • •

где r - А,В,С,D,Е;

s - IXh,IXl,IYh,IYl.

CY Z P/V S N H

LD d, r     r ® d                 • • • • • •

где r - А,В,С,D,Е или n;

d - IXh,IXl,IYh,IYl.

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

 

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

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

 

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

 

LD IXh,D

LD IXI,E

 

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

 

CY Z P/V S N H

ADD   A,s      A + s ® A             o o V o 0 o

ADC   A,s      A + s + CY ® A        o o V o 0 o

SUB   s        A - s ® A             o o V o 1 o

SBC   A,s      A - s - CY ® A        o o V o 1 o

AND   s        A AND s ® A           0 o P o 0 1

OR s        AOR s ® A            0 o P o 0 0

XOR   s        A XOR s ® A           0 o P o 0 0

CP s        A – s                 o o V o 1 o

INC   s        s + 1 ® s             • o V o 0 o

DEC   s        s - 1 ® s             • o V o 1 o

где s - IXh,IXl,IYh,IYl

Например, для увеличения значения регистра IX на 256 можно использовать недокументированную команду INC IXh, выполнение которой эквивалентно работе целой программы:

 

PUSH         DE;сохранение содержимого регистра DE

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

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

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

 

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

 

 

CY Z P/V S N H

SLI s                                 o o P o 0 0

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

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

 

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

_______________________________ GENS 4

АССЕМБЛЕР

 

Из множества ассемблеров и дизассемблеров, существующих для ZX Spectrum, в Союзе наиболее популярен пакет фирмы Hisoft — DEVPAC4 (ассемблер GENS4 и отладчик MONS4). Этому способствова­ли не только несомненные достоинства пакета, но и появление его версий, работающих с дисководом в среде TR-DOS.

 

Ассемблер GENS4 отличают следующие положительные свойства:

— относительно небольшой объем занимаемой самим транслятором памяти — около 10К;

— перемещаемость;

— наличие встроенного редактора;

— возможность работы в 51 -символьном текстовом режиме;

— наличие макрокоманд и директив условной трансляции;

— возможность подгрузки исходных файлов с кассеты или диска в процессе трансляции, что позволяет обрабатывать файлы практически неограниченного размера;

— высокая скорость трансляции;

— возможность записи на диск объектных файлов в процессе трансляции, что позволяет получать программы, занимающие всю доступную память.

 

Мы предлагаем Вам описание исходной версии GENS4, а также версии, адаптированной одним из авторов этой книги для работы с дисководом в системе TR-DOS. Выяснить, с каким накопителем работает конкретная модификация GENS4, можно в процессе трансляции. Рассматриваемая версия выводит на экран следующее сообщение: 1990 МОА B-Disk version

Различные варианты GENS4 отличаются также количеством символов в экранной строке: существуют версии с 51 -символьной строкой и с 32-символьной. Имена этих модификаций для работы с магнитофоном соответственно GENS4-51 и GENS4. Дисковая версия известна только 51 -символьная, чаще всего она встречается с именем GENS4B.

 

ЗАГРУЗКА GENS 4

 

Ассемблер GENS4 является перемещаемой программой, то есть он может быть загружен и запущен с произвольного адреса. Как правило, наиболее удобно располагать GENS4 с адреса около 25000 — в этом случае Вам предоставляется наибольший объем памяти для текста редактируемой программы и рабочих таблиц (текстовый файл и таблицы размещаются непосредственно за GENS4). Максимальный адрес, с которого может быть загружен GENS4 — около 54000.

Для загрузки GENS4 с ленты выполните один из следующих операторов:

 

LOAD ""CODE XXXXX

LOAD "name"CODE XXXXX

 

Здесь и ниже XXXXX — десятичный адрес, с которого Вы хотите загрузить GENS4, a name — имя версии.

Для загрузки с диска войдите в TR-DOS (RANDOMIZE USR 15616) и выполните оператор

 

LOAD "GENS4B"CODE XXXXX

 

Чтобы предотвратить возможные коллизии с интерпретатором Бейсика, перед загрузкой GENS4 полезно выполнить оператор CLEAR XXXXX-1

Запускается GENS4 оператором RANDOMIZE USR XXXXX, который используется также и для перезапуска ассемблера после выхода из него в Бейсик.

Для загрузки и запуска часто применяют программу-загрузчик на Бейсике. Один из ее вариантов приведен в конце описания GENS4.

После запуска GENS4 на экране появляется список команд редактора и подсказка в виде символа >.

 


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.073 с.