Как написать игру для ZX Spectrum на ассемблере



         

Элементы углов рамки - часть 4


Ни в коем случае! Ведь ассемблер сам может выполнять некоторые несложные расчеты, оперируя как с числами, так и с метками. Расположим блоки данных в таком порядке: сначала блок TEXT, затем - RAMKA и самым последним запишем блок UDG. Таким образом, длина блока TEXT будет равна разности его конечного и начального адресов, а так как сразу за ним следует блок RAMKA, то его длина определяется выражением RAMKA-TEXT. (Обратите внимание на тот факт, что ассемблер может вычислять выражения с метками даже до того, как эти метки встретятся в программе. Именно для обеспечения таких «ссылок вперед» и необходим второй проход ассемблирования - Примеч. ред.) Аналогично длина блока RAMKA вычисляется выражением UDG-RAMKA.

Теперь можно написать программку, формирующую на экране статическую заставку:

ORG 60000 ENT $ ; Подготовка экрана LD A,5 LD (23693),A LD A,0 CALL 8859 CALL 3435 LD A,2 CALL 5633 ; «Включение» символов UDG LD HL,UDG LD (23675),HL ; Вывод заставки на экран LD DE,RAMKA LD BC,UDG-RAMKA CALL 8252 LD DE,TEXT LD BC,RAMKA-TEXT CALL 8252 RET ; Подготовленные заранее блоки данных ; --------------

; --------------

; --------------




Содержание  Назад  Вперед