purebasic.info

PureBasic forum
Текущее время: Вс сен 24, 2017 3:07 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Подсчёт символов UTF-8
СообщениеДобавлено: Вс сен 10, 2017 2:58 am 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 511
Благодарил (а): 2 раз.
Поблагодарили: 26 раз.
Пункты репутации: 9
Входящий аргумент это указатель на строку(начало строки в памяти),на выходе количество символов в строке(R=Размер).
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
;Автор под псевдонимом Сергейчик
Procedure Len_UTF8R(*stroka)
  !push esi
  !mov esi,[esp+8]
  !xor eax,eax
  !uu:
 !cmp byte[esi],0h
  !jz ecssit;если конец строки выходим
  !add dword eax,1
  ;;=============проверка на 1 байт
  !cmp byte[esi],127
  !ja @f ;больше чем 1 байтный символ,переходим на проверку 2 байтного символа utf-8
  ;;====это 1 байтный символ
  ;1
  !add esi,1
  !jmp uu;смотрим следущий символ
  ;;===============проверка на 2 байта
  !@@:
  !cmp byte[esi],223
  !ja @f;больше чем 2 байтный символ
  ;2
  !add esi,2
  ;Debug 2
  !jmp uu
  ;
  ;;===============проверка на 3 байта
  !@@:;>3
  !cmp byte[esi],239
  !ja @f
  ;3
  !add esi,3
  ;Debug 3
  !jmp uu
  ;;===============проверка на 4 байта
  !@@:
  !cmp byte[esi],247
  !ja @f
  ;4
  !add esi,4
  ;Debug 4
  !jmp uu
  ;;;===============проверка на 5 байта
  !@@:
  !cmp byte[esi],251
  !ja @f
  ;5
  !add esi,5
  ;Debug 5
  !jmp uu
  ;;;===============проверка на 6 байта
  !@@:
  !cmp byte[esi],253
  !ja @f
  ;6
  !add esi,6
  !jmp uu
  ;;;===============проверка на 7 байта
  !@@:
  !cmp byte[esi],254
  !ja @f
  ;7
  !add esi,7
  !jmp uu
  ;;;===============проверка на 8 байта
  !@@:
  ;8
  !add esi,8
  !jmp uu
  ;
  !ecssit:
 !pop esi
  ;
  !retn 4
EndProcedure
 



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB