
Assembler: сейчас на сайте 2 гостей и 3 новостей
27.10.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
Немного отдохнем от ковыряния во внутренностях системы. Переписал на Ассемблере свою PHP-шную функцию для правильного склонения языковых конструкций вида "число + слово". Всю суть вопроса и теорию можете почитать в статье по ссылке. Сама функция получилась вот такой:Code (Assembler) : Убрать нумерацию
- ;-------------------------------------------------------
- ; Функция для получения индекса массива с вариантами
- ; склонений слова в зависимости от числового значения.
- ; Массив слов формируется по принципу "1-2-5", то есть
- ; ("гость", "гостя", "гостей")
- ;-------------------------------------------------------
- ; На входе:
- ; dNum - число
- ; На выходе:
- ; EAX = [0..2] - индекс элемента массива
- ;-------------------------------------------------------
- proc num2word dNum:DWORD
- push ecx edx
- mov eax,[dNum]
- cdq
- mov ecx,100
- idiv ecx
- cmp edx,19
- jb @f
- mov eax,edx
- cdq
- mov ecx,10
- idiv ecx
- @@:
- xor eax,eax
- or edx,edx
- jz .case2
- cmp edx,1
- jz .case0
- cmp edx,4
- jbe .case1
- .case2:
- inc eax
- .case1:
- inc eax
- .case0:
- pop edx ecx
- ret
- endp
Читать статью целиком »
Просмотров: 287 | Комментариев: 0
