Меню сайта

Урок 92. Перекрестные ссылки

Чтобы воспользоваться файлом перекрестныхссылок, сформированным
— — — ассемблером, требуется дополнительнаяобработка. — Для перевода
— — — файла типа .CRF в текстовый файл в кодеASCII нужно выполнить
— — — программу CREF. — Программа CREF запускается точно так же, как и
— — — ассемблер, за исключением того, что призапуске задаются только два
— — — файла: -входной файл типа .CRF и выходной файл типа .REF. — При
— — — вводе команды DOS A&gt- CREF запрашиваютсяимена двух файлов.
— — — Альтернативой может служить команда A&gt-CREF B:FIG5=10, B, которая в
— — — качестве входного файла использует файлB:FIG5=10.CRF и формирует
— — — файл B:FIG5=10.REF. — Как и случае с ассемблером имеются и другие
— — — варианты данной команды, описанные всправочном руководстве по
— — — Макроассемблеру.

— — — — — На Фиг. 5.12 показан выход формирователяперекрестных ссылок.
— — — Данная конкретная таблица перекрестныхссылок получена для
— — — программы, приведенной на Фиг. 5.6. Влевом столбце перечислены все
— — — символические имена, определенные впрограмме. Напротив каждого
— — — символичсекого имени приводитсяпоследовательность целочисленных
— — — параметров. Числа соответствуют номерамстрок, в которых появляется
— — — это имя. Если за номером строки следуетсимвол #, то имя юыло
— — — определено в этой строке. Если же символ #отсутствует, то значит в
— — — этой строке содержится ссылка на имя.
— — — — — — — — -Фиг. 5.6 Пример использования функций ДОС

— — — — — — — — — — — -Symbol — Cross Reference — — — — — — — (#is definition) — — — Cref-1

— — — — — — — — — -BAD_CLOSE_MSG — . . . . . . . . . — — — 50# — — 169
— — — — — — — — — -BAD_OPEN_MSG . . . . . . . . . . — — — 37# — — 86
— — — — — — — — — -BAD_READ_MSG . . . . . . . . . . — — — 46# — — 141
— — — — — — — — — -BAD_WRITE_MSG — . . . . . . . . . — — — 41# — — 105 — — 159

— — — — — — — — — -CHANGE_RECORD — . . . . . . . . .126 — — — — — 128#
— — — — — — — — — -CHARACTER_LOOP . . . . . . . . . — — — 94# — — 110
— — — — — — — — — -CHAR_BAD_MSG . . . . . . . . . . — — — 60# — — 123
— — — — — — — — — -CLOSE_OK . . . . . . . . . . . . 168 — — — — — 171#
— — — — — — — — — -CREATE_OK — . . . . . . . . . . . — — — 3# — — 28 — — 28 — — 173

— — — — — — — — — -DISK_TRANSFER_ADDRESS — . . . . . — — — 26# — — 68 — — 95 — — 144 — — 145 — — 146 — — 148 — — 152

— — — — — — — — — -ERROR_EXIT . . . . . . . . . . . — — — 76# — — 87 — — 106 — — 142 — — 160 — — 170

— — — — — — — — — -FCB — . . . . . . . . . . . . . . — — — 5# — — 71 — — 82 — — 99 — — 136 — — 155 — — 165
— — — — — — — — — -FCB_BLOCK — . . . . . . . . . . . — — — 15#
— — — — — — — — — -FCB_CURRENT_RECORD . . . . . . . — — — 23# — — 89
— — — — — — — — — -FCB_DATE . . . . . . . . . . . . — — — 18#
— — — — — — — — — -FCB_DRIVE — . . . . . . . . . . . — — — 6#
— — — — — — — — — -FCB_EXT — . . . . . . . . . . . . — — — 11#
— — — — — — — — — -FCB_FILE_SIZE — . . . . . . . . . — — — 17#
— — — — — — — — — -FCB_NAME . . . . . . . . . . . . — — — 7#
— — — — — — — — — -FCB_RANDOM_RECORD — . . . . . . . — — — 24# — — 90 — — 91 — — 135
— — — — — — — — — -FCB_RECORD_SIZE — . . . . . . . . — — — 16# — — 92
— — — — — — — — — -FCB_RESV . . . . . . . . . . . . — — — 19#
— — — — — — — — — -FILE_ERROR_MSG . . . . . . . . . — — — 33# — — 75

— — — — — — — — — -INPUT_BAD_MSG — . . . . . . . . . — — — 54# — — 117

— — — — — — — — — -KEYBOARD_BUFFER — . . . . . . . . — — — 32# — — 112 — — 115 — — 124 — — 150
— — — — — — — — — -KEYBOARD_ERROR . . . . . . . . . 118# — — — — 130 — — 132
— — — — — — — — — -KEYBOARD_LOOP — . . . . . . . . .111# — — — — 121 — — 162
— — — — — — — — — -KEY_INPUT_OK . . . . . . . . . . 116# — — — — 122#

— — — — — — — — — -NO_FILE — . . . . . . . . . . . . — — — 74 — — — 80#

— — — — — — — — — -PROGRAM_EXIT . . . . . . . . . . 127 — — — — — 163#
— — — — — — — — — -PROGRAM_START — . . . . . . . . . — — — 29 — — — 66#

— — — — — — — — — -RANDOM_RECORD_OK . . . . . . . . 140 — — — — — 143#
— — — — — — — — — -RANDOM_WRITE_OK — . . . . . . . .158 — — — — — 161#
— — — — — — — — — -RECORD_SIZE — . . . . . . . . . . — — — 31# — —
92 — — 96 — — 151
— — — — — — — — — -WRITE_OK . . . . . . . . . . . . 104 — — — — — 107#

— — — — — — — — — -Фиг. 5.12 Таблица перекрестных ссылок для
— — — — — — — — — — — — — — — — — — программы Фиг. 5.6

— — — — — Как может быть использован листингперекрестных ссылок?
— — — Перекрестные ссылки позволяют определить,в каком месте
— — — используется каждое имя. Например, еслипеременная получаетMincho»‘&gt- — — — неверное значение, то листинг перекрестныхссылок показывает все
— — — команды, где имеются ссылки на данноесимволическое имя. Это
— — — поможет определить те команды, с которымисвязано неправильное
— — — выполнение программы. Возможно также, чтовы занимаетесь
— — — модификацией уже существующей программы,написанной кем-то другим
— — — или же вами, но так давно, что вы успелизабыть, как эта программа
— — — работает. Если вы захотели изменить однуиз подпрограмм, то вам
— — — должно быть известно, какие частипрограммы эту подпрограмму
— — — используют. Листинг перекрестных ссылокпоказывает все команды CALL
— — — (а так же другие команды, имеющие к этомуотношение), в которых
— — — есть ссылки на это символическое имя.Проанализировав
— — — соответствующие места программы, вы можетерешить: допустимо ли
— — — вносимое изменение для всех тех участков,откуда вызввается данная
— — — подпрограмма. Листинг перекрестных ссылокзначительно облегчает
— — — задачу определения всех участковпрограммы, содержащих ссылки.

Категория: Программирование на Ассемблере | Дата: 28.01.13

Меню раздела
Блок