Команды перекодировки - Перекодировать и проверить

Команда TRT используется для поиска в произвольной строке байтов с заранее заданным содержимым. Подобные задачи часто возникают при обработке символьной информации. Нам может понадобиться, например, отыскать десятичную точку в числе, представленном в форме с плавающей точкой, найти пробелы в некотором тексте или произвести проверку числовой информации на наличие незаконных символов.

Порядок работы с TRT очень похож на порядок работы с TR.

TRTD1(L1,B1),D2(B2)

TranslateandTest

Поиск в (D1+(B1))L1 символов, определяемых с помощью (D2 + (B2))256

Снова мы имеем словарь и область аргументов. Однако в отличие от TR команда TRT не меняет содержимого памяти. Вместо этого среди содержимого области аргументов производится поиск символов, определяемых заданной в словаре информацией.

Конкретно, при выполнении команды TRT содержимое поля аргументов просматривается слева направо, и при этом по индексу, определяемому содержимым каждого байта аргумента, отыскивается соответствующий ему байт в словаре. Как только находится байт-аргумент, содержимое соответствующего байта словаря для которого не равно нулю, процесс прекращается, адрес найденного байта помещается в регистр 1, его содержимое — в регистр 2 (разряды 24—31) и устанавливается новое значение признака результата:

Признакрезультата

Описание ситуации

0

Содержимое всех байтов словаря, соответствующих байтам аргумента, равно 0.

 

1

Был найден байт в области аргументов (не последний),

для которого содержимое соответствующего ему байта словаря не равно 0.

 

2

Последний байт области аргументов был первым, которому соответствовал байт словаря с ненулевым содержимым.

 

Таким образом, перед использованием TRT строится 256-байтовый словарь. Все байты словаря содержат 0, кроме тех, которые соответствуют интересующим нас индексам. Пусть, например, нам известно, что в некотором 10-байтовом поле могут быть записаны коды чисел от 0 до 9, а также коды пробелов. Мы хотим использовать команду TRT для проверки наличия в этой области каких-либо других символов. Таким образом, байты 40„ и F0 — F9 словаря должны содержать 0, остальные же должны быть ненулевыми. Такой словарь может быть построен, например, так:

DIGTEST DC 256X'FF'

ORG DIGTEST+ Х'40*

DC X'00'

ORG DIGTEST+X`F0`

DC 10X`00`

ORG

С помощью предложения ORG с пробелами в поле операндов значение счетчика результата устанавливается равным наибольшему его предшествующему значению, в данном случае DIGTEST+256. Предположим, что первоначально мы имеем

(1) = 00000000 (2) = FFFFFFFF

и что исследуемое число находится по адресу 2000, в поле NUM. В зависимости от содержимого поля NUM выполнение команды

TRT NUM(10), DIGTEST

даст следующие результаты:



Расскажи друзьям
 
Оглавление
Команды перекодировки
Команда TR
Перекодировать и проверить
Статьи раздела