Имя |
|
Доступ к области |
Сокра- |
|
Функция области |
через единицы |
щение |
||
области |
||||
|
следующего размера: |
|
||
|
|
|
||
|
счетчиков. Операции счета получают |
|
|
|
|
доступ к ним здесь. |
|
|
|
Блок |
Эта область содержит данные, к которым |
Блок данных, откры- |
|
|
данных |
можно обратиться из любого блока. Если |
тый оператором |
|
|
|
вам нужно иметь два различных блока |
«OPN DB»: |
|
|
|
данных, открытых одновременно, то один |
|
||
|
|
|
||
|
из них можно открыть оператором «OPN |
Бит данных |
DBX |
|
|
DB», а второй – оператором «OPN DI». |
|||
|
Благодаря этому CPU может отличить, к |
Байт данных |
DBB |
|
|
какому из двух блоков данных хочет |
Слово данных |
DBW |
|
|
обратиться программа, когда открыты оба |
Двойное слово |
DBD |
|
|
блока. Хотя вы можете использовать |
данных |
|
|
|
оператор «OPN DI» для открытия любого |
|
||
|
|
|
||
|
блока данных, этот оператор в основном |
Блок данных, откры- |
|
|
|
используется для открытия экземплярных |
|
||
|
блоков данных, связанных с |
тый оператором |
|
|
|
функциональными блоками (FB) и |
«OPN DI»: |
|
|
|
системными функциональными блоками |
Бит данных |
DIX |
|
|
(SFB). За дополнительной информацией о |
Байт данных |
DIB |
|
|
FB, SFB и экземплярных блоках данных |
Слово данных |
DIW |
|
|
обращайтесь к оперативной справке STEP 7. |
|||
|
|
Двойное слово |
DID |
|
|
|
данных |
|
|
Локаль- |
Эта область содержит временные данные, |
Бит временных |
L |
|
ные |
используемые внутри логического блока |
локальных данных |
|
|
данные |
(OB, FB или FC). Эти данные называются |
Байт временных |
LB |
|
|
также динамическими локальными |
локальных данных |
|
|
|
данными. Они служат в качестве |
LW |
||
|
Слово временных |
|||
|
промежуточного буфера. Когда логический |
|||
|
блок завершает работу, эти данные |
локальных данных |
LD |
|
|
теряются. Эти данные хранятся в стеке |
Двойное слово |
||
|
локальных данных (L-стек). |
временных |
|
|
|
|
локальных данных |
|
|
|
|
|
|
13.АДРЕСАЦИЯ
13.1.НЕПОСРЕДСТВЕННАЯ АДРЕСАЦИЯ
При непосредственной адресации операнд кодируется непосредственно в команде; то есть за командой непосредственно следует значение, с которым должна работать данная команда (например, загрузка). Команда также может предоставить свое собственное значение (например, SET).
65
Примеры |
|
SET |
Установить RLO в 1. |
OW W#16#A320 |
Поразрядное ИЛИ со словом. |
L 27 |
Загрузить целое число 27 в аккумулятор 1. |
L ’ABCD’ |
Загрузить символы ASCII ABCD в аккумулятор 1. |
L B#(100,12) |
Загрузить два байта 100 и 12 в аккумулятор 1. |
L C#100 |
Загрузить значение 100 в формате BCD в аккумулятор 1. |
13.2. ПРЯМАЯ АДРЕСАЦИЯ
Команда, использующая прямую адресацию, имеет операнд, указывающий местоположение значения, которое команда будет обрабатывать, и состоящий из следующих двух частей:
•идентификатора операнда (например, «IB» для «входного байта»);
•точного адреса внутри области памяти, указанной идентификатором операнда.
Операнд прямо указывает на адрес значения. Примеры
A I0.0 |
Выполнить логическую операцию И с входным битом I 0.0 |
S L20.0 |
Установить бит локальных данных L 20.0 |
= M 115.4 |
Присвоить RLO биту памяти M 115.4 |
L MW64 |
Загрузить слово памяти MW64 в аккумулятор 1 |
13.3. КОСВЕННАЯ АДРЕСАЦИЯ ЧЕРЕЗ ПАМЯТЬ
Команда, использующая косвенную адресацию через память, имеет операнд, указывающий местоположение значения, которое команда будет обрабатывать,
исостоящий из следующих двух частей:
•идентификатора операнда (например, «IB» для «входного байта»);
•одного из следующих указателей:
-слова, содержащего номер таймера (T), счетчика (C), блока данных (DB), функции (FC) или функционального блока (FB)
-двойного слова, содержащего точный адрес значения внутри области памяти, указанной идентификатором операнда
Операнд задает адрес значения или номер косвенно через указатель. Это слово или двойное слово может находиться в одной из следующих областей:
•битовая память (M);
•блок данных (DB);
•экземплярный блок данных (DI);
•локальные данные (L).
Преимуществом косвенной адресации через память является то, что вы можете
66
динамически модифицировать операнды команды во время обработки программы.
Когда вы работаете с косвенно адресованным через память операндом, который хранится в области памяти блока данных, вам нужно вначале открыть блок данных, используя команду Открыть блок данных (OPN). После этого вы можете использовать слово или двойное слово данных в качестве косвенного адреса, как показано в следующем примере:
OPN DB10
L IB [DBD20]
Формат указателя
Есть два возможных формата указателя: слово и двойное слово. Сокращенное обозначение для формата в виде слова заканчивается на W (например, DBW). Рис. 3–1 показывает формат указателя для слова. Сокращенное обозначение для формата в виде двойного слова заканчивается на D (например, DBD). Рис. 3–2 показывает формат указателя для двойного слова.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
n n n n n n n n n n n n n n n n
Биты от 0 до 15 (nnnn nnnn nnnn nnnn): номер (диапазон от 0
до 65 535) таймера (T), счетчика (Z), блока данных (DB), функции (FC) или функционального блока (FB)
Рис. 3.1. Формат указателя в виде слова для косвенной адресации через память
3 |
3 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
2 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
1 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
0 0 0 0 0 0 0 0 0 0 0 0 0 b b b b b b b b b b b b b b b b x x x
Биты с 3 по 18 (bbbb bbbb bbbb bbbb): номер (диапазон от 0 до 65 535)
адресуемого байта.
Биты с 0 по 2 (xxx): номер (диапазон от 0 до 7) адресуемого бита.
Рис. 3.2. Формат указателя в виде двойного слова для косвенной адресации через память
13.4. АДРЕСНЫЕ РЕГИСТРЫ
Для некоторых видов косвенной адресации при программировании в AWL необходимы определенные регистры CPU.
Адресные регистры 1 и 2 (AR1 и AR2) – это 32-битные регистры, которые принимают указатель на адрес внутри заданной области или указатель, содержащий информацию об области, для команд, использующих косвенную адресацию через регистр.
Указатели используются при косвенной адресации через регистр. В
67
распоряжении имеются два следующих вида указателей:
•внутренние для области: для доступа внутри заданной области к битам, байтам, словам и двойным словам в областях памяти P, I, Q, M, DBX, DIX и L;
•с указанием области: для доступа с указанием области к битам, байтам, словам и двойным словам в областях памяти P, I, Q, M, DBX, DIX и L.
13.5.КОСВЕННАЯ АДРЕСАЦИЯ ВНУТРИ ОБЛАСТИ ЧЕРЕЗ РЕГИСТР
Команда, использующая косвенную адресацию внутри области через регистр, имеет операнд, указывающий местоположение значения, которое команда будет обрабатывать, и состоящий из следующих двух частей:
•идентификатора операнда (например, «LD» для «двойного слова локальных данных»);
•адресного регистра и указателя для задания байта и бита. Байт и бит указывают смещение, которое при добавлении к содержимому регистра определяет значение адреса, которое команда должна обработать.
Операнд указывает на адрес значения косвенно, через адресный регистр плюс смещение.
Оператор, использующий косвенную адресацию внутри области через регистр, не изменяет значения в адресном регистре.
Вычисление адреса операнда
Операнд команды указывает на значение, которое команда будет обрабатывать. При косвенной адресации внутри области через регистр операнд указывает на адрес значения косвенно через адресный регистр плюс смещение. Рис. 3.3 показывает, как вычислить адрес операнда для команды присваивания (=) в следующем операторе:
= Q [AR1, P#1.1]
Содержимое адресного регистра AR1: 8.7 байт 8, бит 7
Смещение P#: |
1.1 байт 1, бит 1 |
|
+ |
|
|
|
|
|
Адрес: Выходной байт A 10.0 байты: 9, биты: 8 (= 1 байт)
Рис. 3.3. Вычисление адреса выхода Q [AR1, P#1.1]
Пример
68
A [AR1, P#4.3] Выполнить логическую операцию И с битом, адрес которого вычисляется как содержимое адресного регистра AR 1 плюс 4 байта плюс 3 бита. Область памяти бита задана в битах 24, 25 и 26 адресного регистра AR1.
= [AR2, P#0.0] Присвоить бит RLO биту, адрес которого находится в адресном регистре AR 2.
Область памяти бита задана в битах 24, 25 и 26 адресного регистра AR2.
L B [AR1, P#100.0] Загрузить в аккумулятор 1 байт, адрес которого вычисляется как содержимое адресного регистра AR 1 плюс 100 байтов.
Область памяти байта задана в битах 24, 25 и 26 адресного регистра AR1.
T D [AR2, P#56.0] Передать содержимое аккумулятора 1 в двойное слово, адрес которого вычисляется как содержимое адресного регистра AR 2 плюс 56 байтов. Область памяти двойного слова задана в битах 24, 25 и 26 адресного регистра AR2.
Таблица 3.1 перечисляет значения двоичного кода в битах 24, 25 и 26 указателя, которые определяют эту область.
|
Табл. 3.1. |
Идентификатор области (область памяти) |
Двоичное содержимое |
|
битов 26, 25 и 24 |
P (периферия, внешние входы и выходы) |
000 |
I (вход образа процесса) |
001 |
Q (выход образа процесса) |
010 |
M (битовая память) |
011 |
DBX (блок данных) |
100 |
DIX (экземплярный блок данных) |
101 |
(предыдущие локальные данные, т.е. локальные |
111 |
данные предыдущего незавершенного блока) |
|
Формат указателя
Для косвенной адресации с указанием области памяти через регистр в распоряжении имеется только один возможный формат указателя: двойное слово. Сокращенное обозначение указателя в формате двойного слова заканчивается на D (например, DBD). На рисунке 3.4 вы видите формат указателя для двойного слова.
69