Работа с таблицами


Главная / ЭКВМ / Техническая информация / Функции

 

17. Работа с таблицами

 

17.1. Описание

В ЭВМ предусмотрена возможность работы с упорядоченными или ассоциативными таблицами, размещёнными в памяти программ.

Упорядоченные таблицы предназначены для выбора значения по его порядковому номеру. Таблицы содержат последовательно записанные двухбайтовые числа в шестнадцатеричном или упакованном BCD формате.

Ассоциативные таблицы предназначены для поиска значения по связанному с ним индексу. Таблицы содержат группы по три байта, состоящие из однобайтового ключа и ассоциированного с ним значения - двухбайтового числа в шестнадцатеричном или упакованном BCD формате. Последняя группа таблицы начинается числом 255 (0FFh), поиск по данному индексу не производится.

Перед обращением к функциям работы с таблицами адрес начала таблицы заносится в индексный регистр памяти программ R9042 (см. п. 6.1.3).

 

17.2. Функции для работы с таблицами

 

17.2.1. Чтение значения по номеру (R9210)

Операция производится при выполнении команды записи в регистр памяти данных с адресом 9210. В регистре X стека задаётся порядковый номер значения в упорядоченной таблице чисел в шестнадцатеричном формате. Преобразование содержимого регистра X стека при обращении к функции происходит аналогично модификации при косвенной адресации.

Функция считывает два последовательных байта из памяти программ. Считывание начинается с адреса, отстоящего от содержимого индексного регистра памяти программ на удвоенное содержимое регистра X стека. Имеющий меньший адрес байт интерпретируется как старший байт двухбайтового шестнадцатеричного числа. Байт имеющий больший адрес - как младший байт. Считанное из памяти программ число преобразуется в целое в диапазоне от 0 до 65536 и помещается в регистр X стека, замещая его предыдущее содержимое.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.

 

17.2.2. Чтение двоично-десятичного значения по номеру (R9211)

Операция производится при выполнении команды записи в регистр памяти данных с адресом 9211. В регистре X стека задаётся порядковый номер значения в упорядоченной таблице двухбайтовых чисел в упакованном BCD формате. Преобразование содержимого регистра X стека при обращении к функции происходит аналогично модификации при косвенной адресации.

Функция считывает два последовательных байта из памяти программ. Считывание начинается с адреса, отстоящего от содержимого индексного регистра памяти программ на удвоенное содержимое регистра X стека. Имеющий меньший адрес байт интерпретируется как старший байт двухбайтового числа в упакованном BCD формате. Байт имеющий больший адрес - как младший байт.

Считанное из памяти программ число преобразуется в целое в диапазоне от 0 до 16665 аналогично преобразованию адреса в командах перехода и помещается в регистр X стека, замещая его предыдущее содержимое.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.

 

17.2.3. Поиск значения по индексу (R9212)

Операция производится при выполнении команды записи в регистр памяти данных с адресом 9212. В регистре X стека задаётся индекс в диапазоне от 0 до 254. Преобразование содержимого регистра X стека при обращении к функции происходит аналогично модификации при косвенной адресации.

Функция выполняет последовательные обращения к содержимому памяти программ по адресам, отстоящим от содержимого индексного регистра памяти программ на величины, кратные трём. Считанный из памяти программ ключ очередной группы сравнивается в содержимым регистра X стека. Обращения продолжаются до совпадения значений индекса и ключа, до считывания из памяти программ признака окончания таблицы - числа 255 (0FFh) или до выхода за границы памяти программ.

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

Имеющий меньший адрес байт интерпретируется как старший байт двухбайтового шестнадцатеричного числа. Байт имеющий больший адрес - как младший байт. Считанное из памяти программ число преобразуется в целое в диапазоне от 0 до 65536 и помещается в регистр X стека, замещая его предыдущее содержимое.

Если совпадения не обнаружено до считывания признака окончания таблицы или до выхода за границу памяти программ, то в регистр X стека записывается число минус 1.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.

 

17.2.4. Поиск двоично-десятичного значения по индексу (R9213)

Операция производится при выполнении команды записи в регистр памяти данных с адресом 9212. В регистре X стека задаётся индекс в диапазоне от 0 до 254. Преобразование содержимого регистра X стека при обращении к функции происходит аналогично модификации при косвенной адресации.

Функция выполняет последовательные обращения к содержимому памяти программ по адресам, отстоящим от содержимого индексного регистра памяти программ на величины, кратные трём. Считанный из памяти программ байт (ключ очередной группы) сравнивается в содержимым регистра X стека. Обращения продолжаются до совпадения значений индекса и ключа, до считывания из памяти программ признака окончания таблицы - числа 255 (0FFh) или до выхода за границы памяти программ.

При нахождении совпадения функция считывает два следующих последовательных байта из памяти программ. Имеющий меньший адрес байт интерпретируется как старший байт двухбайтового числа в упакованном BCD формате. Байт имеющий больший адрес - как младший байт.

Считанное из памяти программ число преобразуется в целое в диапазоне от 0 до 16665 аналогично преобразованию адреса в командах перехода и помещается в регистр X стека, замещая его предыдущее содержимое.

Если совпадения не обнаружено до считывания признака окончания таблицы или до выхода за границу памяти программ, то в регистр X стека записывается число минус 1.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.



НПП "СЕМИКО" (383) 271-01-25 (многоканальный)