К ИПРГ: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 1: Строка 1:
Команда '''К ИПРГ''' ('''K PRGM''') «Считывание байта из памяти программ» с кодом 28 записывает в [[X|регистр X]] содержимое ячейки памяти программ с адресом, равным значению, содержащемуся в [[X|регистре X]] до выполнения команды. Содержимое ячейки памяти программ, один байт, записывается в [[X|регистр X]] в виде целого числа от 0 до 255. Число, находившееся до выполнения операции в [[X|регистре X]], передаётся в [[X1|регистр предыдущего результата X1]].
Команда '''К ИПРГ''' ('''K PRGM''') «Считывание байта из памяти программ» с кодом 28 записывает в [[RX|регистр X]] содержимое ячейки памяти программ с адресом, равным значению, содержащемуся в [[RX|регистре X]] до выполнения команды. Содержимое ячейки памяти программ, один байт, записывается в [[RX|регистр X]] в виде целого числа от 0 до 255. Число, находившееся до выполнения операции в [[RX|регистре X]], передаётся в [[X1|регистр предыдущего результата X1]].


== Чтение памяти программ через регистры функций ==
== Чтение памяти программ через регистры функций ==
Строка 5: Строка 5:
Кроме команды [[К ИПРГ]] в ЭКВМ предусмотрена другая возможность чтения содержимого [[память программ|памяти программ]] - с использованием [[R9042|индексного регистра]].
Кроме команды [[К ИПРГ]] в ЭКВМ предусмотрена другая возможность чтения содержимого [[память программ|памяти программ]] - с использованием [[R9042|индексного регистра]].


Запись и чтение значений [[R9042|индексного регистра]] производится при обращении к [[R9042|регистру памяти с адресом 9042]], при этом число в [[X|регистре X]] [[стек]]а преобразуется в целое и ограничивается до значения 9999.
Запись и чтение значений [[R9042|индексного регистра]] производится при обращении к [[R9042|регистру памяти с адресом 9042]], при этом число в [[RX|регистре X]] [[стек]]а преобразуется в целое и ограничивается до значения 9999.


Чтение содержимого [[память программ|памяти программ]] производится при выполнении команды чтения из [[регистр памяти|регистров памяти]] с адресами [[R9043|9043]], и [[R9044|9044]]. При этом, при обращении к [[R9043|регистру с адресом 9043]] [[поднятие стека|стек поднимается]], содержимое ячейки памяти программ, адрес которой записан в [[R9042|индексный регистр]], заносится в [[регистр X]] [[стек]]а. При обращении к [[R9044|регистру с адресом 9044]], после чтения содержимого ячейки [[память программ|памяти программ]], производится автоматическое увеличение содержимого [[R9042|индексного регистра]] на единицу. При достижении максимального значения, содержимое [[R9042|индексного регистра]] обнуляется.
Чтение содержимого [[память программ|памяти программ]] производится при выполнении команды чтения из [[регистр памяти|регистров памяти]] с адресами [[R9043|9043]], и [[R9044|9044]]. При этом, при обращении к [[R9043|регистру с адресом 9043]] [[поднятие стека|стек поднимается]], содержимое ячейки памяти программ, адрес которой записан в [[R9042|индексный регистр]], заносится в [[RX|регистр X]] [[стек]]а. При обращении к [[R9044|регистру с адресом 9044]], после чтения содержимого ячейки [[память программ|памяти программ]], производится автоматическое увеличение содержимого [[R9042|индексного регистра]] на единицу. При достижении максимального значения, содержимое [[R9042|индексного регистра]] обнуляется.


Операция записи по адресам [[R9043|9043]] и [[R9044|9044]] не изменяет [[стек]] ЭКВМ, [[память программ]] и содержимое [[R9042|индексного регистра]].
Операция записи по адресам [[R9043|9043]] и [[R9044|9044]] не изменяет [[стек]] ЭКВМ, [[память программ]] и содержимое [[R9042|индексного регистра]].

Версия от 17:57, 18 января 2014

Команда К ИПРГ (K PRGM) «Считывание байта из памяти программ» с кодом 28 записывает в регистр X содержимое ячейки памяти программ с адресом, равным значению, содержащемуся в регистре X до выполнения команды. Содержимое ячейки памяти программ, один байт, записывается в регистр X в виде целого числа от 0 до 255. Число, находившееся до выполнения операции в регистре X, передаётся в регистр предыдущего результата X1.

Чтение памяти программ через регистры функций

Кроме команды К ИПРГ в ЭКВМ предусмотрена другая возможность чтения содержимого памяти программ - с использованием индексного регистра.

Запись и чтение значений индексного регистра производится при обращении к регистру памяти с адресом 9042, при этом число в регистре X стека преобразуется в целое и ограничивается до значения 9999.

Чтение содержимого памяти программ производится при выполнении команды чтения из регистров памяти с адресами 9043, и 9044. При этом, при обращении к регистру с адресом 9043 стек поднимается, содержимое ячейки памяти программ, адрес которой записан в индексный регистр, заносится в регистр X стека. При обращении к регистру с адресом 9044, после чтения содержимого ячейки памяти программ, производится автоматическое увеличение содержимого индексного регистра на единицу. При достижении максимального значения, содержимое индексного регистра обнуляется.

Операция записи по адресам 9043 и 9044 не изменяет стек ЭКВМ, память программ и содержимое индексного регистра.

История

Команда советских ПМК К × с кодом 28 служила для вывода аварийного сообщения "ERROR". Если в программе советского ПМК команда К × использована для выдачи сообщения об ошибке, её следует заменить на К - или К ÷. Эти команды в ЭКВМ, как и в советских ПМК, вызывают аварийный останов с выводом сообщения. Перед заменой следует внимательно изучить алгоритм работы программы, как и в других аналогичных случаях, поскольку код команды может быть использован одновременно и как адрес перехода.

Ссылки