RX - «регистр–индексный регистр»
Команды формата RX имеют длину 4 байта, двухадресные, предназначены выполнения операций над переменными типа массив. 1-й операнд размещается в РОН по адресу, который находится в поле R1, адрес 2-го операнда определяется по формуле:
А2 = [В2] + [Х2] + D2 , (7.1)
где В2 – номер РОН, в котором находится значение базового адреса, Х2 –номер РОН, в котором находится значение индекса переменной, определяемое по формуле
Х2 = L*I (7.2)
где L – длина переменной в байтах, I – номер элемента в массиве (для одномерного массива), D2 – абсолютное значение смещения 0-го элемента массива относительно базового адреса, т. е. фактически получается, что выражение
[В2] + D2 (7.3)
определяет байт ОП, начиная с которого осуществляется размещение 2-й переменной типа «массив» в ОП. Результат операции РЗ помещается на место 1-го операнда в РОН.
Задание 2. Используя формат команды RX, заполнить поля команды информацией, представленной в 16-ричной СС и представить внутреннее содержимое использованных РОН и полей ОП до и после выполнения операции. КОП = 5В – операция вычитания чисел, представ-ленных в форме с фиксированной запятой, формат «F», R1=1, В2=2. Значение первого операнда О1 = +686210, значение второго операнда, который является элементом массива с номером 4, О2 = +356210. Содержимое Х2 должно быть равно 4*4 = 1610 = 1016.
Этапность выполнения задания 2:
1. Записать 16-ричное представление полей машинной команды:
5 В | 4 0 0 |
0 7 8 1112 1516 1920 31
2. Выполнение операции вычитания сводится к следующим действиям: из значения операнда, который находится в 1-м регистре общего назначения, вычесть значение операнда, являющегося 4-м элементом переменной типа «массив», объявленной в формате «F». Адрес младшего байта поля ОП, в котором размещается 2-й операнд, определяется по формуле (7.1). Результат помещается по адресу первого операнда в регистр общего назначения с номером 1.
3. Представить в 16-ричной СС значения О1, О2 и результата РЗ:
О1=+686210=+8АСЕ16, О2=+356210=+ D ЕА16, РЗ=+330010=+СЕ416
4. В соответствии с правилами внутри машинного представления чисел в формате «F» представить содержимое используемых РОН до и после выполнения операции в 16-ричной СС (рис. 7.4).
5. Исполнительный адрес 2-го операнда определяется по формуле 7.1 и будет иметь значение
А2(4) =00АЕА00016+40016+1016=00АЕА41016.
6. Адрес байта поля ОП, начиная с которого размещается 0-й элемент массива 2-й переменной, определяется по формуле 7.3 и будет иметь значение
А2(0)= 00АЕА00016+40016=00АЕА400.
До выполнения После выполнения
машинной команды машинной команды
8А | СЕ | 0С | Е4 | |||||||||
АЕ | А0 | АЕ | А0 | |||||||||
A | A | |||||||||||
B | B | |||||||||||
C | C | |||||||||||
D | D | |||||||||||
E | E | |||||||||||
F | F |
Рис. 7.4. Содержимое РОН до и после выполнения
машинной команды
7. Содержимое поля ОП, в котором размещается 2-й операнд, будет неизменным после завершения выполнения машинной команды (рис. 7.5).
До выполнения После выполнения
машинной команды машинной команды
0-й элемент массива | F F | 00АЕА410 | 0-й | F F | 00АЕА410 | |||||||||
F F | 00АЕА411 | элемент | F F | 00АЕА411 | ||||||||||
F F | 00АЕА412 | массива | F F | 00АЕА412 | ||||||||||
9 1 | 00АЕА413 | 9 1 | 00АЕА413 | |||||||||||
1-й элемент массива | F F | 00АЕА414 | 1-й | F F | 00АЕА414 | |||||||||
F F | 00АЕА415 | элемент массива | F F | 00АЕА415 | ||||||||||
F 0 | 00АЕА416 | F 0 | 00АЕА410 | |||||||||||
5 7 | 00АЕА417 | 5 7 | 00АЕА410 | |||||||||||
2-й элемент массива | 0 0 | 00АЕА418 | 2-й элемент массива | 0 0 | 00АЕА410 | |||||||||
0 0 | 00АЕА419 | 0 0 | 00АЕА410 | |||||||||||
F D | 00АЕА41A | F D | 00АЕА410 | |||||||||||
A 9 | 00АЕА41B | A 9 | 00АЕА410 | |||||||||||
3-й элемент массива | F F | 00АЕА41C | 3-й элемент массива | F F | 00АЕА410 | |||||||||
F F | 00АЕА41D | F F | 00АЕА410 | |||||||||||
D B | 00АЕА41E | D B | 00АЕА410 | |||||||||||
A 5 | 00АЕА41F | A 5 | 00АЕА410 | |||||||||||
4-й элемент массива | 0 0 0 0 0 D E A | 00АЕА420 00АЕА421 00АЕА422 00AEA423 | 4-й элемент массива | 0 0 0 0 0 D E A | 00АЕА420 00АЕА421 00АЕА422 00АЕА423 | |||||||||
FFFFFFFF | FFFFFFFF | |||||||||||||
Рис. 7.5. Содержимое ОП до и после выполнения машинной команды
Анализ содержимого полей ОП, в которых размещаются значения 0, 1 и 3-го элементов переменной типа «массив» А2, дает основание сделать выводы о том, что 0, 1 и 3-й элементы являются отрицательными числами, так как в знаковых разрядах находится «1», элементы 2 и 4-й являются положительными числами, поскольку их знаковые разряды имеют значение «0». 4-й элемент массива, выступающий в данной операции в качестве 2-го операнда, после завершения операции своего значения не меняет. В заключение можно отметить, что формат RX – единственный, который может работать с индексными переменными.