К max: различия между версиями
AtH (обсуждение | вклад) (Новая страница: «Команда '''K max''' с кодом операции 36 сравнивает содержимое регистров X и Y. Если содержимое р…») |
AtH (обсуждение | вклад) |
||
(не показано 27 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
Команда '''K | {{Врезка-команда | ||
| мнемоника = К 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''' большее из чисел, содержащихся в регистрах [[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.» | |||
== Ссылки == | == Ссылки == | ||
{{Документация|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.»