Редактирование:
FILL
(раздел)
Перейти к навигации
Перейти к поиску
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
== Реализация == <pre> 2000 ;#FILL 2001 ; FILL ( a U c −− ) Заполнить. Записать U байтов c, начиная с адреса a. 2002 ; Записать U байт c в память начиная с адреса a 2003 ; Заполнить массив памяти идентичными литерами. 2004 ; а − адрес первого байта памяти, куда будет засылаться байт c 2005 ; U − число заполняемых байтов 2006 ; Подразумевается, что граница памяти программ и данных не пересекается. 2007 LFILL: .DB 4 2008 .TEXT "FILL" ; ( куда сколько что −− ) 2009 .DW LCMOVEG 2010 FILL: .DW JFILL 2011 JFILL: PKRM03 MB ; Литера 2012 RM3 1 + 2013 JFILL2: M8 1 + MA 1 + M3 2014 KRM8 M0 +/− KX<09 ; Счётчик литер 2015 KRMA 1 EE 4 − KX>=09 1 − M5 RMB 2016 FILL1: KM5 FL0 FILL1 2017 KGOTO9 </pre> Реализация из SP-Forth 4.20: <pre> CODE FILL ( c-addr u char -- ) \ 94 \ Если u больше нуля, заслать char в u байтов по адресу c-addr. MOV EDX, EDI MOV ECX, [EBP] MOV EDI, 4 [EBP] CLD \ можем ли заполнять DWORD? MOV EBX, ECX AND EBX, # 3 JNZ @@1 \ низя \ сформируем DWORD MOV EBX, EAX SHL EAX, # 8 OR EAX, EBX SHL EAX, # 8 OR EAX, EBX SHL EAX, # 8 OR EAX, EBX MOV EBX, ECX SAR ECX, # 2 REP STOS DWORD MOV ECX, EBX AND ECX, # 3 @@1: REP STOS BYTE MOV EDI, EDX LEA EBP, 0C [EBP] MOV EAX, -4 [EBP] RET END-CODE </pre> === Советская реализация === Описание и определение слова FILL в ядре ФОРТ-ЕС: <PRE> FILL A,U,C-> ЗАСЛАТЬ С В U БАЙТОВ ПО АДРЕСУ А 22 Экран номер 22 ( 31.03.86 FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL) : FILL ( A,U,C->) SWAP ?DUP IF >R OVER C! DUP 1+ R> 1- CMOVE EXIT THEN 2DROP ; </PRE> В FORTH ИТЭФ слово FILL было [[примитив]]ом, который частично опирался на код [[примитив]]а [[DROP]], вот их определения: <PRE> HEAD 204Q,'DRO',320Q,DROP ; DROP DRP: ADD SP, 2 NEXT ... HEAD 204Q,'FIL',314Q,FILL ; FILL POP AX ; Символ FLL: POP CX ; Счетчик символов CMP CX, 0 JLE DRP ; POP BX $REPE: MOV BYTE PTR [BX], AL INC BX LOOP $REPE NEXT </PRE>
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
Pmkwiki:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:
Отменить
Справка по редактированию
(в новом окне)
Навигация
Персональные инструменты
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Пространства имён
Статья
Обсуждение
русский
Просмотры
Читать
Править
История
Ещё
Поиск
Навигация
Заглавная страница
Свежие правки
Случайная страница
Справка по MediaWiki
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице