ðÒÉ×ÅÔ Vladislav!
÷Ôp ñÎ× 11 2005 23:18, Vladislav Baliasov -> All:
VB> óÔÏÌËÎÕÌÓÑ Ó ÐÁËÏÓÔØÀ - ÎÅ ÎÒÁ×ÉÔÓÑ avrasm-Õ ÎÅÓËÏÌØËÏ .def ÎÁ ÏÄÉÎ VB> ÒÅÇÉÓÔÒ. ëÏÍÐÉÌÉÒÕÅÔÓÑ, ÎÏ ÒÕÇÁÅÔÓÑ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑÍÉ. üÔÏ ËÁË-ÔÏ ÍÏÖÎÏ VB> ÏÂÏÊÔÉ ? òÁÄÉ ÔÁËÏÊ ÅÒÕÎÄÙ ÍÅÎÑÔØ ËÏÍÐÉÌÑÔÏÒ ×ÒÏÄÅ ËÁË ÓÍÙÓÌÁ ÎÅÔ (× VB> ÏÓÔÁÌØÎÏÍ ÏÎ ÍÅÎÑ ÕÓÔÒÁÉ×ÁÅÔ). âÏÌÅÅ ÓÔÁpÙÊ ÐÏÓÔÁר, ÏÎÉ ÎÅ pÕÇÁÌÉÓØ.
VB> ÷ÏÐÒÏÓ ×ÔÏÒÏÊ - Á ÇÄÅ-ÎÉÂÕÄØ ×ÏÄÉÔÓÑ ÁËËÕÒÁÔÎÁÑ "ÐÌÁ×ÁÀÝÁÑ" VB> ÂÉÂÌÉÏÔÅÞËÁ ÎÁ AVR ? 32-ÂÉÔÎÁÑ, 24-ÂÉÔÎÁÑ ÍÅÎÑ ÞÔÏ-ÔÏ ÓÏ×ÓÅÍ ÎÅ VB> ÐÒÉ×ÌÅËÁÅÔ... éÌÉ ÐÒÉÄÅÔÓÑ ÓÁÍÏÍÕ ÐÉÓÁÔØ ? èÍ. ïÎÁ ÖÅ ÎÅ ÍÅÎØÛÅ ËÉÌÁ ÂÕÄÅÔ ×ÅÓÉÔØ (ÎÏpÍÁÌØÎÁÑ, × ÓÍÙÓÌÅ, Ó ËÏppÅËÔÎÏÊ pÁÂÏÔÏÊ Ó ÎÕÌÅÍ, ÂÅÚËÏÎÅÞÎÏÓÔÑÍÉ É Ô.Ð.). óÏÍÎÅ×ÁÀÓØ, ÞÔÏ ÔÁËÏÅ ÓÕÝÅÓÔ×ÕÅÔ, Ô.Ë. ÏÂÙÞÎÏ ÎÁ ÁÓÓÅÍÂÌÅpÅ ×Ï ×ÓÑËÉÅ tiny ÐÉÛÕÔ, Á ÅÓÌÉ ÍÅÓÔÁ ÄÏÓÔÁÔÏÞÎÏ, ÔÏ ÐpÏÝÅ ÎÁ ÓÑÈ ÎÁÐÉÓÁÔØ.
VB> é ÔÒÅÔÉÊ ×ÏÐÒÏÓ - ÈÏÔÅÌÏÓØ ÂÙ ÎÁÊÔÉ ÆÏÒÍÁÌØÎÏÅ ÏÐÉÓÁÎÉÅ VB> ÐÏÌÉÎÏÍÉÎÁÌØÎÏÊ ÁÐÐÒÏËÓÉÍÁÃÉÉ (×ÏÔ ÚÁ×ÅÒÎÕÌ ;) ÆÕÎËÃÉÊ log(x) É VB> exp(x). ôÁÍ ÎÅ ÐÏÌÉÎÏÍÙ, Á ÍÎÏÇÏÜÔÁÖÎÙÅ ÄpÏÂÉ ÉÍÅÎÉ ËÏÇÏ-ÔÏ. éÝÉ ÌÉÔÅpÁÔÕpÕ ÐÏ ÞÉÓÌÅÎÎÙÍ ÍÅÔÏÄÁÍ ÉÌÉ ÂÌÉÖÁÊÛÅÇÏ ÄÏËÔÏpÁ ÆÉÚÍÁÔÎÁÕË. :) ÷ÙÞÉÓÌÅÎÉÅ ÌÏÇÁpÉÆÍÁ ÐpÉ×ÏÖÕ, ÎÏ Õ ÍÅÎÑ ÐÏÄ 24ÂÉÔÁ ÎÁÐÉÓÁÎÏ. åÓÌÉ ÎÕÖÎÏ - Õ ÍÅÎÑ ÇÄÅ ÔÏ ÍÁÔËÁÄÏ×ÓËÉÊ ÆÁÊÌÉË ×ÁÌÑÌÓÑ Ó ÎÏpÍÁÌØÎÏÊ ÚÁÐÉÓØÀ É ÐpÏ×ÅpËÏÊ ÜÔÏÇÏ ÁÌÇÏpÉÔÍÁ, ÍÏÇÕ ÐÏÉÓËÁÔØ.
;============================================= ; Input: Float2
log10_error: rcall SetRes0 ret
log10:
; Save order and convert to range 1~2
mov r4,Float2O sbrc Float2O,7 rjmp log10_error sbrs Float2O,6 rjmp log10_error andi Float2O,0x3F breq log10_error ldi Float2O,0x41
; Convert x to y=x-1
ldi Float1O,0x40 ; F1 = 1 ldi Float1L,0xFF ldi Float1H,0xFF rcall FSub ; F2=F2-F1
; Calculate Ln(y)
rcall SwapFl ; F1 = y mov r1,Float1O ; [r1:r2:r3] = y mov r2,Float1L mov r3,Float1H ldi Float2O,0x44 ; F2 = k5 ldi Float2L,0x53 ldi Float2H,0x8E rcall FDiv ; F2 = F1/F2 ldi Float1O,0x41 ; F1 = k4 ldi Float1L,0x15 ldi Float1H,0x8A rcall FAdd ; F2 = F1+F2 mov Float1O,r1 ; F1 = y mov Float1L,r2 mov Float1H,r3 rcall FDiv ; F2 = F1/F2 ldi Float1O,0x42 ; F1 = k3 ldi Float1L,0xFF ldi Float1H,0xC1 rcall FAdd ; F2 = F1+F2 mov Float1O,r1 ; F1 = y mov Float1L,r2 mov Float1H,r3 rcall FDiv ; F2 = F1/F2 ldi Float1O,0x42 ; F1 = k2 ldi Float1L,0x0A ldi Float1H,0x80 rcall FAdd ; F2 = F1+F2 mov Float1O,r1 ; F1 = y mov Float1L,r2 mov Float1H,r3 rcall FDiv ; F2 = F1/F2 ldi Float1O,0x41 ; F1 = k1 ldi Float1L,0x00 ldi Float1H,0x80 rcall FAdd ; F2 = F1+F2 mov Float1O,r1 ; F1 = y mov Float1L,r2 mov Float1H,r3 rcall FDiv ; F2 = F1/F2
; Convert ln(y) to log10(y)
ldi Float1O,0x40 ; F1 = log10(e) ldi Float1L,0x2E ldi Float1H,0x6F rcall FMul ; F2 = F2*F1
; Correct for order
mov r1,Float2O ; [r1:r2:r3] = F2 mov r2,Float2L mov r3,Float2H clr Float2H mov Float2L,r4 andi Float2L,0x3F subi Float2L,0x01 rcall Fix2Float ; F2 = order ldi Float1O,0x40 ; F1 = log10(2) ldi Float1L,0x10 ldi Float1H,0x4D rcall FMul ; F2 = F2*F1 mov Float1O,r1 ; F1 = log10(y) mov Float1L,r2 mov Float1H,r3 rcall FAdd ; F2 = F2+F1
ret
HÁ ÜÔÏÍ ×ÓÅ, ÐÏËÁ. Anton Abrosimov. ... ëÔÏ ÀÚÁÌ ÍÏÊ ÌÏÇÉÎ É ×ÅÓØ ÅÇÏ ×ÙÀÚÁÌ?!