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.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября