Cтраница 3
Проницательный читатель заметил, что в одних программах этой главы применяется абсолютный режим адресации при обращении к регистрам устройств и векторам прерываний, в то время как другие используют относительный режим. Необходимость применения абсолютной адресации в программах, записанных в PIC ( например, рис. 7.2, 7.18), очевидна. [31]
Тогда говорят об абсолютной адресации, а в команде ее обозначают двумя символами, предшествующими адресу. [32]
Программы, работающие под управлением Topview, должны удовлетворять определенным условиям. Они не могут использовать абсолютную адресацию памяти или загружаться в память по абсолютному адресу. Они не могут напрямую работать с видеопамятью или буфером обмена с клавиатурой. Topview не обеспечивает также возможность использования пакетных файлов и не поддерживает графические средства. [33]
ЭВМ PDP-11), приобретает новое качество - становится абсолютной адресацией. [34]
Стандартность оформления состоит в унификации методов составления обращений к внешним массивам и программам и в указании меток, доступных для обращения из, внешних программ. Для переработки внутренних адресов достаточно указать смещение первой команды относительно базиса в ЦВМ с базисной и абсолютной адресацией, а для ЦВМ с относительной адресацией, в которых базисом является текущий адрес, никаких указаний о начальном расположении не дается. Также необходимо во внутренней информации указать метки, общие для внешних программ. Наименование модуля позволяет проверить соответствие обращения за ним в библиотеку фактическому наличию там требуемого массива. Организующая система не устанавливает модуль на предназначенное ему место без этой информации, но в рабочую программу она не вводится. [35]
Благодаря простоте и гибкости абсолютная адресация используется почти во всех ЭВМ. Из микро - ЭВМ, рассматриваемых в этой книге, только ЭВМ MCS-48 не имеет длинной абсолютной адресации. [36]
![]() |
Программа ввода данных, аналогичная программе, представленной на 6, и отличающаяся от нее только местом расположения в памяти. ( Настоящая программа расположена в памяти, начиная с области 01АЕ. [37] |
Очевидно, что программы, представленные на рис. 13.9, а, б, занимают в памяти примерно одинаковое количество областей. Однако программа, в которой используется относительная адресация, на 1 байт короче программы, реализованной с использованием абсолютной адресации. Это объясняется тем, что в программе, представленной на рис. 13.9, а, команда условного перехода, имеющая адрес 0004, занимает в памяти 3 байт. [38]
Если теперь программу, как целое, переместить в памяти, то в команду, использующую относительную адресацию, никаких изменений вносить не надо, а второе слово команды с абсолютной адресацией должно быть модифицировано. Если обращение происходит к ячейке с фиксированным адресом, выходящим за границы программы ( например, регистры внешних устройств), то свойством перемещаемости будет обладать абсолютная адресация. [39]
При перемещении всей программы в другое место ОЗУ эта разница сохраняется и, следовательно, операция будет выполняться правильно. При обращении к этим ячейкам необходимо использовать абсолютную адресацию, в противном случае при перемещении программы обращения к этим ячейкам будут производиться неправильно. [40]
Настройка адресов во время загрузки не решает проблемы защиты. Вредоносные программы всегда могут создать новую команду и перескочить на нее. Поскольку при такой системе программы предпочитают использовать абсолютную адресацию памяти, а не адреса относительно какого-либо регистра, не существует способа, который позволил бы запретить программе построение команды, обращающейся к любому слову в памяти для его чтения или записи. В многопользовательских системах крайне нежелательно разрешать процессам чтение или запись в область памяти, принадлежащую другим пользователям. [41]
В процессе чтения или записи программист должен указывать дорожку и запись на дорожке. Пользуясь, абсолютной или относительной адресацией на дорожке, он может обеспечить два варианта поиска записи. Первый вариант заключается в том, что в случае абсолютной адресации он пользуется только левыми семью байтами адреса, а в случае относительной адресации на дорожке берет только левые два байта. Положение записи на дорожке не указывается, поэтому для поиска программист задает ключ. Второй вариант состоит в том, что поиск ведется без ключей, и следовательно, в этом случае программист должен вадавать адрес с точностью до номера записи на дорожке. При использовании относительной адресации блоков поиск по ключу ае ведется ни в каких случаях. [42]
Одной из операций, реализуемых логикой ЭВМ при выполнении большинства команд, является обращение к главной памяти с целью считывания или записи слова данных. Каждая команда, которая требует обращения к главной памяти, содержит адрес. Число в адресной части команды может использоваться без модификации - так называемая прямая, или абсолютная адресация. Однако было изобретено несколько алгоритмов автоматической модификации адресной части команды перед ее фактическим использованием для обращения к памяти. Адрес, который используется для фактического-обращения к памяти, называется действительным адресом. При прямой адресации адрес в команде является в то же время и действительным адресом. [43]
![]() |
Содержимое стека и таблицы адресов параметров сразу после включения регистров. [44] |
Подпрограммы могут разделять данные, если хранить данные в области, положение которой известно всем подпрограммам. Общие области особенно важны в подпрограммах ВВ ( см. гл. Наиболее простая процедура назначения общей области заключается в выделении общего блока памяти и обращения к нему с помощью абсолютной адресации. В этом случае к общей области выполняются абсолютные обращения, а во время ассемблирования эта область не инициализируется. Поэтому такая область называется пустой общей областью. Процедура назначения переместимой общей области заключается в определении ее как отдельной управляющей секции, которая состоит из констант и псевдокоманд распределения памяти. [45]