0!

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

0! (обнулить, читается «ноль-присвоить») — фортовское слово Каллисто. Обнулить ячейку памяти.

0!             ( a −− )                             Обнулить. Записывает ноль в ячейку с адресом a.

Записывает число 0 в ячейку с адресом a.

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

В режиме NUM нажмите две клавиши  0   П 

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

Если адрес a указывает на байтовые регистры (от 11000 до 18167), запись нуля происходит в два соседних регистра, по адресу a и по адресу a+1.

2259 ;#ZeroStore
2260 ; 0!               ( a −− )                             Обнулить. Записывает ноль в ячейку с адресом a.
2261 ; Записывает число 0 в ячейку с адресом a. Может обнулять десятичные регистры, но не регистры функций.
2262 LZSTORE:        .DB     2
2263                 .TEXT   "0!"                    ; ( адрес −− )
2264                 .DW     LSTORE
2265 ZSTORE:         .DW     JZSTORE
2266 JZSTORE:        RM3 M8 1 + M3
2267                 KRM8 1 EE 4 −  KX>=09           ; Защита от записи в память программ
2268                 M8 M5 1000 −  FX>=0 ZSTORE1     ; 1000 быстрее, чем 1 ВП 3
2269                 Cx KM8 KM5 KGOTO9               ; Обнулить двоичную ячейку
2270 ZSTORE1:        Cx KM8 KGOTO9                   ; Обнулить десятичный регистр

Реализация из SP-Forth 4.20:

CODE 0! ( A -> )
     MOV DWORD [EAX], # 0 
     MOV EAX, [EBP]
     LEA EBP, 4 [EBP]
     RET
END-CODE
…
: OFF     0! ;

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

Удобное слово 0! взято из ФОРТ-ЕС. Вот его описание и определение:

0!      *    А-> ЗАСЛАТЬ НУЛЬ ПО АДРЕСУ А                      11

                     Экран номер 11
( 31.03.86      !  0!  @  С!  С@  , С, EXECUTE )

: 0!  ( A-> )   0 SWAP ! ;

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


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


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