Машинный язык - Формат SS

Для определения операндов команд МVС и CLC требуется задание двух адресов и длины областей. Оба операнда адресуются S-полями, занимающими по два байта в командах машинного языка. Длина задается двоичным целым без знака, занимающим один байт. Итак, если учесть еще место, необходимое для кода операции, то всего для записи команд формата SS потребуется 6-байтовое поле.

Два S-поля в соответствующем порядке занимают последние 4 байта команды. Следовательно, длина операндов указывается во втором байте. Машинный формат команды

MOP D1(L1,B1),D2(B2)

выглядит так:

В гл. 10 говорилось, что по командам MVC и CLC можно производить пересылку или сравнение операндов длиной до 256 байтов. Это ограничение связано с тем, что под указатель длины операндов отведено всего 8 двоичных разрядов. Максимальным 8-разрядным целым без знака является 11111111=FF16=25510. Таким образом, так как в машинном языке длина операндов принимается на 1 большей числа, указанного в поле L1, то сравнивать и перемещать можно содержимое до 256 байтов. Другими словами, число, записываемое в поле длины рассматриваемых команд, на 1 меньше, чем действительное количество байтов в операндах.

Ассемблеру «известен» этот факт, поэтому он позволяет указывать в мнемонической записи команд на языке ассемблера длину операндов в явном виде. В процессе ассемблирования десятичное значение длины переводится в двоичную форму, из полученного результата вычитается единица и разность помещается во второй байт машинной команды.

Давая машине команду

MVC 6(20,3),5(12)

мы тем самым требуем переслать содержимое 20-байтового поля, начало которого имеет адрес, на 5 превышающий значение, находящееся в регистре 12, в поле той же длины, но начинающееся байтом 6+(3). Таким образом

D1 =6

В1 =3

L1 —1 = 1316

D2 = 5

В2 =С16

Таблица 11.1 Форматы машинных команд

Код операции, соответствующий команде MVC, равен D216. Таким образом, на машинном языке эта команда выглядит так:

D2133006С005

Адреса операндов, соответствующих перемещаемым выражениям, вычисляются так, как это уже было описано. Если имени BLKS соответствует значение смещения, равное 20016, и регистр 10 используется в качестве базового, то команда

MVC BLKS(50),40(6)

транслируется в

D231A2006028

а команда

CLC BLKS+100(30), BLKS+2 D51DA264A202

 



Расскажи друзьям
 
Оглавление
Статьи раздела