R9212: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''R9212''' Поиск значения по индексу «Поиск значения по индексу ([[RX|X]] - индекс 0-254)»
'''R9212''' Поиск значения по ''индексу'' ([[RX|X]] - ''индекс'' 0-254)


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


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


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


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


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


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


== Ссылки ==
== Ссылки ==
{{Документация|d1_p17.htm#d1_17_2_3|Поиск значения по индексу (R9212) на сайте НПП «СЕМИКО», п. 17.2.3.}}
{{Документация|d1_p17.htm#d1_17_2_3|Поиск значения по индексу (R9212) на сайте НПП «СЕМИКО», п. 17.2.3.}}
* См. статью [[Работа с таблицами]]
[[Category:Регистры]]
[[Category:Регистры]]
[[Category:Регистры функций]]
[[Category:Регистры функций]]
[[Category:Функции работы с таблицами]]
[[Category:Функции работы с таблицами]]

Текущая версия от 22:15, 17 января 2020

R9212 Поиск значения по индексу (X - индекс 0-254)

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

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

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

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

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

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

Ссылки[править]