ZX-Ревю 1995 №1 1994 г.

Маленькие хитрости - Нюанс в использовании команд переброски.


МАЛЕНЬКИЕ ХИТРОСТИ

Нюанс в использовании команд переброски

Н.Новгород, 1995.

Сообщаю один интересный фактик . Команды блоковых операций микропроцессора Z80 (LDIR, LDDR, CPIR, CPDR и им подобные) считы-ваются процессором из памяти в каждом цикле выполнения, то есть так же, как и простые команды. Пример:

8000 210070 LD HL,#7000 8003 110170 LD DE,#7001 8006 01FF8F LD BC,#8FFF 8009 75 LD (HL),L

800A EDBO LDIR 800C C9 RET

Если при вызове этой программы стек установлен ниже #7000 или выше #9000, то по команде RANDO

(С) IWN,

MIZE USR 32768 выполнится очистка памяти не по адресам #8000-#FFFF, а всего лишь #7000-#800А.

Это происходит потому, что N раз процессор считывает из памяти код команды LDIR (#ED #В0), И последний раз - #00 #В0 (то есть NOP и OR В, которые и выполняет), а затем - команду RET.

При этом возникает огромное поле для экспериментов на тему защиты, ''извращенных" методов переброски блоков, когда блок при переброске накладывается на уже переброшенную свою часть, которая модифицировала команду LDIR (LDDR), заменив ее, например, на LDDR (LDIR) или на какой-нибудь ЭР (например #18 #В0).

Примечание: к сожалению, не было возможности проверить этот факт на советских аналогах Z80.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Новости - новый варез: PSYCНОZ#17,CОSSACKОS#16,17,InfоGuide#6.
График - график работы BBS.
Проходилка - прохождение игры Die Feuerfaust 2.
Help - описание новой оболочки газеты.
Part 12 - Spectrum on the Net.

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