Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''MIN''' (минимум) — стандартное слово [[Каллисто]]. Нахождение меньшего из двух [[Десятичное число|чисел]]. | | '''MIN''' — стандартное слово [[Каллисто]]. |
| MIN ( y x −− x1 ) Нахождение меньшего из двух чисел.
| |
| x1 := min (x, y)
| |
| [[Файл:CallistoMAXMIN2DUP.png|thumb|right|264px|Пример работы слова MIN]]
| |
| Слово MIN засылает в [[Стек данных|стек]] [[Десятичное число|число]] x1, которое является наименьшим из двух [[Десятичное число|чисел]] x и y.
| |
|
| |
|
| == Ввод слова MIN ==
| | Выделение минимума из двух чисел. |
| В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите три белые клавиши [[Клавиша ÷|{{Серая клавиша|÷}}]] [[Клавиша 7|{{Серая клавиша|7}}]] [[Клавиша 4|{{Серая клавиша|4}}]]
| |
|
| |
|
| == MIN и FMIN в стандарте ANS Forth == | | |
| <PRE>
| | == MIN в стандарте ANS Forth == |
| 6.1.1880 MIN CORE | | 6.1.1880 MIN CORE |
| ( n1 n2 -- n3 ) | | ( n1 n2 -- n3 ) |
| n3 меньшее из n1 и n2. | | n3 меньшее из n1 и n2. |
|
| |
|
| 12.6.1.1565 FMIN "f-min" FLOATING
| |
| ( F: r1 r2 -- r3 ) or ( r1 r2 -- r3 )
| |
| r3 меньшее из r1 и r2.
| |
| </PRE>
| |
|
| |
| == История ==
| |
| === MIN в предыдущем стандарте Forth-83 (англ.) ===
| |
| MIN n1 n2 -- n3 79 "min"
| |
| n3 is the lesser of n1 and n2 according to the operation of
| |
| < .
| |
|
| |
| === MIN в стандарте Forth-79 (англ.) ===
| |
| MIN n1 n2 -- n3 127 "min"
| |
| Leave the lesser of two numbers.
| |
|
| |
| === MIN в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
| |
| MIN n1 n2 --- min L0
| |
| Leave the smaller of two numbers.
| |
|
| |
| == Реализация ==
| |
| В [[Каллисто|Каллисто 1.0]] слово MIN является «обёрткой» вокруг команды ЭКВМ [[К max]]:
| |
| <pre>
| |
| 1542 ;#MIN
| |
| 1543 ; MIN ( y x −− x1 ) Меньшее из двух чисел. x1 := min (x, y)
| |
| 1544 LMIN: .DB 3
| |
| 1545 .TEXT "MIN" ; ( a b −− min )
| |
| 1546 .DW LINVERT
| |
| 1547 MIN: .DW JMIN
| |
| 1548 JMIN: RM3 MB 1 + MA M3
| |
| 1549 KRMB KRMA KMAX <−> KMA ; Выделить минимум, обёртка вокруг K MAX (МК−161).
| |
| 1550 KGOTO9
| |
| </pre>
| |
| Реализации из SP-Forth 4.20:
| |
| <pre>
| |
| CODE MIN ( n1 n2 -- n3 ) \ 94
| |
| \ n3 - меньшее из n1 и n2.
| |
| ARCH-P6 [IF]
| |
| MOV EDX, [EBP]
| |
| CMP EDX, EAX
| |
| CMOVL EAX, EDX
| |
| [ELSE]
| |
| CMP EAX, [EBP]
| |
| JG # ' DROP
| |
| [THEN]
| |
| LEA EBP, 4 [EBP]
| |
| RET
| |
| END-CODE
| |
| </pre>
| |
| <pre>
| |
| CODE FMIN \ *
| |
| MOV EBX, EAX
| |
| FCOM
| |
| FSTSW EAX
| |
| SAHF
| |
| JA SHORT @@1
| |
| FXCH
| |
| @@1: FFREE ST
| |
| FINCSTP
| |
| MOV EAX, EBX
| |
| RET
| |
| END-CODE
| |
| </pre>
| |
|
| |
| === Советская реализация ===
| |
| Слово MIN в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение:
| |
| <PRE>
| |
| MIN N1,N2->N3 МЕНЬШЕЕ ИЗ ЧИСЕЛ N1 И N2 22
| |
|
| |
| Экран номер 22
| |
| ( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)
| |
|
| |
| CODE MIN ( N1,N2->N3 ) 14 LHRW12 BAL, RW1 RW2 CR,
| |
| POP BNH, RW1 RW2 LR, POPPUT1 B, END-CODE
| |
| </PRE>
| |
|
| |
| В FORTH ИТЭФ слово MIN также было [[примитив]]ом, вот его определение:
| |
| <PRE>
| |
| HEAD 203Q,'MI',316Q,MIN ; MIN
| |
| POP AX
| |
| POP CX
| |
| CMP CX, AX
| |
| JL DEEP
| |
| TOP: PUSH AX
| |
| NEXT
| |
| DEEP: PUSH CX
| |
| NEXT
| |
| </PRE>
| |
|
| |
|
| == Ссылки == | | == Ссылки == |
| * {{Исходник|MIN|MIN}} | | * [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1880 Слово MIN в стандарте ANS Forth] ''(англ.)'' |
| * См. слово [[MAX]]
| | * [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1565 Слово FMIN (f-min) в стандарте ANS Forth] ''(англ.)'' |
| * Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.1880 MIN] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.1.1565 FMIN (f-min)] в стандарте ANS Forth ''(англ.)''
| | * [http://www.forth200x.org/documents/html/core.html#core:MIN Слово MIN в черновике Forth 200x] ''(англ.)'' |
| * Слова [http://forth-standard.org/standard/core/MIN MIN] и [http://forth-standard.org/standard/float/FMIN FMIN (f-min)] в черновике Forth 200x ''(англ.)'' | | * [http://www.forth200x.org/documents/html/float.html#floating:FMIN Слово FMIN (f-min) в черновике Forth 200x] ''(англ.)'' |
| * [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\05.OPERAZII%20NAD%20ZELYMI%20TISLAMI ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
| |
| * [http://www.forth.com/starting-forth/sf5/sf5.html The Philosophy of Fixed Point] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)'' | |
|
| |
|
|
| |
|
| | {{нет иллюстраций}} |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Математические функции Каллисто]] | | [[Категория:Математические функции Каллисто]] |
| [[Категория:Стандартные слова]]
| |
| [[Категория:1994 CORE]]
| |
| [[Категория:2012 CORE]]
| |