К max
Команда К max | |
К max | |
Код команды | 36 |
Русская мнемоника | К max |
Латинская мнемоника | K MAX |
Группа команд | сравнение |
Число операндов | двухместная |
Нажимаемые клавиши | К 9 |
Число шагов | 1 |
Признак перезаписи | сбрасывается |
Первое появление | МК-61 |
Время выполнения | ? |
Скорость выполнения | ? команд/с |
Команда К max (лат. K MAX) «Определение максимального значения» с кодом операции 36 сравнивает содержимое регистров X и Y. Если содержимое регистра Y больше, чем содержимое регистра X, то происходит обмен содержимым регистров X и Y. Если содержимое X больше или равно Y, то никаких действий не выполняется.
В результате выполнения команды K max большее из чисел, содержащихся в регистрах X и Y, перемещается в регистр X, меньшее в регистр Y. Содержимое других регистров стека не изменяется.
История[править]
При реализации команды К max, с кодом 36, предназначенной для выделения большего из двух чисел, в советских ПМК был допущен ряд недоработок. Число ноль воспринималось этой командой как наибольшее из всех чисел. Передвижение чисел по стеку в результате операции могло быть выполнено различными способами, в зависимости от того, в X или Y находилось большее число, и было ли оно нулем. Меньшее число при этом могло оказаться как в регистре Y, так и в X1.
В ЭКВМ для команды K max реализовано пожелание, высказанное в статье В.А. Хмелюка, Д.Б. Хрусталева и А.В. Васильева в разделе «Школа начинающего программиста. Занятие 21» журнала «Наука и жизнь» №11 - 1988 г. Если число в Y больше, чем в X, происходит операция ↔, обменивающая содержимое этих регистров. В противном случае обмена не происходит. Это позволяет использовать команду для сортировки.
При корректном применении команды K max в программах калькуляторов, с предварительной проверкой на нуль и использованием только регистра X в качестве результата операции, ее действие в советских ПМК и ЭКВМ идентично.
Если программа советских ПМК использует данную команду, следует обратить внимание, не применяется ли она для проверки на нулевое значение. В этом случае программу следует переработать.
Советская реализация[править]
Из книги Я.К. Трохименко «Программируемые микрокалькуляторы. Устройство и пользование.» (стр. 139):
«Функциональные операторы могут реализоваться арифметическими выражениями, содержащими условные переходы. Например, оператор MAX (ПМК семейства «Электроника МК-52») являтся по существу условным оператором: если (РY-РX) ≥ 0, то РX: = РY.»