purebasic.info

PureBasic forum
Текущее время: Пт дек 13, 2019 11:37 am

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




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: Многословное сложение
СообщениеДобавлено: Вс ноя 18, 2018 3:54 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 919
Благодарил (а): 2 раз.
Поблагодарили: 45 раз.
Пункты репутации: 9
Одни из вариантов многословного сложения
Код:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
 
;Автор под под псевдонимом Сергейчик(c)
 
 
 
!clc
!mov ecx,4
!lea esi,ptr a
!lea edi,ptr b
!vozvrat:
 
!mov dword eax,[esi]
!adc dword[edi],eax;сложение с переносом
!mov dword eax,[esi+4]
!adc dword[edi+4],eax
 
!mov dword eax,[esi+8]
!adc dword[edi+8],eax
!mov dword eax,[esi+12]
!adc dword[edi+12],eax
 
;!loop vozvrat
 
Debug PeekQ(?aa)
Debug PeekQ(?aa+8)
Debug PeekQ(?bb)
Debug PeekQ(?bb+8)
Global eax_.i
Global eax1_.i
!lea esi,ptr asc1+2
!lea edi,ptr asc2+2
!lea ebx,ptr asc3+3
!clc
!mov ecx,3
!mov byte ah,00;каждый раз нужно очищать так как +1 при коррекции
!a20:
 
!mov byte al,[esi]
!add byte al,ah;
!mov byte ah,00;снова очищаем
!add byte al,[edi]
;!mov dword [v_eax_],eax
 
 
!aaa;коррекция для сложения после коррекции нужно поставить тройки
;!add byte al,30h
!or byte al,30h
;
;!mov dword [v_eax1_],eax
!mov byte [ebx],al
!dec esi
!dec edi
!dec ebx
!loop a20
;
!or byte ah,30h;сохранить перенос
!mov byte[ebx],ah
 
 
 
Debug PeekS(?asc11,-1,#PB_Ascii)
Debug PeekS(?asc22,-1,#PB_Ascii)
Debug PeekS(?asc33,4,#PB_Ascii)
 
 
 
 
!lea esi,ptr asc2+2
!lea edi,ptr asc1+2
!lea ebx,ptr asc3+3
!clc
!mov ecx,3
!mov byte ah,00;каждый раз нужно очищать так как +1 при коррекции
!a21:
 
!mov byte al,[esi]
!add byte al,ah;
!mov byte ah,00;снова очищаем
!sub byte al,[edi]
;!mov dword [v_eax_],eax
 
 
!aas;коррекция для вычитания после коррекции нужно поставить тройки
;!add byte al,30h
!or byte al,30h
;
;!mov dword [v_eax1_],eax
!mov byte [ebx],al
!dec esi
!dec edi
!dec ebx
!loop a21
;
!or byte ah,30h;сохранить перенос
!mov byte[ebx],ah
 
 
 
 
 
;Debug eax_
;Debug eax1_
Debug PeekS(?asc11,-1,#PB_Ascii)
Debug PeekS(?asc22,-1,#PB_Ascii)
Debug PeekS(?asc33,4,#PB_Ascii)
 
DataSection
  asc11:
 !asc1:
  !db '578',0
  asc22:
 !asc2:
  !db '694',0
  asc33:
 !asc3:
  !db '0000',0
  aa:
!a:
!db 0ffh
!db 00h
!db 00h
!db 00h
!db 00h
!db 00h
!db 00h
!db 0ffh
 
!db 0ffh
!db 00h
!db 00h
!db 00h
!db 00h
!db 00h
!db 00h
!db 0ffh
 
bb:
!b:
!db 0ffh
!db 0ffh
!db 00h
!db 00h
!db 00h
!db 00h
!db 00h
!db 00h
 
!db 0ffh
!db 0ffh
!db 00h
!db 00h
!db 00h
!db 00h
!db 00h
!db 00h
 
EndDataSection
 



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

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


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

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


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

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