ZX-Ревю 1996 №7-8 1995 г.

Форум - о регистре регенерации.


   ИФК: В ZX РЕВЮ 95/5 на стр 25  Павел Костенко написал о своих наблюдениях по
поводу работы  регистра регенерации. Недавно к нам в редакцию пришло письмо от
Юкина  Александра  из г.Рязани, где более подробно разбирается работа этого
регистра.
   КОРР:  Прежде, чем  описывать  работу  регистра  регенерации, выясним, что
представляет из себя этот регистр. Приведу выдержку из справочного пособия
(Центральный процессор Z80CPU, УКИК "Центр", Минск, 1991 г.):
   "Это  8-и разрядный программно доступный регистр. Содержимое его младших 7
разрядов автоматически увеличивается на единицу после каждой выборки команды 
(точнее очередного цикла., Прим). При этом восьмой бит сохраняет значение, 
полученное при выполнении команды загрузки этого регистра. Т.о. формируется 
адрес регенерации, который подается в младшую часть адресной шины во время 
декодирования и выполнения команды в ЦП (в старшую часть подается содержимое 
регистра I)".
   Таким образом, число, на которое увеличивает свое значение регистр  
регенерации  зависит от числа байт, составляющих команду. При этом операнды и  
8-и  разрядные  смещения не являются кодами команд и, следовательно,
после  выборки  не  изменяют содержимое регистра R. Таким образом, команды без
префиксов увеличивают значение этого регистра на единицу. Для команд с 
префиксами и недокументированных команд это увеличение пропорционально числу 
байт их составляющих. В заключение привожу фрагмент XOR-ки, взятой из игровой 
программы "RED HEAT" (что, видимо, и явилось причиной интереса к регистру R):

3E 1A           LD      A,#1A
ED 4F           LD      R,A      ;R = #1A
ED 5F     L5CF8 LD      A,R      ;R = #1C
FD AE 00        XOR     (IX+0)   ;R = #1E (0-смещение)
ED 77 00        LD      (IY+0),A ;R = #20 (0-смещение)
FD 23           INC     IY       ;R = #22
FD 7C           LD      A,IYh    ;R = #24
FD B5           OR      IYl      ;R = #26
20 F0           JR      NZ,L5CF8 ;R = #27 (#F0-смещение)

   И  еще несколько слов по данной теме: т.к. старший бит рассматриваемого 
регистра сохраняет свое значение, полученное при загрузке, его можно 
использовать по своему усмотрению.
   ИФК: рассмотрим, какие изменения  производит  команда  LD A,R. Эта команда, 
в отличие от всех остальных команд загрузки, оказывает влияние на флаги:
H   <- 0
N   <- 0
P/V <- IFF2 (триггер разрешения/запрещения прерываний).

   Состояние  "запретить  прерывания"  или "разрешить прерывания" запоминаются
программно-доступным триггером IFF1 находящимся внутри ЦП. В отдельных случаях
его значение дублируется в триггере IFF2, состояние которого как раз и 
считывает команда LD A,R. Все действия, влияющие на состояние триггеров для 
удобства сведем в таблицу:

Ъ--------В-----В-----В---------------ї
іоперацияі IFF1і IFF2і примечания    і
Г--------Е-----Е-----Е---------------ґ
ісброс ЦПі  0  і  0  ісброс сигналом і
і        і     і     іRESET          і
і        і     і     і               і
і  EI    і  1  і  1  і               і
і        і     і     і               і
і  DI    і  0  і  0  і               і
і        і     і     і               і
і прием  і  0  і  0  іприем INT и об-і
і сигналаі     і     іработка преры- і
і  INT   і     і     іваний          і
і        і     і     і               і
і RETI   і  *  і  *  і               і
і        і     і     і               і
і прием  і  0  і  *  іприем NMI и об-і
і сигналаі     і     іработка преры- і
і  NMI   і     і     іваний          і
і        і     і     і               і
і RETN   іIFF2 і  *  і               і
і        і  |  і     і               і
і        і  V  і     і               і
і        іIFF1 і     і               і
і        і     і     і               і
і LD A,I і  *  і  *  і P/V <- IFF2   і
і        і     і     і               і
і LD A,R і  *  і  *  і P/V <- IFF2   і
і        і     і     і               і
А--------Б-----Б-----Б---------------Щ

   Таким образом, контролируя флаг P/V после команд LD A,I и LD A,R, можно 
организовать ветвления в программе в зависимости от того, разрешены или 
запрещены прерывания.



СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Отдохнём - Нечто: один день из жизни программиста
Cheats's - читы и коды и известным западным играм.
Список BBS - Список работающий BBS.
Мир PC - Пpипухшая моpда Necromancer'а очень хоpошо смотpелась на мишени с надписью "LaMe 0FF"
Прогаммистам - Алгоритм.

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