ZX Review #7-8-9-10
08 ноября 1997

Ретро - 40 лучших процедур: Копирование данных в памяти.


    8.4. Копирование данных
            в памяти

  Длина: 33
  Количество переменных: 3
  Контрольная сумма: 4022
  Назначение: эта программа  ко-
пирует область памяти  с  одного
места в другое.
  Переменные:
     Имя: start
     Длина: 2
     Ячейка: 23296
     Комментарий: адрес источни-
ка для копирования.
     Имя: destination
     Длина: 2
     Ячейка: 23298
     Комментарий: адрес, в кото-
рый происходит копирование.
     Имя: length
     Длина: 2
     Ячейка:  23300
     Комментарий:  длина  блока,
подлежащего копированию.
     Вызов программы:
     RANDOMIZE USR адрес
  Контроль ошибок: нет
  Комментарий: эта  подпрограмма
может быть использована для соз-
дания  "мультипликации"  с   по-
мощью следующего метода:
  - создание первого экрана  ин-
формации;
  - копирование экрана выше RAM-
TOP;
  - повторить для  других  экра-
нов;
  - копирование экранов в обрат-
ном направлении по одному в быс-
трой последовательности.

   ЛИСТИНГ МАШИННЫХ КОДОВ
МЕТКА  АССЕМБЛЕР      ЧИСЛА ДЛЯ ВВОДА147.

       LD HL,(23296)  42   0  91
       LD DE,(23298) 237 91 2 91
       LD BC,(23300) 235 75 4 91
       LD A,B        120
       OR C          177
       RET Z         200
       AND A         167
       SBC HL,DE     237  82
       RET Z         200
       ADD HL,DE      25
       JR C,COPY      56   3
       LDIR          237 176
       RET           201
COPY   EX DE,HL      235
       ADD HL,BC       9
       EX DE,HL      235
       ADD HL,BC       9
       DEC HL         43
       DEC DE         27
       LDDR          237 184
       RET           201
2
  Как она работает:
  В пару регистров HL загружает-
ся адрес  первого  байта  памяти
для копирования, в DE загружает-
ся адрес, в  который  копируется
память, а в BC загружается коли-
чество байтов  для  копирования.
Если BC=0 или HL=DE, то подпрог-
рамма возвращается в BASIC. Если
HL больше, чем DE, часть  памяти
копируется,  используя  инструк-
цию LDIR и программа возвращает-
ся в BASIC.
  Если же DE больше, чем  HL, то
к обеим парам регистров  прибав-
ляется  по  BC-1  и  память  ко-
пируется,  используя  инструкцию
LDDR, после чего программа  воз-
вращается в BASIC.




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

Похожие статьи:
Coding - доработка ZX-WORD для Беларуского языка.
Правда о хакерах - Как она есть. Кто такие хаккеры.
Ликбез - Аккумуляторы. Результаты опытов с различными аккумуляторами.

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