Быстрый поиск
Введите фрагмент названия статьи для поиска
Сортировка вставками на Ассемблере
13.05.2024 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сортировка вставками - это алгоритм сортировки, который преобразует массив данных путем поочередного включения каждого элемента в упорядоченную последовательность элементов. Он подразумевает разделение массива на отсортированную и неотсортированную части. На каждом шаге из неотсортированной части выбирается элемент и вставляется в правильное место в отсортированной части. И так продолжается до тех пор, пока весь набор входных данных не будет отсортирован.Алгоритм работает следующим образом. Массив разделяется на две части: отсортированную (в начале пустая) и неотсортированную. На каждом шаге выбирается элемент из неотсортированной части массива. Этот элемент вставляется в отсортированную часть массива так, чтобы отсортированная часть оставалась упорядоченной. Граница между отсортированной и неотсортированной частями смещается, и процесс повторяется для оставшихся элементов. После выполнения всех шагов весь массив становится отсортированным.
Code (Assembler) : Убрать нумерацию
- ;----------------------------------------------------------------
- ; Функция сортировки массива DWORD методом вставок
- ; by ManHunter / PCL (www.manhunter.ru)
- ;----------------------------------------------------------------
- ; Параметры:
- ; lpArray - указатель на массив DWORD
- ; dLen - количество элементов в массиве
- ;----------------------------------------------------------------
- proc insertion_sort lpArray:DWORD, dLen:DWORD
- pusha
- mov esi,[lpArray]
- mov ecx,[dLen]
- xor edi,edi
- inc edi
- .loc_loop_1:
- mov ebx,dword [esi+edi*4]
- mov edx,edi
- dec edx
- .loc_loop_2:
- cmp edx,0
- jb @f
- cmp dword [esi+edx*4],ebx
- jbe @f
- push dword [esi+edx*4+4]
- push dword [esi+edx*4]
- pop dword [esi+edx*4+4]
- pop dword [esi+edx*4]
- dec edx
- jmp .loc_loop_2
- @@:
- mov dword [esi+edx*4+4],ebx
- inc edi
- cmp edi,ecx
- jb .loc_loop_1
- .loc_ret:
- popa
- ret
- endp
Читать статью целиком »
Просмотров: 467 | Комментариев: 0
Создание файла XLSX на PHP без сторонних библиотек
26.01.2024 | Категория: Web-мастеру и не только | Автор: ManHunter
Создание файла XLSX на PHP без сторонних библиотек
В предыдущей статье я рассказал, как можно легко извлекать данные из файлов в формате XLSX. Раз можно извлекать, значит можно и генерировать такие файлы, тем более, что их формат уже разобран. Если требуется создавать файлы только со статичными данными, без формул, сводных таблиц, графиков и прочей красоты, то совсем не обязательно таскать тяжеленные библиотеки, можно воспользоваться приведенным в статье кодом.
Читать статью целиком »
Просмотров: 1057 | Комментариев: 0
Чтение файла XLSX на PHP без сторонних библиотек
15.01.2024 | Категория: Web-мастеру и не только | Автор: ManHunter
Чтение файла XLSX на PHP без сторонних библиотек
На работе возникла задача читать данные из таблиц формата XLSX. Много лет для этого я использовал замечательную библиотеку PHPExcel, но по ряду технических причин дальнейшее ее использование не представляется возможным. При этом задачу никто не отменял. Поэтому пришлось рисовать свое решение, максимально простое и быстрое.
Читать статью целиком »
Просмотров: 1570 | Комментариев: 8
Конвертирование строки из КОИ-8 в cp1251 и обратно
03.10.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Кодировка KOI8-R
КОИ-8 - код обмена информацией - восьмибитовая кодовая страница, разработанная для кодирования букв кириллических алфавитов. КОИ-8 в свое время была широко распространена как основная русская кодировка в UNIX-совместимых ОС и в электронной почте. Существует несколько вариантов КОИ-8, в этой статье я расскажу, как можно конвертировать строку из KOI8-R (русская) в стандартную виндовую кодировку cp1251 и обратно.
Читать статью целиком »
Просмотров: 1638 | Комментариев: 2
Запись числа римскими цифрами на Ассемблере
18.09.2023 | Категория: Образ мышления: Assembler | Автор: ManHunter
Запись числа римскими цифрами на Ассемблере
Задачки на запись натурального числа римскими цифрами очень часто встречаются на различных олимпиадах по программированию. Я решил нарисовать свой вариант решения задачи на Ассемблере.
Натуральные числа записываются при помощи повторения этих цифр. При этом применяется следующее базовое правило: одна и та же букво-цифра не может повторяться в записи числа более 3-х раз подряд. Для этого введены дополнительные двухбуквенные комбинации и, если меньшая букво-цифра стоит перед большей, то меньшая вычитается из большей. В табличке это наглядно видно. Но ограниченный набор букво-цифр приводит к тому, что максимальное число, которое можно записать базовым набором римских цифр, не может превышать десятичного числа 3999 (MMMCMXCIX). Также в римской записи нет нулевого значения, отрицательных и дробных чисел.
Читать статью целиком »
Просмотров: 899 | Комментариев: 0