Rev 5153 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5153 | Rev 8408 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ; |
3 | ; |
Line 4... | Line 4... | ||
4 | 4 | ||
5 | ; ®«¨ç¥á⢮ § ª®¢ ç¨á« ¯®á«¥ § ¯ï⮩ (1-17) |
5 | ; ®«¨ç¥á⢮ § ª®¢ ç¨á« ¯®á«¥ § ¯ï⮩ (1-17) |
6 | NumberSymbolsAD DW 5 |
6 | NumberSymbolsAD DW 5 |
7 | ; ®áâ âë (10 ¢ á⥯¥¨ N) |
7 | ; ®áâ âë (10 ¢ á⥯¥¨ N) |
8 | MConst DQ 1.0E1,1.0E2,1.0E3,1.0E4,1.0E5 |
8 | MConst: DQ 1.0E1,1.0E2,1.0E3,1.0E4,1.0E5 |
9 | DQ 1.0E6,1.0E7,1.0E8,1.0E9,1.0E10 |
9 | DQ 1.0E6,1.0E7,1.0E8,1.0E9,1.0E10 |
10 | DQ 1.0E11,1.0E12,1.0E13,1.0E14,1.0E15 |
10 | DQ 1.0E11,1.0E12,1.0E13,1.0E14,1.0E15 |
11 | DQ 1.0E16,1.0E17,1.0E18,1.0E19,1.0E20 |
11 | DQ 1.0E16,1.0E17,1.0E18,1.0E19,1.0E20 |
12 | DQ 1.0E21,1.0E22,1.0E23,1.0E24,1.0E25 |
12 | DQ 1.0E21,1.0E22,1.0E23,1.0E24,1.0E25 |
Line 29... | Line 29... | ||
29 | DQ 1.0E106,1.0E107,1.0E108,1.0E109,1.0E110 |
29 | DQ 1.0E106,1.0E107,1.0E108,1.0E109,1.0E110 |
30 | DQ 1.0E111,1.0E112,1.0E113,1.0E114,1.0E115 |
30 | DQ 1.0E111,1.0E112,1.0E113,1.0E114,1.0E115 |
31 | DQ 1.0E116,1.0E117,1.0E118,1.0E119,1.0E120 |
31 | DQ 1.0E116,1.0E117,1.0E118,1.0E119,1.0E120 |
32 | DQ 1.0E121,1.0E122,1.0E123,1.0E124,1.0E125 |
32 | DQ 1.0E121,1.0E122,1.0E123,1.0E124,1.0E125 |
33 | DQ 1.0E126,1.0E127,1.0E128 |
33 | DQ 1.0E126,1.0E127,1.0E128 |
- | 34 | .end: |
|
34 | ; ¨á«® á ¯« ¢ î饩 § ¯ï⮩ ¤¢®©®© â®ç®á⨠|
35 | ; ¨á«® á ¯« ¢ î饩 § ¯ï⮩ ¤¢®©®© â®ç®á⨠|
35 | Data_Double DQ ? |
36 | Data_Double DQ ? |
36 | ; ¨á«® ¢ BCD-ä®à¬ ⥠|
37 | ; ¨á«® ¢ BCD-ä®à¬ ⥠|
37 | Data_BCD DT ? |
38 | Data_BCD DT ? |
38 | ; ᯮ¬®£ ⥫ìë© ä« £ |
39 | ; ᯮ¬®£ ⥫ìë© ä« £ |
39 | Data_Flag DB ? |
40 | Data_Flag DB ? |
40 | ; ª १ã«ìâ â (¥á«¨ ¥ 0 - ®âà¨æ ⥫쮥 ç¨á«®) |
41 | ; ª १ã«ìâ â (¥á«¨ ¥ 0 - ®âà¨æ ⥫쮥 ç¨á«®) |
41 | Data_Sign DB ? |
42 | Data_Sign DB ? |
- | 43 | ; ª १ã«ìâ â - 0 ¤«ï ..e+.. ¨ 1 ¤«ï ..e-.. |
|
- | 44 | Data_Sign_Exp DB ? |
|
Line 42... | Line 45... | ||
42 | 45 | ||
43 | - | ||
44 | db 0 ;㪠§ ⥫ì ᤢ¨£ ¢ ¯ ¬ï⨠|
46 | align 4 |
45 | ; âப ¤«ï åà ¥¨ï ç¨á« ¢ ª®¤¥ ASCII |
47 | ; âப ¤«ï åà ¥¨ï ç¨á« ¢ ª®¤¥ ASCII |
Line 57... | Line 59... | ||
57 | ;* NumberSymbolsAD - ª®«¨ç¥á⢮ § ª®¢ ¯®á«¥ * |
59 | ;* NumberSymbolsAD - ª®«¨ç¥á⢮ § ª®¢ ¯®á«¥ * |
58 | ;* § ¯ï⮩ (0-17). * |
60 | ;* § ¯ï⮩ (0-17). * |
59 | ;* ëå®¤ë¥ ¯ à ¬¥âàë: * |
61 | ;* ëå®¤ë¥ ¯ à ¬¥âàë: * |
60 | ;* Data_String - áâப -१ã«ìâ â. * |
62 | ;* Data_String - áâப -१ã«ìâ â. * |
61 | ;******************************************************* |
63 | ;******************************************************* |
- | 64 | align 4 |
|
62 | DoubleFloat_to_String: |
65 | DoubleFloat_to_String: |
63 | pushad |
66 | pushad |
64 | ; ¥§ã«ìâ â § ¯¨áë¢ âì ¢ áâபã Data_String |
67 | ; ¥§ã«ìâ â § ¯¨áë¢ âì ¢ áâபã Data_String |
65 | lea EDI, [Data_String] |
68 | mov EDI, Data_String |
Line 66... | Line 69... | ||
66 | 69 | ||
67 | ; ¤¢¨£ ¥¬ ç¨á«® ¢«¥¢® NumberSymbolsAD |
70 | ; ¤¢¨£ ¥¬ ç¨á«® ¢«¥¢® NumberSymbolsAD |
68 | ; ¤¥áïâ¨çëå à §à冷¢ |
71 | ; ¤¥áïâ¨çëå à §à冷¢ |
69 | fninit ;á¡à®á ᮯà®æ¥áá®à |
72 | fninit ;á¡à®á ᮯà®æ¥áá®à |
Line 72... | Line 75... | ||
72 | mov BX,[NumberSymbolsAD] |
75 | mov BX,[NumberSymbolsAD] |
73 | cmp BX, 0 |
76 | cmp BX, 0 |
74 | je .NoShifts ;¥â æ¨äà ¯®á«¥ § ¯ï⮩ |
77 | je .NoShifts ;¥â æ¨äà ¯®á«¥ § ¯ï⮩ |
75 | jl .Error ;®è¨¡ª |
78 | jl .Error ;®è¨¡ª |
76 | dec BX |
79 | dec BX |
77 | shl BX, 3 ;㬮¦ ¥¬ 8 |
- | |
78 | lea eax,[MConst] |
80 | lea ebx,[MConst+8*ebx] |
79 | add EBX, eax |
- | |
80 | fmul qword [EBX] ;㬮¦¨âì ª®áâ âã |
81 | fmul qword [EBX] ;㬮¦¨âì ª®áâ âã |
81 | .NoShifts: |
82 | .NoShifts: |
82 | ; §¢«¥çì ç¨á«® ¢ ª®¤¥ BCD |
83 | ; §¢«¥çì ç¨á«® ¢ ª®¤¥ BCD |
83 | fbstp [Data_BCD] |
84 | fbstp [Data_BCD] |
84 | ; ஢¥à¨âì १ã«ìâ â ¯¥à¥¯®«¥¨¥ |
85 | ; ஢¥à¨âì १ã«ìâ â ¯¥à¥¯®«¥¨¥ |
Line 128... | Line 129... | ||
128 | loop .NextPair |
129 | loop .NextPair |
129 | mov AL,0 |
130 | mov AL,0 |
130 | stosb |
131 | stosb |
Line 131... | Line 132... | ||
131 | 132 | ||
132 | ; ¡à âì ¥§ ç 騥 㫨 á«¥¢ |
133 | ; ¡à âì ¥§ ç 騥 㫨 á«¥¢ |
133 | lea EDI, [Data_String] |
134 | mov EDI, Data_String |
134 | lea ESI, [Data_String] |
135 | mov ESI, Data_String |
135 | ; யãáâ¨âì § ª ç¨á« , ¥á«¨ ® ¥áâì |
136 | ; யãáâ¨âì § ª ç¨á« , ¥á«¨ ® ¥áâì |
136 | cmp byte [ESI],'-' |
137 | cmp byte [ESI],'-' |
137 | jne .N2 |
138 | jne .N2 |
138 | inc ESI |
139 | inc ESI |
Line 149... | Line 150... | ||
149 | inc ESI |
150 | inc ESI |
150 | loop .N3 |
151 | loop .N3 |
151 | ; 訡ª - ¥â § ç é¨å æ¨äà |
152 | ; 訡ª - ¥â § ç é¨å æ¨äà |
152 | jmp .Error |
153 | jmp .Error |
153 | ; ª®¯¨à®¢ âì § ç éãî ç áâì ç¨á« ¢ ç «® áâப¨ |
154 | ; ª®¯¨à®¢ âì § ç éãî ç áâì ç¨á« ¢ ç «® áâப¨ |
- | 155 | align 4 |
|
154 | .N4: rep movsb |
156 | .N4: rep movsb |
155 | jmp .End |
157 | jmp .End |
156 | - | ||
157 | ; 訡ª |
158 | ; 訡ª |
- | 159 | align 4 |
|
158 | .Error: |
160 | .Error: |
159 | mov AL,'E' |
161 | mov AL,'E' |
160 | stosb |
162 | stosb |
161 | mov AL,'R' |
163 | mov AL,'R' |
162 | stosb |
164 | stosb |
Line 164... | Line 166... | ||
164 | stosb |
166 | stosb |
165 | xor AL,AL |
167 | xor AL,AL |
166 | stosb |
168 | stosb |
167 | jmp .End |
169 | jmp .End |
168 | ; ¥à¥¯®«¥¨¥ à §à冷© á¥âª¨ |
170 | ; ¥à¥¯®«¥¨¥ à §à冷© á¥âª¨ |
- | 171 | align 4 |
|
169 | .Overflow: |
172 | .Overflow: |
170 | mov AL,'#' |
173 | mov AL,'#' |
171 | stosb |
174 | stosb |
172 | xor AL,AL |
175 | xor AL,AL |
173 | stosb |
176 | stosb |
174 | ; ®¥æ ¯à®æ¥¤ãàë |
177 | ; ®¥æ ¯à®æ¥¤ãàë |
- | 178 | align 4 |
|
175 | .End: |
179 | .End: |
176 | popad |
180 | popad |
177 | ret |
181 | ret |
Line 178... | Line 182... | ||
178 | 182 | ||
Line 182... | Line 186... | ||
182 | ;* å®¤ë¥ ¯ à ¬¥âàë: * |
186 | ;* å®¤ë¥ ¯ à ¬¥âàë: * |
183 | ;* Data_String - ç¨á«® ¢ ª®¤¥ ASCII. * |
187 | ;* Data_String - ç¨á«® ¢ ª®¤¥ ASCII. * |
184 | ;* ëå®¤ë¥ ¯ à ¬¥âàë: * |
188 | ;* ëå®¤ë¥ ¯ à ¬¥âàë: * |
185 | ;* Data_Double - ç¨á«® ¢ ¤¢®¨ç®¬ ª®¤¥. * |
189 | ;* Data_Double - ç¨á«® ¢ ¤¢®¨ç®¬ ª®¤¥. * |
186 | ;**************************************************** |
190 | ;**************************************************** |
- | 191 | align 4 |
|
187 | String_to_DoubleFloat: |
192 | String_to_DoubleFloat: |
188 | pushad |
193 | pushad |
189 | cld |
194 | cld |
190 | ; ç¨é ¥¬ Data_BCD |
195 | ; ç¨é ¥¬ Data_BCD |
191 | mov dword [Data_BCD],0 |
196 | mov dword [Data_BCD],0 |
192 | mov dword [Data_BCD+4],0 |
197 | mov dword [Data_BCD+4],0 |
193 | mov word [Data_BCD+8],0 |
198 | mov word [Data_BCD+8],0 |
194 | ; ç¨é ¥¬ ¡ ©â § ª |
199 | ; ç¨é ¥¬ ¡ ©â § ª |
195 | mov [Data_Sign],0 |
200 | mov [Data_Sign],0 |
196 | ; ®á¨¬ ¢ SI 㪠§ ⥫ì áâபã |
201 | ; ®á¨¬ ¢ esi 㪠§ ⥫ì áâபã |
197 | lea ESI, [Data_String] |
202 | mov esi, Data_String |
198 | ; யã᪠¥¬ ¯à®¡¥«ë ¯¥à¥¤ ç¨á«®¬ |
203 | ; யã᪠¥¬ ¯à®¡¥«ë ¯¥à¥¤ ç¨á«®¬ |
199 | mov ecx,64 ;§ é¨â ®â § 横«¨¢ ¨ï |
204 | mov ecx,64 ;§ é¨â ®â § 横«¨¢ ¨ï |
200 | .ShiftIgnore: |
205 | .ShiftIgnore: |
201 | lodsb |
206 | lodsb |
202 | cmp AL,' ' |
207 | cmp al,' ' |
203 | jne .ShiftIgnoreEnd |
208 | jne .ShiftIgnoreEnd |
204 | loop .ShiftIgnore |
209 | loop .ShiftIgnore |
205 | jmp .Error |
210 | jmp .Error |
- | 211 | align 4 |
|
206 | .ShiftIgnoreEnd: |
212 | .ShiftIgnoreEnd: |
207 | ; ஢¥à塞 § ª ç¨á« |
213 | ; ஢¥à塞 § ª ç¨á« |
208 | cmp AL,'-' |
214 | cmp al,'-' |
209 | jne .Positive |
215 | jne .Positive |
210 | mov [Data_Sign],80h |
216 | mov [Data_Sign],80h |
211 | lodsb |
217 | lodsb |
212 | .Positive: |
218 | .Positive: |
213 | mov [Data_Flag],0 ;¯à¨§ ª «¨ç¨ï â®çª¨ |
219 | mov [Data_Flag],0 ;¯à¨§ ª «¨ç¨ï â®çª¨ |
214 | mov DX,0 ;¯®§¨æ¨ï â®çª¨ |
220 | xor edx,edx ;¯®§¨æ¨ï â®çª¨ |
215 | mov ecx,18 ;¬ ªá. ç¨á«® à §à冷¢ |
221 | mov ecx,18 ;¬ ªá. ç¨á«® à §à冷¢ |
- | 222 | align 4 |
|
216 | .ASCIItoBCDConversion: |
223 | .ASCIItoBCDConversion: |
217 | cmp AL,'.' ;â®çª ? |
224 | cmp al,'.' ;â®çª ? |
218 | jne .NotDot |
225 | jne .NotDot |
219 | cmp [Data_Flag],0 ;â®çª ¥ ¢áâà¥ç « áì? |
226 | cmp [Data_Flag],0 ;â®çª ¥ ¢áâà¥ç « áì? |
220 | jne .Error |
227 | jne .Error ;¥á«¨ â®çª 㦥 ¡ë« |
221 | mov [Data_Flag],1 |
228 | mov [Data_Flag],1 |
222 | lodsb |
229 | lodsb |
223 | cmp AL,0 ;ª®¥æ áâப¨? |
230 | or al,al ;ª®¥æ áâப¨? |
224 | jne .NotDot |
231 | jnz .NotDot |
225 | jmp .ASCIItoBCDConversionEnd |
232 | jmp .ASCIItoBCDConversionEnd |
- | 233 | align 4 |
|
226 | .NotDot: |
234 | .NotDot: |
227 | ; ¢¥«¨ç¨âì 1 § 票¥ ¯®§¨æ¨¨ â®çª¨, |
235 | ; ¢¥«¨ç¨âì 1 § 票¥ ¯®§¨æ¨¨ â®çª¨, |
228 | ; ¥á«¨ ® ¥é¥ ¥ ¢áâà¥ç « áì |
236 | ; ¥á«¨ ® ¥é¥ ¥ ¢áâà¥ç « áì |
229 | cmp [Data_Flag],0 |
237 | cmp [Data_Flag],0 |
230 | jnz .Figures |
238 | jnz .Figures |
231 | inc DX |
239 | inc edx |
232 | .Figures: |
240 | .Figures: |
- | 241 | cmp al,'e' |
|
- | 242 | je .exp_form |
|
- | 243 | cmp al,'E' |
|
- | 244 | jne @f |
|
- | 245 | .exp_form: |
|
- | 246 | call string_ExpForm ;¥á«¨ ç¨á«® ¢ ä®à¬ ⥠..e.. |
|
- | 247 | or al,al |
|
- | 248 | jnz .Error |
|
- | 249 | jmp .ASCIItoBCDConversionEnd |
|
- | 250 | @@: |
|
233 | ; ¨¬¢®«ë ç¨á« ¤®«¦ë ¡ëâì æ¨äà ¬¨ |
251 | ; ¨¬¢®«ë ç¨á« ¤®«¦ë ¡ëâì æ¨äà ¬¨ |
234 | cmp AL,'0' |
252 | cmp al,'0' |
235 | jb .Error |
253 | jb .Error |
236 | cmp AL,'9' |
254 | cmp al,'9' |
237 | ja .Error |
255 | ja .Error |
238 | ; ¨è¥¬ ®ç¥à¥¤ãî æ¨äàã ¢ ¬« ¤èãî â¥âà ¤ã BCD |
256 | ; ¨è¥¬ ®ç¥à¥¤ãî æ¨äàã ¢ ¬« ¤èãî â¥âà ¤ã BCD |
239 | and AL,0Fh |
257 | and al,15 ;ᨬ¢®«ë 0-9 ¯¥à¥¢®¤¨¬ ¢ ç¨á«® |
240 | or byte [Data_BCD],AL |
258 | or byte [Data_BCD],al |
241 | ; ஢¥àª ª®¥æ áâப¨ |
259 | ; ஢¥àª ª®¥æ áâப¨ |
242 | cmp byte [ESI],0 |
260 | cmp byte [esi],0 |
243 | je .ASCIItoBCDConversionEnd |
261 | je .ASCIItoBCDConversionEnd |
244 | ; ¤¢¨£ ¥¬ BCD 4 à §àï¤ ¢«¥¢® |
262 | ; ¤¢¨£ ¥¬ BCD 4 à §àï¤ ¢«¥¢® |
245 | ; (ᤢ¨£ ¥¬ áâ à訥 2 ¡ ©â ) |
263 | ; (ᤢ¨£ ¥¬ áâ à訥 2 ¡ ©â ) |
246 | mov AX,word [Data_BCD+6] |
264 | mov ax,word [Data_BCD+6] |
247 | shld word [Data_BCD+8],AX,4 |
265 | shld word [Data_BCD+8],ax,4 |
248 | ; (ᤢ¨£ ¥¬ á।¨¥ 4 ¡ ©â ) |
266 | ; (ᤢ¨£ ¥¬ á।¨¥ 4 ¡ ©â ) |
249 | mov EAX, dword [Data_BCD] |
267 | mov eax,dword [Data_BCD] |
250 | shld dword [Data_BCD+4],EAX,4 |
268 | shld dword [Data_BCD+4],eax,4 |
251 | ; (ᤢ¨£ ¥¬ ¬« ¤è¨¥ 4 ¡ ©â ) |
269 | ; (ᤢ¨£ ¥¬ ¬« ¤è¨¥ 4 ¡ ©â ) |
252 | shl dword [Data_BCD],4 |
270 | shl dword [Data_BCD],4 |
253 | ; £à㦠¥¬ á«¥¤ãî騩 ᨬ¢®« ¢ AL |
271 | ; £à㦠¥¬ á«¥¤ãî騩 ᨬ¢®« ¢ AL |
254 | lodsb |
272 | lodsb |
255 | loop .ASCIItoBCDConversion |
273 | loop .ASCIItoBCDConversion ;¥á«¨ ¥ ª®¬¯¨«. â® ¯®áâ ¢¨âì dec ecx, jnz ... |
256 | ; ᫨ 19-© ᨬ¢®« ¥ 0 ¨ ¥ â®çª , |
274 | ; ᫨ 19-© ᨬ¢®« ¥ 0 ¨ ¥ â®çª , |
257 | ; â® ®è¨¡ª ¯¥à¥¯®«¥¨ï |
275 | ; â® ®è¨¡ª ¯¥à¥¯®«¥¨ï |
258 | cmp AL,'.' |
276 | cmp al,'.' |
259 | jne .NotDot2 |
277 | jne .NotDot2 |
260 | inc ecx |
- | |
- | 278 | inc ecx ;¯à®¯ã᪠â®çª¨ ¢ ª®æ¥ ®ç¥ì ¡®«ì讣® ç¨á« |
|
261 | lodsb |
279 | lodsb |
262 | .NotDot2: |
280 | .NotDot2: |
- | 281 | or al,al ;¯¥à¥¯®«¥¨¥ à §à冷© á¥âª¨? |
|
- | 282 | jz .ASCIItoBCDConversionEnd |
|
263 | cmp AL,0 |
283 | align 4 |
264 | jne .Error ;¯¥à¥¯®«¥¨¥ à §à冷© á¥âª¨ |
284 | .Error: ; ਠ«î¡®© ®è¨¡ª¥ ®¡ã«¨âì १ã«ìâ â |
- | 285 | fldz ;§ ¥á⨠®«ì á á⥪ ᮯà®æ¥áá®à |
|
- | 286 | fstp [Data_Double] |
|
- | 287 | jmp .End |
|
Line 265... | Line 288... | ||
265 | 288 | ||
266 | ; BCD |
289 | ; BCD |
267 | .ASCIItoBCDConversionEnd: |
290 | .ASCIItoBCDConversionEnd: |
268 | ; ¯¨á âì § ª ¢ áâ à訩 ¡ ©â |
291 | ; ¯¨á âì § ª ¢ áâ à訩 ¡ ©â |
269 | mov AL,[Data_Sign] |
292 | mov al,[Data_Sign] |
270 | mov byte [Data_BCD+9],AL |
293 | mov byte [Data_BCD+9],al |
271 | ; ¡à®á¨âì ॣ¨áâàë ᮯà®æ¥áá®à |
294 | ; ¡à®á¨âì ॣ¨áâàë ᮯà®æ¥áá®à |
272 | fninit |
295 | fninit |
273 | ; £à㧨âì ¢ ᮯà®æ¥áá®à ç¨á«® ¢ BCD-ä®à¬ ⥠|
296 | ; £à㧨âì ¢ ᮯà®æ¥áá®à ç¨á«® ¢ BCD-ä®à¬ ⥠|
274 | fbld [Data_BCD] |
297 | fbld [Data_BCD] |
- | 298 | ; ëç¨á«¨âì ®¬¥à ¤¥«¨â¥«ï ¨«¨ ¬®¦¨â¥«ï |
|
275 | ; ëç¨á«¨âì ®¬¥à ¤¥«¨â¥«ï |
299 | lea ebx,[ecx+edx-18] |
- | 300 | cmp ebx,0 |
|
276 | mov EBX,18+1 |
301 | jle .NoMul ;¥á«¨ ç¨á«® e-.. |
- | 302 | dec ebx |
|
277 | sub BX,CX |
303 | jz .NoDiv ;¥á«¨ ç¨á«® e+0 |
- | 304 | dec ebx |
|
- | 305 | lea ebx,[MConst+8*ebx] |
|
- | 306 | cmp ebx,MConst.end |
|
278 | sub BX,DX |
307 | jl @f |
- | 308 | ffree st0 |
|
- | 309 | fincstp |
|
- | 310 | jmp .Error ;¥á«¨ ®ç¥ì ¡®«ì讥 ç¨á«® e+** |
|
- | 311 | @@: |
|
279 | cmp EBX,0 |
312 | fmul qword [ebx] ;㬮¦¨âì ª®áâ âã (¤«ï ç¨á¥« á ¯à¨áâ ¢ª®© e+..) |
- | 313 | jmp .NoDiv |
|
280 | je .NoDiv |
314 | .NoMul: |
281 | dec EBX |
315 | neg ebx |
282 | shl EBX,3 ;㬮¦ ¥¬ 8 |
316 | lea ebx,[MConst+8*ebx] |
- | 317 | cmp ebx,MConst.end |
|
- | 318 | jl @f |
|
283 | lea eax,[MConst] |
319 | ffree st0 |
- | 320 | fincstp |
|
- | 321 | jmp .Error ;¥á«¨ ®ç¥ì ¬ «¥ìª®¥ ç¨á«® e-** |
|
284 | add EBX,eax |
322 | @@: |
285 | fdiv qword [EBX] ;à §¤¥«¨âì ª®áâ âã |
323 | fdiv qword [ebx] ;à §¤¥«¨âì ª®áâ âã |
286 | .NoDiv:; ë£à㧨âì ç¨á«® ¢ ¤¢®¨ç®¬ ä®à¬ ⥠|
324 | .NoDiv: ;ë£à㧨âì ç¨á«® ¢ ¤¢®¨ç®¬ ä®à¬ ⥠|
287 | fstp [Data_Double] |
- | |
288 | jmp .End |
- | |
289 | - | ||
290 | .Error:; ਠ«î¡®© ®è¨¡ª¥ ®¡ã«¨âì १ã«ìâ â |
- | |
291 | fldz ;§ ¥á⨠®«ì á á⥪ ᮯà®æ¥áá®à |
- | |
292 | fstp [Data_Double] |
325 | fstp [Data_Double] |
293 | .End: |
326 | .End: |
294 | popad |
327 | popad |
Line -... | Line 328... | ||
- | 328 | ret |
|
- | 329 | ||
- | 330 | ;output: |
|
295 | ret |
331 | ; eax - 1 if error |
296 | 332 | ; edx += size |
|
- | 333 | align 4 |
|
- | 334 | proc string_ExpForm uses ebx |
|
- | 335 | mov [Data_Sign_Exp],0 |
|
- | 336 | xor eax,eax |
|
- | 337 | lodsb |
|
- | 338 | cmp al,'+' |
|
- | 339 | jne @f |
|
- | 340 | lodsb |
|
- | 341 | @@: |
|
- | 342 | cmp al,'-' |
|
- | 343 | jne @f |
|
- | 344 | inc [Data_Sign_Exp] |
|
- | 345 | lodsb |
|
- | 346 | @@: |
|
- | 347 | ||
- | 348 | xor ebx,ebx |
|
- | 349 | .cycle0: |
|
- | 350 | cmp al,0 |
|
- | 351 | je .cycle0end |
|
- | 352 | cmp al,9 |
|
- | 353 | je .cycle0end |
|
- | 354 | cmp al,10 |
|
- | 355 | je .cycle0end |
|
- | 356 | cmp al,13 |
|
- | 357 | je .cycle0end |
|
- | 358 | cmp al,' ' |
|
- | 359 | je .cycle0end |
|
- | 360 | cmp al,'0' |
|
- | 361 | jb .Error |
|
- | 362 | cmp al,'9' |
|
- | 363 | ja .Error |
|
- | 364 | ||
- | 365 | imul ebx,10 |
|
- | 366 | and eax,15 ;ᨬ¢®«ë 0-9 ¯¥à¥¢®¤¨¬ ¢ ç¨á«® |
|
- | 367 | add ebx,eax |
|
- | 368 | lodsb |
|
- | 369 | jmp .cycle0 |
|
- | 370 | .cycle0end: |
|
- | 371 | ||
- | 372 | cmp ebx,328 ;308 - ¬ ªá. à §¬¥à á⥯¥¨ ¤«ï double + 20 - ç¨á«® à §à冷¢ ¢ BCD |
|
- | 373 | ja .Error |
|
- | 374 | cmp [Data_Sign_Exp],0 |
|
- | 375 | je @f |
|
- | 376 | neg ebx |
|
- | 377 | @@: |
|
- | 378 | cmp [Data_Flag],0 ;â®çª ¥ ¢áâà¥ç « áì? |
|
- | 379 | jne @f |
|
- | 380 | dec edx |
|
- | 381 | @@: |
|
- | 382 | add edx,ebx |
|
- | 383 | ||
- | 384 | xor eax,eax |
|
297 | align 4 |
385 | jmp @f |
- | 386 | .Error: |
|
- | 387 | xor eax,eax |
|
- | 388 | inc eax |
|
- | 389 | @@: |
|
- | 390 | ret |
|
- | 391 | endp |
|
- | 392 | ||
298 | proc str_cat, str1:dword, str2:dword |
393 | align 4 |
299 | push eax ecx edi esi |
394 | proc str_cat uses eax ecx edi esi, str1:dword, str2:dword |
300 | mov esi,dword[str2] |
395 | mov esi,dword[str2] |
301 | stdcall str_len,esi |
396 | stdcall str_len,esi |
302 | mov ecx,eax |
397 | mov ecx,eax |
303 | inc ecx |
398 | inc ecx |
304 | mov edi,dword[str1] |
399 | mov edi,dword[str1] |
305 | stdcall str_len,edi |
400 | stdcall str_len,edi |
306 | add edi,eax |
401 | add edi,eax |
307 | cld |
- | |
308 | repne movsb |
402 | cld |
309 | pop esi edi ecx eax |
403 | repne movsb |
Line 310... | Line 404... | ||
310 | ret |
404 | ret |
311 | endp |
405 | endp |
Line 322... | Line 416... | ||
322 | jmp @b |
416 | jmp @b |
323 | @@: |
417 | @@: |
324 | sub eax,[str1] |
418 | sub eax,[str1] |
325 | ret |
419 | ret |
326 | endp |
420 | endp |
327 | 421 | ||
- | 422 | align 4 |
|
- | 423 | proc String_crop_0 uses eax ebx ecx edi |
|
- | 424 | mov edi,Data_String |
|
- | 425 | mov al,'.' |
|
- | 426 | mov ecx,32 |
|
- | 427 | repne scasb |
|
- | 428 | mov ebx,edi |
|
- | 429 | mov edi,Data_String |
|
- | 430 | xor al,al |
|
- | 431 | mov ecx,32 |
|
- | 432 | repne scasb |
|
- | 433 | cmp ebx,edi |
|
- | 434 | jg .end_f |
|
- | 435 | dec edi |
|
- | 436 | .cycle0: |
|
- | 437 | dec edi |
|
- | 438 | cmp edi,Data_String |
|
- | 439 | jle .end_f |
|
- | 440 | cmp byte[edi],'0' |
|
- | 441 | jne .cycle0end |
|
- | 442 | mov byte[edi],0 |
|
- | 443 | jmp .cycle0 |
|
- | 444 | .cycle0end: |
|
- | 445 | cmp byte[edi],'.' |
|
- | 446 | jne .end_f |
|
- | 447 | mov byte[edi],0 |
|
- | 448 | .end_f: |
|
- | 449 | ret |
|
- | 450 | endp |
|
- | 451 | ||
328 | 452 |