Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| '''|X|''' (абсолютное значение) — традиционное слово [[Каллисто]]. Вычисление модуля. | | '''|X|''' — стандартное слово [[Каллисто]]. |
| |X| ( x −− p ) Вычисление модуля. p := |x|
| |
| p — абсолютная величина числа x, т.е. тоже значение числа, но непременно положительное.
| |
| | |
| Для нуля и положительных чисел p=x, для отрицательных чисел p=−x.
| |
| | |
| == Ввод слова |X| ==
| |
| В [[Режим NUM|режиме NUM]] последовательно нажмите клавиши [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]] [[Клавиша Р-ГРД-Г|{{Чёрная клавиша|Р-ГРД-Г}}]] [[Клавиша 0|{{Серая клавиша|0}}]] [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша П|{{Чёрная клавиша|П}}]]
| |
| | |
| == ABS и FABS в стандарте ANS Forth ==
| |
| <PRE>
| |
| 6.1.0690 ABS "abs" CORE
| |
| ( n -- u )
| |
| u - абсолютное значение n.
| |
| | |
| 12.6.2.1474 FABS "f-abs" FLOATING EXT
| |
| ( F: r1 -- r2 ) or ( r1 -- r2 )
| |
| r2 - абсолютное значение r1.
| |
| </PRE>
| |
| | |
| == История ==
| |
| В отличие от Форта-83, в [[Каллисто]] абсолютная величина -32768 равна 32768.
| |
| | |
| В [[Каллисто]] имя |X| восходит к надписи на клавиатуре советского ПМК [[Электроника МК-61|«Электроника МК-61»]], выпущенного в 1984 году.
| |
| | |
| Аналогичное слово во всех стандартах Форта, начиная с 1979 года, называется ABS. Также каллистянское |X| выполняет роль стандартного слова FABS
| |
| | |
| === ABS в предыдущем стандарте Forth-83 (англ.) ===
| |
| ABS n -- u 79 "absolute"
| |
| u is the absolute value of n. If n is -32,768 then u is the
| |
| same value. See: "arithmetic, two's complement"
| |
| | |
| === ABS в стандарте Forth-79 (англ.) ===
| |
| ABS n1 -- n1 108 "absolute"
| |
| Leave the absolute value of a number.
| |
| | |
| === ABS в fig-FORTH Release 1 glossary, май 1979 (англ.) ===
| |
| ABS n --- u L0
| |
| Leave the absolute value of n as u.
| |
| | |
| == Реализация ==
| |
| В [[Каллисто|Каллисто 1.0]] слово |X| является «обёрткой» вокруг команды ЭКВМ [[K ABS|К |x|]]:
| |
| <pre>
| |
| 1453 ;#ABS
| |
| 1454 ; |X| ( x −− p ) Вычислить модуль. p := |x|
| |
| 1455 LABS: .DB 3
| |
| 1456 .TEXT "|X|" ; ( x −− |x| )
| |
| 1457 .DW LSTOD
| |
| 1458 ABS: .DW JABS ; Получить абсолютное значение.
| |
| 1459 JABS: PKRM03 KABS PKM03 KGOTO9 ; Обёртка вокруг K |x|
| |
| </pre>
| |
| Реализации из SP-Forth 4.20:
| |
| <pre>
| |
| CODE ABS ( n -- u ) \ 94
| |
| \ u - абсолютная величина n.
| |
| MOV ECX, EAX
| |
| SAR ECX, 1F
| |
| XOR EAX, ECX
| |
| SUB EAX, ECX
| |
| RET
| |
| END-CODE
| |
| </pre>
| |
| <pre>
| |
| CODE FABS
| |
| FABS
| |
| RET
| |
| END-CODE
| |
| </pre>
| |
| | |
| === Советская реализация ===
| |
| У Баранова-Ноздрунова приводится следующее определение слова |X| (стр. 28):
| |
| : |X| ( A ---> абс A ) ↑ 0< IF /−/ THEN ;
| |
| | |
| Слово |X| в ядре ФОРТ-ЕС работало лишь с целыми числами. Оно называлось ABS и определено через арифметику числовых пар, отсутствующую в [[Каллисто]]:
| |
| <PRE>
| |
| ABS N1->N2 АБСОЛЮТНАЯ ВЕЛИЧИНА 17
| |
| | |
| Экран номер 17
| |
| ( 31.03.86 NEGATE ABS + - 1+ 1- 2+ 2- +! 1+! )
| |
| | |
| : ABS ( N1->+N2) S>D DABS DROP ;
| |
| </PRE>
| |
| В FORTH ИТЭФ слово |X| также называлось ABS, работало с целыми и было [[примитив]]ом. Вот его определение:
| |
| <PRE>
| |
| HEAD 203Q,'AB',323Q,ABS ; ABS
| |
| POP AX
| |
| CMP AX, 0
| |
| JNS AB
| |
| NEG AX
| |
| AB: PUSH AX
| |
| NEXT
| |
| </PRE>
| |
| | |
| == Ссылки ==
| |
| * {{Исходник|ABS||X|}}
| |
| * См. слово [[ЗН]]
| |
| * [http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D0%BE%D0%BB%D1%8E%D1%82%D0%BD%D0%B0%D1%8F_%D0%B2%D0%B5%D0%BB%D0%B8%D1%87%D0%B8%D0%BD%D0%B0 Абсолютная величина в Википедии]
| |
| * Слова [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0690 ABS (abs)] и [http://forth.sourceforge.net/standard/dpans/dpans12.htm#12.6.2.1474 FABS (f-abs) ] в стандарте ANS Forth ''(англ.)''
| |
| * Слова [http://forth-standard.org/standard/core/ABS ABS (abs)] и [http://forth-standard.org/standard/float/FABS FABS (f-abs)] в черновике 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] ''(англ.)''
| |
| | |
|
| |
|
| {{нет иллюстраций}} | | {{нет иллюстраций}} |
| {{заготовка}} | | {{заготовка}} |
| [[Категория:Слова Каллисто]] | | [[Категория:Слова Каллисто]] |
| [[Категория:Примитивы]]
| |
| [[Категория:Арифметические операции Каллисто]] | | [[Категория:Арифметические операции Каллисто]] |
| [[Категория:Одноместные операции Каллисто]] | | [[Категория:Одноместные операции Каллисто]] |
| [[Категория:Традиционные слова]]
| |
| [[Категория:Адаптированные слова]]
| |