UPPER

Материал из ПМК вики
Перейти к навигации Перейти к поиску

UPPER — фортовское слово Каллисто. Делает все буквы в строке заглавными.

UPPER          ( a u −− )                           Перевести в верхний регистр u литер по адресу a.

Перевести строку символов по адресу a длиной u в верхний регистр. Литеры, не являющиеся строчными буквами, сохраняют свои значения.

Ввод слова UPPER[править]

В режиме ЛАТ последовательно нажмите клавиши  3   6   6   ИП   × 

Реализация[править]

2406 ;#UPPER
2407 ; UPPER            ( a u −− )                           Перевести в верхний регистр u литер по адресу a.
2408 LUPPER:         .DB     5
2409                 .TEXT   "UPPER"
2410                 .DW     LDTRAI
2411 UPPER:          .DW     JUPPER                  ; Перевести строку литер в верхний регистр.
2412 JUPPER:         RM3 M8 1 + MA 1 + M3
2413                 KRM8 M0 +/−  KX<09
2414                 KRMA 10001 −  KX>=09  M5
2415 UPPERL:         KRM5
2416                 97 −  PX>=0 UPPER2              ; 'a'
2417                 26 −  PX>=0 UPPER3              ; 'z'−96
2418                 37 −  PX>=0 UPPER2              ; 'а'−123
2419                 16 −  PX>=0 UPPER4              ; 'п'−159
2420                 48 −  FX>=0 UPPER2              ; 'р'−176
2421                 16 −  FX>=0 UPPER6              ; 'я'−223
2422                 1 −  FX=0 UPPER2                ; 'ё'−241
2423                 240  GOTO UPPER5                ; 'Ё'
2424 UPPER6:         160  GOTO UPPER7                ; 'Р'+16
2425 UPPER4:         144                             ; 'А'+16
2426                 .DB 0f9H                        ; PX>=0 aka PGOTO UPPER7, пропустить 2 шага
2427 UPPER3:         91                              ; 'A'+26
2428 UPPER7:         +
2429 UPPER5:         PKM05
2430 UPPER2:         PFL0 UPPERL
2431 UPPERR:         KGOTO9

Советская реализация[править]

В FORTH ИТЭФ слово UPPER было примитивом, вот его определение:

            HEAD     205Q,'UPPE',3220,UPPER               ; UPPER
            POP  CX
            POP  BX
   $COMP:   CMP  BYTE PTR [BX],  141Q
            JL   OFLIM
            CMP  BYTE PTR [BX],  172Q
            JG   OFLIM
            AND  [BX],   177737Q
   OFLIM:   INC  BX
            LOOP $COMP
            NEXT

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


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.