Reklama

Команды обработки текстовой информации

Текстовая информация представляет собой последовательность символов, среди которых могут быть цифры, буквы и специальные знаки. Примером такой информации служит сама программа (исходный модуль), подаваемая на вход компилятора. Обработка текстовой информации занимает значительное место в задачах АСУ. Каждый символ несет в себе 1 байт информации. Последовательность байтов составляет символьную строку. При обработке текстовой информации используются текстовые команды.

Пересылка MVC D1 (LI, Bl), D2(L2, В2). Последовательность из L1 символов, начальный адрес который D2+ (В2), пересылается по адресу D1+(Bl).

Выполнить MVC А1+2 (3), В1+3. Пусть

A1 DC CL10 ’0 1 234 5 67 8 9′ 

Bl DC CL10 ‘A B C D E F G H I J’ 

По окончании выполнения команды в области А1 будет находиться последовательность 1DEF56789.

Выполнить команду MVC Al, В1.

Здесь не указан параметр L1. В таких случаях компилятор сам при трансляции формирует в тело машинной команды значение этого параметра в соответствии с характеристикой длины первого операнда, которое он берет из объявления в команде DC.

 

Пересылка непосредственная MVI D1(B1), I2. Символ операнда 12 пересылается по адресу D1+ (В1). Он может быть задан в шестнадцатеричном, двоичном или десятичном представлении.

Выполнить команду MVI, Al, Х’1С’. Пусть

Al DC CL 4′ACBD’

В результате выполнения команды в области А1 будет находиться последовательность 1CBD.

Пересылка символов длинная MVCL Rl, R2. Содержимое области памяти, начальный адрес которой занимает 8—31-й разряды четного регистра R2, а длина области задана числом, находящимся в разрядах 8—31 регистра, следующего за регистром R2, пересылается в область памяти, начальный адрес которой занимает 8— 31-й разряд четного регистра R1, а длина этой области задана числом, находящимся в разрядах 8—31 регистра, следующего за регистром R1.

Адреса и длины областей задаются 24 разрядами.

При выполнении команды могут иметь место следующие случаи:

1.      Размер области пересылаемой информации равен размеру области, в которую делается пересылка. При пересылке каждого символа адреса областей увеличиваются на единицу, а размеры областей уменьшаются на единицу. К концу пересылки размеры областей становятся равными нулю, а адреса областей — увеличенными на значение размера областей.

2.      Размер области пересылаемых символов меньше размера области, в которую производится пересылка. В этом случае все символы пересылаются, а оставшаяся незаполненной часть области пересылки дозаполняется кодом символа — заполнителя, который помещается предварительно программистом в разряды О—7 регистра, следующего за регистром R2.

3.      Размер области пересылаемых символов превышает размер области пересылки. В этом случае делается попытка пересылки такого количества символов, которое допускается размером области пересылки. На этот момент запоминаются текущие значения адресов и размеров областей. Пересылка следующей порции символов осуществляется новой командой МУСЬ, работающей с регистрами R1 и r2. Пересылка будет возобновлена начиная с заполненных значений адресов и размеров областей.

Прочитать символ IС R1, D2(Х2, В2). Содержимое символа, хранящегося по адресу D2+ (Х2)+(В2), засылается в разряды 24—31 регистра R1. Содержимое разрядов 0—23 регистра R1 не меняется.

Запись символа в память SТС R1, D2 (X2; В2). Содержимое разрядов 24—31 регистра R1 пересылается в память по адресу D2+ (Х2)+(В2).          

Прочитать символы по маске IСМ R1, M3, D2(В2). Содержимое области памяти с адресом D2+ (В2) помещается в регистр R1 в соответствии с содержимым 4-битовой маски М3 по правилу: очередной символ из памяти помещается в те 4 байт (слева направо), которые обозначены в маске битом 1.

Выполнить команду IСМ  2, В’1001′, А1.

Пусть в регистре R2 первоначально записана последовательность символов 1 2 3 4, а переменная А1 объявлена командой

А1 DС СL 10′ А В С D Е F H I J’

В результате выполнения команды в регистре R2 будет храниться последовательность символов А23D,

Записать символы в память по маске SТСМ R1, М3, D2 (В2). Эта команда обратна команде IСМ.

Сравнение кодов СLС D1 (L1, В1), D2(В2). Содержимое L1-байтового поля с начальным адресом D2+ (В2) логически сравнивается с содержимым L1-байтового поля с начальным адресом D1+(В1), и вырабатывается признак результата. Операнды рассматриваются как целые числа без знака.

Сравнение кодов непосредственное СLI D1 (В 1), 12. Содержимое байта памяти с адресом D1+ (В1) логически сравнивается с содержимым непосредственно заданного байта I2, и вырабатывается признак результата. Операнды рассматриваются как целые числа без знака.

Сравнение символов по маске СLM, R1, М3, D2 (В2). Символы, хранящиеся в области памяти с адресом D2+(В2), сравниваются с символами, хранящимися в 4-байтовом регистре R1 в последовательности слева направо, определяемой единичными байтами 4-битовой маски М3. Операнды рассматриваются как целые числа без знака. Число символов, участвующих в операции, определяется числом единичных битов в маске.

Выполнить команду СLМ 2, В’1001′, А1.

Пусть содержимое регистра R2=АВСD, а содержимое переменной А1 =  1 2 3 4 5. Тогда в сравнении по заданной маске будут участвовать: от регистра — символы А и D; от переменной А1 — символы 1 и 4.

Сравнение кодов длинное СLCL R1, R2. Содержимое области, начальный адрес которой занимает 9—31-й разряды четного регистра R2, а длина области задана числом, находящимся в разрядах 8—31 следующего за R2 регистра, побайтно сравнивается с содержимым области, начальный адрес которой содержится в разрядах 8—31 четного регистра R1, а длина этой области задана числом, находящимся в разрядах 8—31 регистра, следующего за регистром R1. Сравнение символов этих областей ведется до тех пор, пока не обнаружится неравная пара символов, после чего вырабатывается признак результата.

Если размеры областей различны, то более короткая область Дозаполняется символом-заполнителем, код которого формируется заранее в разрядах 0—7 регистра, следующего за регистром R2.

 

Reklama