Assembler для начинающих

Перекрестные ссылки



Перекрестные ссылки


    Чтобы воспользоваться файлом перекрестных ссылок, сформированным
    ассемблером, требуется дополнительная обработка.  Для перевода
    файла типа .CRF в текстовый файл в коде ASCII нужно выполнить
    программу CREF.  Программа CREF запускается точно так же, как и
    ассемблер, за исключением того, что при запуске задаются только два
    файла:  входной файл типа .CRF и выходной файл типа .REF.  При
    вводе команды DOS A> CREF запрашиваются имена двух файлов.
    Альтернативой может служить команда A> 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"'>    неверное значение, то листинг перекрестных ссылок показывает все
    команды, где имеются ссылки на данное символическое имя. Это
    поможет определить те команды, с которыми связано неправильное
    выполнение программы. Возможно также, что вы занимаетесь
    модификацией уже существующей программы, написанной кем-то другим
    или же вами, но так давно, что вы успели забыть, как эта программа
    работает. Если вы захотели изменить одну из подпрограмм, то вам
    должно быть известно, какие части программы эту подпрограмму
    используют. Листинг перекрестных ссылок показывает все команды CALL
    (а так же другие команды, имеющие к этому отношение), в которых
    есть ссылки на это символическое имя. Проанализировав
    соответствующие места программы, вы можете решить: допустимо ли
    вносимое изменение для всех тех участков, откуда вызввается данная
    подпрограмма. Листинг перекрестных ссылок значительно облегчает
    задачу определения всех участков программы, содержащих ссылки.




Содержание раздела