|
Переменные.
Артикул | Наименование | Цена, от | ToVar32 | | Складывает переменные-32. Вых EAX=Var1. | ToVar32, Var1, Var2 | | | SapVarDat | | Поиск / добавление вниз к переменной Var1 числа Dat32, Вых: при JZ=1 (есть совпадение): позиция32= EAX, адрес= EBX | SapVarDat, Var1, Dat32 | На основе функции VarSeaDat. | | VarSupDat32 | | Поиск Dat32 в переменной Var1 и при несовпадении добавление Dat32 в конец. Вых: найденный/последний индекс= EAX (0,1...), признак JZ=1 есть совпадение; Портит регистр EAX, EBX. | VarSupDat32, Var1, Dat32 | Почти аналог старой функции SapVarDat | | SupVar | | Добавляет число Dat32 в начало переменной Var1. Совпадения Dat32 удаляются. Данные за LnMax1 (=0,1,2,...) удаляются. Портит регистр EAX, EBX. Вых: Счетчик числа совпадений= EAX, признак Z=0: нет совпадений. | SupVar, Var1, LnMax1, Dat32 | Функция не самая быстрая, переписывает всю переменную по 32 бита, затем, копирует обратно. Может использоваться для хранения списка ссылок. | | SapVarNotDat | | Поиск совпадения Dat32 в переменной Var1, если не найдено: поиск DatR32 и замена его на Dat32, если не найдено: добавление Dat32 к концу переменной. Вых: позиция32= EAX, адрес= EBX, признак Z=1 есть совпадение. Не портит регистры. | SapVarNotDat, Var1, Dat32, DatR32 | Ищет Dat32. Если находит- выход. Если нет - добавляет Dat32 сперва на "пустое место", заменяя число DatR32 (для экономии ресурсов), если DatR32 нет - в конец переменной. Удобно при динамическом добавлении и удалении данных. | | VarSeaDat | | Поиск 1-го совпадения Dat32 в переменной Var1. Портит регистр EAX, EBX. Вых: позиция32= EAX, адрес= EBX, признак Z=1 есть совпадение | VarSeaDat, Var1, Dat32 | | | VarRevSeaDat | | Реверсивный поиск 1-го совпадения Dat32 с конца переменной Var1. Портит регистр EAX, EBX. Вых: позиция32 от конца = EAX, адрес= EBX, признак Z=1 есть совпадение. | VarRevSeaDat, Var1, Dat32 | | | VarSeaNotDat | | Поиск 1-го несовпадения Dat32 в переменной Var1. Портит регистр EAX, EBX, ECX. Вых: позиция32= EAX, адрес= EBX, найденное число = ECX, признак NZ=1 есть несовпадение. | VarSeaNotDat, Var1, DatR32 | Фактически, находит 1-е непустое (неравное DatR32) число. | | VarRemNotDat | | Поиск 1-го несовпадения DatR32 и замена его на DatR32 в переменной Var1, Вых: позиция32= EAX, адрес= EBX, найденное число = ECX, признак NZ=1 есть несовпадение. Портит регистр EAX, EBX, ECX. | VarRemNotDat, Var1, DatR32 | Как-бы вырезает 1-е непустое число (неравное DatR32) и заменяет его пустым (= DatR32). | | VarRemDat | | Поиск и замена Dat32 на DatR32 в переменной Var1, Вых: при JZ=1 (есть совпадение): позиция32= EAX, адрес= EBX. | VarRemDat, Var1, Dat32, DatR32 | Удаляет непустое число (неравное DatR32) путем замены его пустым (DatR32). | | VarDfrDat | | Удаление всех DatR32 из переменной Var1. Вых: длина32= EAX, JZ=1 при EAX=0. | VarDfrDat, Var1, DatR32 | Удаляет "пустые" числа DatR32, укорачивая излишки длины. | | VarRemDfrDat | | Поиск и замена Dat32 на DatR32 в переменной Var1, при совпадении - удаление всех DatR32 из переменной Var1. Вых: при JZ=1 (есть совпадение): EAX = новая длина32. | VarRemDfrDat, Var1, Dat32, DatR32 | Удаляет непустое число (неравное DatR32) путем замены его пустым (DatR32). Затем (если DatR32 найдено и удалено), даляет "пустые" числа DatR32, укорачивая излишки длины. | | ArrRemDfrDat | | Поиск и замена Dat32 на DatR32 в строках Arr1, при совпадении - удаление всех DatR32 из строки. Вых: EAX = число строк с совпадениями, при JZ нет совпадений. | ArrRemDfrDat, Arr1, Dat32, DatR32 | В строках списка данных удаляет непустые числа DatR32 (не равное DatR32) путем замены его пустым (DatR32). Затем (если DatR32 найдено и удалено), даляет "пустые" числа DatR32, укорачивая излишки длины. | | SapRevVarNotDat64 | | Реверсивный поиск совпадения Dat32 с конца переменной Var1, если найдено - выход, если не найдено: поиск DatR32 и замена его на Dat32, тут же пишем Dat32_1, если не найдено: добавление Dat32 и Dat32_1 к концу переменной. Значение свободного ключа - DatR32. Вых. EBX=0 или JZ - Ключ найден (EAX=адрес Dat32_1), EBX=1 - Ключ вставлен вместо свободного DatR32 (EAX=адрес Dat32_1), EBX=2 - Ключ добавлен вниз (EAX не определен). Портит регистры EAX, EBX, ECX. | SapRevVarNotDat64, Var1, DatR32, Dat32, Dat32_1 | Добавление уникального ключа и ассоциативных данных в базу. | | VarRevSeaDat64 | | Реверсивный поиск 1-го совпадения ключа Dat32 с конца переменной Var1. Портит регистр EAX, EBX. Вых: адрес данных (ключ+4)= EAX, позиция64 от конца = EBX, признак Z=1 есть совпадение. | VarRevSeaDat64, Var1, Dat32 | Поиск в базе ассоциативных данных по ключу. | | VarRevRemNotDat64 | | Реверсивный поиск 1-го несовпадения с конца переменной Var1 числа DatR32 с ключом и замена его на DatR32, Вых: убитый ключ Dat32= EAX, Адрес данных Dat32_1= EBX, признак NZ=1 есть несовпадение. Портит регистр EAX, EBX, ECX. | VarRevRemNotDat64, Var1, DatR32 | Поиск в базе 1-го непустого ключа и его вырезание (замена на пустое DatR32) (без удаления ассоциативных данных). | | VarRevSeaNotDat64 | | Реверсивный поиск 1-го несовпадения DatR32 с конца переменной Var1. Портит регистр EAX, EBX, ECX. Вых: Адрес ключа Dat32= EAX, Адрес данных Dat32_1= EBX, признак NZ=1 есть несовпадение. | VarRevSeaNotDat64, Var1, DatR32 | Поиск в базе 1-го непустого ключа. | | VarDefCod | | Определение кодировки первого символа Var1: в латиницу EAX=1, кириллицу EAX=2, расширенную еврокодировку EAX=3, цифры EAX=4, прочее EAX=0. Ошибка, пустая переменная JL. | VarDefCod, Var1 | На основе макроса DefCod32. | | VarMixCod | | Определение количества разных кодировок символов Var1. Результат в EAX. Ошибка, пустая переменная JL. 1 кодировка =JZ. Несколько кодировок =JG. | VarMixCod, Var1 | На основе макроса DefCod32. | | VarHighCod | | Определение заглавного первого символа Var1. EAX=1, JG - буква заглавная. JZ - не найдено. | VarHighCod, Var1 | На основе макроса HighLow. | | VarChange | | Взаимный обмен объектов на основе переменной (Var, Arr, Drr и т.д.) с сохранением адресов. | VarChange, Var1, Var2 | На основе трех макросов VarCopy. | | RunStr | | Бегущая строка: Добавление Dat1 в конец Var1 при длине>=LnMax сдвиг влево на Stp1 (1.2.4) старые: EAX=+4й байт, EBX=0й байт, ECX=новая длина . JL - неполная длина строки | RunStr, Var1, Stp1, LnMax, Data1 | На основе функции VarMovLeft. | | RunVar4 | | Бегущая переменная Var1, шаг 4 бит, макс длина 4*Ln4, добавляем в конец Var1 число 32 бит Dat1. Вых. EAX - удаленные данные. JL не заполнена, JZ - только заполнилась, JG - идёт сдвиг. | RunVar4, Var1, Ln4, Dat1 | Переменная сдвигается влево в начало быстро, в один цикл, затем, данные добавляются в конец. Если длина не превышена, данные просто дописываются. | | CirclePn | | Получение текущих параметров, а затем-передвижеие по кругу текущих параметров, EAX=текущ адрес, EBX=текущ длина | CirclePn, Var1, Stp1 | | | VarEquLen | | Дописывает/создает в Var2 длиной, равной длине Var1 число Dat1 с шагом Stp1(1,2,4)вых EAX=Var2/0 при ошибке | VarEquLen, Var2, Var1, Dat1, Stp1 | | | PintFromTxt | | Перевод в Var2=EAX(Pint32) из Var1 (UTF16) | PintFromTxt, Var1 | На основе макросов StartVR и VarEAX4. | | PintToTxt | | Перевод в Var2=EAX(UTF16) из Var1(Pint32), VarBom/0- заголовок, если он есть | PintToTxt, VarBom, Var1 | | | VisEle | | Добавление элемента по адр. ADRN1 в Var1 (UNICODE) согласно его формата | VisEle, ADRN1, Var1 | | | FPUDEC | | Добавление DEC формата FPU/TBYTE в Var1 (UNICODE) | VisEle, ADRN1, Var1 | Устаревшая функция. | | VarPlusDec | | Добавление неформатированного десятичного числа без левых нулей (UNICODE) в Var1 | VarPlusDec, Var1, N32 | Устаревшая функция. | | VarDec | | Добавление форматированного десятичного числа (UNICODE) в Var1 | VarDec, Var1, Dta | Устаревшая функция. | | VARHEX | | Добавляет к переменной HEX-значение Dta | VARHEX, Var1, Dta | | | HexDec32 | | Преобразует текстовое-32 целое десятичное число со знаком из Var1 в EAX=HEX32. Поиск с конца переменной. JL - Ошибка, переменная некорректна, меньше 4 байт. Портит EBX, EAX. | HexDec32, Var1 | Проверена от 0 до 2759 | | HexDecS | | Преобразует текстовое-32 целое десятичное число со знаком из Var1 в EAX=HEX32. Поиск с конца переменной в пределах Dat32 знаков. Портит EBX, EAX. | HexDecS, Var1, Dat32 | | | VarCompatCopy | | Копирование элементов-32 переменных одинаковой длины Var2 в Var1. Не портит регистры совсем. | VarCompatCopy, Var1, Var2 | На основе сдвоенного цикла. Быстрое копирование. | | CheckSum | | Контрольная сумма с циклическим сдвигом в EAX. JL - ошибка. | CheckSum, Var1 | Цикл на макросе StartVR. Эффективная функция. | | VarNumSel | | Выделяет из строки-32 Var1 только цифры, одну точку или запятую внутри них в созданную новую переменную в EAX, JZ - нет совпадения. | VarNumSel Var1 | На прямом цикле макроса StartVR. Эффективная функция. | | VarInNextPN | | Поиск следующ.вхождения Var2 в Var1 с текущих параметров до стоп-адр.StpAdr. Вых: EAX: Длина до вхождения (Var1), EBX: Адрес вхождения (Var1), ECX: 0= Нет вхождений, досижение стоп-адреса, ESI: Адрес за вхождением (Var1). | VarInNextPN, StpAdr, Var1, Var2 | | | VarInVar8 | | Длина за вхождением 8-битных Var2 в Var1 (1,2,...). Результат в EAX, JZ - нет вхождения. | VarInVar8, Var1, Var2 | Для прохода Var1 используется макрос StartVR с шагом 1 и функция VarInVar8. Например, если 4-байтная Var2 вошла с начала Var1, получим результат 4. Допустимо использовать ту же переменную Var1, Var1. | | ProgrMx | | Создает матрицу значений 0,1,2...MxLen (вых: EAX=адрес матрицы) | ProgrMx, MxELen | | | VarDisPN | | Делит переменную Var1 надвое по текущим параметрам | VarDisPN, Var1, Var2 | | | VarLeftPN | | Оставляет левую часть, не включая текущие параметры | VarLeftPN, Var1 | Быстро обрезает саму переменную, не делая копии и без перезаписи. | | PlusVar | | Var1= Var2+Var1 | PlusVar, Var1, Var2 | | | PlusVar32 | | Обратное сложение: Var1= Var2 + Var1. При Var2=0 ничего не происходит. | PlusVar32, Var1, Var2 | | | VarPlusQVar32 | | Добавление Var2 к Var1 Qlt1 раз. | VarPlusQVar32 Var1, Var2, Qlt1 | На основе макроса VarPlus32 . | | VarTab32 | | Добавляет к Var1 "табуляцию" - Var3 в количестве 8-len(Var2). | VarTab32 Var1, Var2, Var3 | На основе функции VarPlusQVar32. | | StriComVar | | Сравнение строк-32, как чисел. Вых. EAX=1, JNZ (Var1>Var2). EAX=0 (Var2>=Var1). | StriComVar, Var1, Var2 | | | RevComVar | | Реверсивное сравнение переменных-32, как чисел. Вых. JNZ (Var1>Var2). | RevComVar, Var1, Var2 | Используется сдвоенный реверсивный цикл. | | VarRep | | Замена вхождений VarFr в Var1 на VarTo, выход - в EAX | VarRep, Var1, VarFr, VarTo | | | RemEquSym32 | | Сравнение и замена в Var1 при Flg1=1 совпадающих, при Flg1=0 несовпадающих соответствующих символов-32 в Var2 на Dat32, EAX - число замен, портит EAX, JL - ошибка, нет вхождения. | RemEquSym32, Var1, Var2, Dat32 | На основе сдвоенного цикла. Заменяет одинаковые или неодинаковые соответствующие символы. Работает в зоне наименьшей переменной, остальное не изменяет. Напоминает глаз лягушки FrogEye. | | FixVar | | Поиск вхождения Var2 в Var1 по адресу Adr1.Вых: EAX: Адрес за вхождением (Var1); 0= Нет вхождения, EBX: Длина Var2, ECX: 0= Достижение стоп-адреса | FixVar, Var1, Var2, Adr1 | На основе макроса VarPos. | | StepPn | | Получение текущих параметров, а затем-увеличение четного адреса переменной Var1 на Stp1 от текущего в M0Pn/M0Lx. Последний адр не проходит | StepPn, Var1, Stp1 | | | StepPnRd | | Чтение с текущих параметров, а затем-увеличение адреса переменной Var1 на Stp1 (1,2,3,4) от текущего в M0Pn/M0Lx. Вых: EAX=знач по текущ адресу, EBX=след адр, JZ-конец переменной, портит только EAX, EBX. | StepPnRd, Var1, Stp1 | На основе макроса Rd4Adr. НЕ ВИДИТ КОНЕЦ ПРЕМЕННОЙ!!!!! Читает данные с произвольного места, без учета кратности. Используется для чтения переменных с некратными длинами шага (OpenBmp, Wav). | | ScanPn | | Увеличение четного адреса переменной Var1 на Stp1 от текущего в M0Pn/M0Lx. Проходит целиком всю переменную | ScanPn, Var1, Stp1 | | | ToUnic32 | | Добавление в Var2/0 текста в юникоде-32 из Var1 в кодировке CodePage. Если Var2 не существовала, создается новая. Вых. EAX - Var2. | ToUnic32, Var2, Var1, CodePage | Работает по кластерам, есть проблемы с кодировкой UTF8 (65001) для длинных переменных | | ToUnic | | Перевод текста Var1 в юникод | ToUnic, Var1, CodePage | | | FromUnic | | Перевод текста из Var1 (юникод) в Var2 (CodePage) | FromUnic, Var2, Var1, CodePage | | | DelLeft | | Удаляет левую часть произвольной длины Stp Var1 | DelLeft, Var1, Stp | На основе макросов VarPosPn, StartPN, VarEAX, VarCopy. | | VarMovLeft | | Быстро сдвигает влево на длину Stp1 (1,2,4,8), EAX-адр данных конечного шага | VarMovLeft, Var1, Stp1 | | | DelRight | | Удаляет правую часть длиной Stp | DelRight, Var1, Stp | На основе функции VarLeftPN. | | Right32 | | Добавляет в Var2/0 правую часть Var1 длиной Len32*4 байт. При Var2=0 заменяет саму Var1. Ошибка - JL. | Right32, Var2, Var1, Len32 | На основе цикла StartVR с макросом VarEAX4. Переменную любой длины проходит по циклу один раз. | | RubLenVar | | Обрезаем Var1 слева при длине, большей LnMx. Вых JLE- нет переполнения | RubLenVar, Var2, Var1, LnMx | | | PlusVarLeft | | Добавляет к Var1 первые Len32/4 байт Var2 (обрезка после Len32 символов). JL - ошибка. Портит EBX, EAX. | PlusVarLeft Var1, Var2, Len32 | На основе цикла StartVR с макросом VarEAX4. | | PlusVarRight | | Добавляет к Var1 первые Len-Len32/4 байт Var2 (обрезка последних Len32 символов). JL - ошибка. Регистры не портит. | PlusVarRight Var1, Var2, Len32 | На основе функции PlusVarLeft. | | FastVarPos32 | | Быстрая установка адреса переменной Var1 на позицию LnStr, Swc1-флаг, 1= установка M0Pn/M0Lx; вых: EAX=адрес данных, EBX=длина, JNZ-ошибка, запись в M0Pn/M0Lx. LnStr=0, 1, 2.. Быстрее работает вблизи точек M0Pn/M0Lx | FastVarPos32, Var1, LnStr, Swc1 | Требует предварительного сброса (установки адреса) переменной. Поиск осуществляет от точки последней установки, поэтому, вблизи этой точки работает быстро (последовательный доступ). | | VarRev | | Реверс строки с шагом Stp1 (4, 8), EAX-результат. Портит EAX. | VarRev, Var1, Stp1 | Шаги 1 и 2 были отключены 22.04.14! | | LoWord | | Опускает буквы из Var1 в нижний регистр (Var2 в EAX) | LoWord, Var1 | Устаревшая функция. | | Trim | | Удаляет по границам Var1 все совпадения с элементами Arr1 | Trim, Var1, Arr1 | Еще не функционирует | | VarPlusVal | | Добавление числа Val1 длиной Stp1 (1,2,4) Qlt1 раз | VarPlusVal, Var1, Val1, Stp1, Qlt1 | | | VarPlusLen | | Дописывает в Var1 неинициализированные данные-32 длиной Len32 путем добавления кластеров. Вых. EAX=число добавленных кластеров. | VarPlusLen Var1, Len32 | На основе макроса ClastPlus. | | VarFilVar | | "Заливает" в Var2 из Var1, кратно 4 байтам! | VarFilVar, Var2, Var1 | Для переноса каждого символа-32 используется вызов Next4Pn. Требует среднего времени на выполнение. | | FilTransVar | | Заливает строку изображения в Var2 с учетом прозрачности из Var1. При Flg1=1 сдвиг Var1 на 1/2 длины. | FilTransVar, Var2, Var1, Flg1 | На основе функции TransRGB. | | InterVar32 | | Дописывает в переменн Var1 значения длиной 4 в интервале от (включительно) Nfrom до Nto с целым положительным или отрицательным шагом Step1 и общим числом Qlt1. При Qlt1<0 - неограниченно. Вых. EAX=количество дописанных записей, EBX-значение последнего числа, которое уже удовлетворяет условию. | InterVar32, Var1, Nfrom, Nto, Step1, Qlt1 | | | VarRepA | | Замена в переменной Var1 списка ArrFr на переменную VarTo | VarRepA, Var1, ArrFr, VarTo | В цикле списка вызывается функция VarRep. | | VarRepA32 | | Комплексная замена вхождений в Var1 Arr1 на Var2. Результат в EAX, EBX - число вхождений, JZ - нет вхождения. | VarRepA32, Var1, Arr1, Var2 | На основе функции FixArr32. Для каждого символа переменной проверяется вхождение списка и возможная замена. Требует времени на выполнение. | | VarRepN32 | | Последовательная замена в Var1 всех получающихся вхождений списка ArrFr на переменную Var3, Qz1 раз (<1 - все). Портит EAX. EAX=общее число замен. | VarRepN32, Var1, ArrFr, Var2, Qz1 | На основе функции VarRepVar32. Проходит переменную несколько раз по числу элементов списка, заменяя вхождения. Работает быстро. Похожа на VarRepA32, работает быстрее, меняет саму переменную. | | VarLenCompVar | | Комплексная замена вхождений в Var1 строк Arr1 на Var2/0 (в новой переменной), если получаемая переменная длиннее Len1. Результат в EAX, EBX - число вхождений, JZ - нет вхождения. Портит EAX, EBX. | VarLenCompVar, Var1, Arr1, Var2, Len1 | На основе функции FixArr32. Не заменяет, если результат короче предела. | | RemObj | | Перемещение любого Var-объекта с сохранением адреса Var1: VarCopy Var1, Var2, KillVar Var2; | RemObj Var1, Var2 | Необходима предварительная очистка объекта при его наличии в Var1. Возможна запись RemObj Var1, EAX. Удобна для записи результатов функций. | | CrossVar | | Находит наибольшее пересечение строк целой Var1 и Var2 без учета крайних символов при Stp1=1,2,4EAX=Var Max, JLE - нет пересечения | CrossVar, Var2, Var1, Stp1 | | | Cut8MaxVar | | Быстро вырезает из Var1 (32*2 бита) последние 8 байт, если хватает длины. Вых. EAX - последние 4 байта, EBX - предпоследние. Портит EAX, EBX. Ошибка - JL. | Cut8MaxVar, Var1 | Может применяться для отрезания последнего элемента списка Arr, Dar. Работает с системными параметрами! | | VarSizeCompar | | Сравнение длин Var1, Var2. Вых. JZ - все совпали. JG - Var1 > Var2. JL - Var1 < Var2 или ошибка. Не портит регистры совсем. | VarSizeCompar Var1, Var2 | На основе макросов LenVar. | | MidByte32 | | Считает среднее арифметическое 32-разрядных чисел, входящих в Var1. Вых. EAX=среднее арифметическое, EBX=количество чисел. | MidByte32, Var1 | Для случая, когда переменная используется в качестве массива чисел. | |
Страница "Переменные." обновлена -
|