Формат оператора
Формат оператора USING позволяет сообщить информацию сразу о нескольких регистрах базы. Поэтому, если адрес В отстоит от адреса NAME больше чем на 4095 байт, но не больше чем на 8191 байт, в программе можно записать только один следующий оператор: USING *,5,6. Такой оператор USING сообщит транслятору, что общие регистры 5 и 6 можно использовать в качестве регистров базы и что в момент выполнения программы в регистре 5 должно находиться значение, равное Х’2’, а в регистре 6 — это значение, увеличенное на 4096. Программист должен только предусмотреть, чтобы эти регистры при выполнении программы были загружены соответствующими значениями.
Когда в программе определено несколько регистров базы, может случиться так, что для каких-то неявных адресов будут доступными не один, а несколько регистров. В этом случае при выборе регистров базы транслятор всегда отдает предпочтение доступному регистру базы, дающему минимальную величину смещения. Если имеются два регистра базы с одним и тем же значением базового адреса, то используется регистр с наибольшим номером.
Во всех приведенных примерах рассматривались иеремести — мые неявные адреса, для которых оператором USING определялись переместимые базовые адреса из той же самой секции. В программе могут присутствовать адреса, указанные абсолютными выражениями. Если в программе присутствуют неявные абсолютные адреса, то программист должен указать в этой программе регистр базы, который должен содержать абсолютный базовый адрес. Значение этого адреса должно быть меньше значения неявного адреса, но разность между их значениями не должна превышать 4095. При определении регистров базы для абсолютных адресов есть исключение. Если значение абсолютного адреса меньше 4096, то для него не требуется определения регистра базы. Значение этого адреса принимается в качестве смещения, а в качестве регистра базы всегда выбирается регистр 0.