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



         

Ключи ассемблирования


Первое число, следующее за командой A, называют ключами ассемблирования, потому что в зависимости от него трансляция протекает с теми или иными условиями. Ключи похожи на флаги, так как каждому из них соответствует определенный бит задаваемого значения. При объединении нескольких битов можно получить комбинацию различных условий. Перечислим значения всех используемых ключей при установке соответствующего бита в 1:

    бит 0 (1) - заставляет ассемблер вывести таблицу адресов меток и значений констант в конце второго прохода трансляции;

    бит 1 (2) - произвести проверку синтаксиса строк программы, не создавая при этом машинного кода;

    бит 2 (4) - вывести на втором проходе листинг ассемблирования программы;

    бит 3 (8) - на время трансляции назначить вывод вместо экрана на принтер;

    бит 4 (16) - реально размещать машинный код сразу за таблицей меток (адрес, указанный в директиве ORG влияет только на создание ссылок в программе);

    бит 5 (32) - не делать проверки расположения кода в памяти (обычно же максимальная верхняя граница задается системной переменной UDG и может быть изменена командой редактора U).

    Поясним смысл некоторых наиболее важных ключей и покажем, как ими пользоваться на практике. Первый ключ бывает совершенно необходим, по крайней мере, в двух случаях: при отладке достаточно больших программ, чтобы знать, где искать ту или иную процедуру и для определения адресов подпрограмм и переменных при использовании машинного кода совместно с программами на других языках или для связи различных модулей, транслируемых раздельно (что поделаешь, память Speccy весьма ограничена и иногда поневоле приходится изощряться). В таких программах, как БИТВА С НЛО или ГЕНЕРАТОР СПРАЙТОВ мы предложили простой способ выбора необходимой процедуры из пакета, но он не всегда может оказаться пригодным. Более того, в ГЕНЕРАТОРЕ СПРАЙТОВ переменные располагались в буфере принтера, а это в некоторых случаях не допускается. Например, в компьютере ZX Spectrum 128, как мы уже говорили, в этой области содержится важная информация, разрушать которую никак нельзя. Вот здесь-то и поможет ключ 1. Разместите все переменные внутри программы и оттранслируйте ее командой A1. Когда ассемблирование закончится, на экран (или на принтер, если задать режим A9 - 1+8) будет выдана таблица меток, в которой найдите нужное имя, а рядом с ним - адрес. Для обращения к этому адресу из Бейсика вам останется только перевести шестнадцатеричное значение в десятичное.




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