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.