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