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

Ретро - 40 лучших процедур: Определение адреса БЕЙСИК-строки.

    8.3. Определение адреса
         БЕЙСИК-строки

  Длина: 29
  Количество переменных: 1
  Контрольная сумма: 2351
  Назначение:  возвращает  адрес
первого символа после кода REM в
заданной строке.
  Переменные:
     Имя: line number
     Длина: 2
     Ячейка: 23296
     Комментарий: номер  строки,
  которая должна содержать  REM.
  Вызов программы:
     LET A = USR адрес
  Контроль ошибок:  если  задан-
ная строка не существует или нет
выражения REM, программа возвра-
тит значение 0.
  Комментарий: эта программа мо-
жет быть использована для нахож-
дения адреса  ячейки, в  которую
может быть помещен машинный код.
После выполнения программы пере-
менная A (может быть использова-
на любая другая переменная)  ус-
танавливается по адресу или в 0,
если имеет место ошибка.
  Не вводить номер строки  более
9999!

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

       LD HL,(23296)  42   0  91
       LD A,H        124
       OR L          181
       JR Z,ERROR     40   5
       CALL 6510     205 110  25
       JR Z,CONT      40   4
ERROR  LD BC,0         1   0   0
       RET           201
CONT   INC HL         35
       INC HL         35
       INC HL         35
       INC HL         35
140.
       LD A,234       62 234
       CP (HL)       190
       JR NZ,ERROR    32 243
       INC HL         35
       LD B,H         68
       LD C,L         77
       RET           201
2
  Как она работает:
  В пару регистров HL  заносится
опседеленный номер строки.  Если
этот номер равен 0, делается пе-
реход к ERROR, иначе  вызывается
подпрограмма ПЗУ по адресу 6510.
По возвращении из этой  процеду-
ры  HL  содержит  адрес  строки.
Если флаг  нуля  установлен, де-
лается переход к CONT. Если флаг
нуля не  установлен, эта  строка
не существует и подпрограмма пе-
реходит к ERROR, где в BC загру-
жается  0,  и  затем  происходит
возврат в BASIC.
  Если программа достигает  мет-
ки CONT, HL увеличивается на  4,
чтобы указать на  первый  опера-
тор в данной строке.  Если  этот
оператор  не  имеет  кода   234,
происходит переход к ERROR. Если
же это оператор REM, HL увеличи-
вается, указывая  на   следующий
символ. Значение HL затем  копи-
руется в BC и программа  возвра-
щается в BASIC.




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

Похожие статьи:
Письмо №314 - Котлас
Ликбез - Ассемблер взгляд издалека: Что такое стек. Определение области стека.
Birthday - поздравления спектрумистов с днем рождения.

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