(NEXT): различия между версиями

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


== Реализация ==
== Реализация ==
Для реализации цикла со счётчиком в ФОРТ-ЕС служили [[примитив]]ы (LOOP) и (+LOOP)
Для реализации цикла со счётчиком в ФОРТ-ЕС и FORTH ИТЭФ служили [[примитив]]ы (LOOP) и (+LOOP)


Вот их описания и определения:
Вот их описания и определения из ФОРТ-ЕС:
<PRE>
<PRE>
   (+LOOP)  * N->                    ТЕСТ НА ЗАВЕРШЕНИЕ ЦИКЛА "DO +LOOP"  5
   (+LOOP)  * N->                    ТЕСТ НА ЗАВЕРШЕНИЕ ЦИКЛА "DO +LOOP"  5
Строка 31: Строка 31:
</PRE>
</PRE>


В FORTH ИТЭФ есть такие же [[примитив]]ы (LOOP) и (+LOOP)
Определения из FORTH ИТЭФ:
 
Вот их определение, метку CNT см. в определении слова [[BRANCH]]:
<PRE>
<PRE>
  CNT:      ADD  SI,  [SI]
            NEXT
            ...
             HEAD    206Q,'(LOOP',251Q,XLOOP              ; (LOOP)
             HEAD    206Q,'(LOOP',251Q,XLOOP              ; (LOOP)
   ; Приращение индекса цикла LOOP и может быть  ветвление
   ; Приращение индекса цикла LOOP и может быть  ветвление

Версия от 02:34, 3 апреля 2016

(NEXT) — стандартное слово Каллисто, лишённое заголовка.

Конец цикла со счётчиком в шитом коде.

Это служебное слово, которое компилирует в шитый код слово NEXT. Нет ни малейшей необходимости использовать слово (NEXT) в прикладных программах, поэтому слово (NEXT) было лишено заголовка.

Ввод слова (NEXT)

В режиме NUM последовательно нажмите клавиши  ШГ→     Р-ГРД-Г   4   ИП   0   2     P   ШГ← 

Реализация

Для реализации цикла со счётчиком в ФОРТ-ЕС и FORTH ИТЭФ служили примитивы (LOOP) и (+LOOP)

Вот их описания и определения из ФОРТ-ЕС:

  (+LOOP)   * N->                    ТЕСТ НА ЗАВЕРШЕНИЕ ЦИКЛА "DO +LOOP"   5
                                                               С ШАГОМ N
  (LOOP)    * ->                      ТЕСТ НА ЗАВЕРШЕНИЕ ЦИКЛА "DO LOOP"   5

                      Экран номер 5
( 09.09.86  BRANCH  ?BRANCH  (LOOP/  (+LOOP/ )

CODE  BRANCH  M: ВRANСН#
 RI 0 (, RI RFORTH LH,    RI RMASK  NR,      RNEXT BR,

CODE  (LOOP)  RW1 1 LA,   1 =F B,
CODE (+LOOP)  RW1 POP,
1 =H  0 RFIRST LH,   0 RSECOND SH,   0 RMASK NR,
      0 RW1 AR,      RW1 RFIRST AH,  RW1 RFIRST STH,
      0 RMASK  CLR,   BRANCH# BNH,   RRET 6 (, 0 RRET LA,
      RI RTWO AR,  RNEXT BR,   END-CODE

Определения из FORTH ИТЭФ:

   CNT:      ADD   SI,  [SI]
             NEXT
             ...
             HEAD    206Q,'(LOOP',251Q,XLOOP              ; (LOOP)
   ; Приращение индекса цикла LOOP и может быть  ветвление
             INC   WORD PTR  [BP]
   LOP:      MOV   AX,  [BP]
             CHP   AX,  2[BP]
             JL    CNT
   LV:       ADD   BP,  4
             ADD   SI,  2
             NEXT

             HEAD    207Q,'(+LOOP',251Q,XPLOO             ; (+LOOP)
             POP   AX
             ADD   [BP],   AX
             CMP   AX, 0
             JL    $LESS
             JMP   LOP
   $LESS:    MOV   CX, [BP]   ; Работа с отрицательными приращениями
             CMP   [BP]+2, CX
             JLE   LV
             JMP   CNT


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


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