|
Форум - о регистре регенерации.
|
ИФК: В 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, можно
организовать ветвления в программе в зависимости от того, разрешены или
запрещены прерывания.
СОДЕРЖАНИЕ:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Форум-Игры - В разделе рассмотрены: Burry, McGuian World Champion, Sword&Sorcery, Marsport, Master of Magic, Colony, Firelord, Tai-Pan, The Spectre, Rebel Star, Dr.What, Rescue, Vatman, Iron Man, Seymour at the Movies, Wild West Seymour Adventures, Venturama, Livingstone 2, Total Eclipse 2, Dizzy 6, Elite, Street Hassle.
-
Перекресток - В разделе рассмотрены: Mysterious Adventure N11, Temple of Terror, Witch Cauldron, Smok Wawelski, ID, Eric the Viking, Golden Apple, Famous Five, Emerald Island,Magnetic Moon 1, Shadows of Mordor, Quest Adventure, Sam Spoon, Snowball, Slain the King, Lancelot, MindFighter, The Legend of Apache Gold, Звёздное Наследие, Return to Eden.
-
-
-
-
-
-
-
-
|
|