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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
(Новая страница: «Команда '''K max''' с кодом операции 36 сравнивает содержимое регистров X и Y. Если содержимое р…»)
 
 
(не показано 27 промежуточных версий 3 участников)
Строка 1: Строка 1:
Команда '''K max''' с кодом операции 36 сравнивает содержимое регистров X и Y. Если содержимое регистра Y больше, чем содержимое регистра X, то происходит обмен содержимым регистров X и Y. Если содержимое X больше или равно Y, то никаких действий не выполняется. После выполнения команды большее из чисел, содержащихся в регистрах X и Y, перемещается в регистр X, меньшее в регистр Y. Содержимое других регистров стека не изменяется.
{{Врезка-команда
| мнемоника          = К max
| мнемоника клавиш    = {{Синяя команда 2|К|max}}
| код                = 36
| русская мнемоника  = К max
| латинская мнемоника = K MAX
| группа              = [[сравнение]]
| число операндов    = [[двухместные операции|двухместная]]
| клавиши            = [[Клавиша К|{{Синяя клавиша|К}}]] [[Клавиша 9|{{Серая клавиша|9}}]]
| число шагов        = 1
| признак перезаписи  = сбрасывается
| первое появление    = [[МК-61]]
| время              = ?
| скорость            = ?
}}
Команда {{Синяя команда 2|К|max}} (лат. '''K MAX''') «Определение максимального значения» с кодом операции 36 сравнивает содержимое регистров [[RX|X]] и [[RY|Y]]. Если содержимое [[RY|регистра Y]] больше, чем содержимое [[RX|регистра X]], то происходит обмен содержимым регистров [[RX|X]] и [[RY|Y]]. Если содержимое [[RX|X]] больше или равно [[RY|Y]], то никаких действий не выполняется.


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


== Ссылки ==
== Ссылки ==
* [http://mk.semico.ru/mk_d11.htm#p8 Описание команды K max на сайте НПП «СЕМИКО»]
{{Документация|mk_d11.htm#p8|Описание команды K max приведено в «Описании системы команд» НПКД.401348.001 Д11, п. 8.1}}
 
[[Category:Все команды]]
[[Category:Команды ЭКВМ]]

Текущая версия от 05:07, 24 августа 2021

Команда К 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.»

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