Página 1 de 3
Como fazer uma soma com 24 ou 32 bits?

Enviado:
06 Dez 2010 23:12
por Guri
Bom, alguém aí sabe me informar sobre uma rotina ou como faze-la, onde eu consiga somar até 24 ou 32 bits de comprimento com numeros inteiros...
Com 16 bits tem varios exemplos, mas com 24 ou 32 não encontrei...
Muito obrigado

Enviado:
07 Dez 2010 06:15
por ze
long int soma32(long int a, long int b)
{
return a+b;
}

Enviado:
07 Dez 2010 08:54
por tcpipchip
esta soma é com sinal, certo ?

Enviado:
07 Dez 2010 09:57
por Guri
Carmba, meus amigos eu sou mesmo uma besta quadrada.
Eu esqueci de mencionar que preciso fazer essa rotina em ASM, estou fazendo uma miséria de circuito e necessito fazer os trecos em ASM para ganhar velocidade e tenho pouca memória para uso.
Agradeço muito,

Enviado:
07 Dez 2010 10:03
por Guri
Carmba, meus amigos eu sou mesmo uma besta quadrada.
Eu esqueci de mencionar que preciso fazer essa rotina em ASM, estou fazendo uma miséria de circuito e necessito fazer os trecos em ASM para ganhar velocidade e tenho pouca memória para uso.
Eu precio na realidade somar 10 numeros de 16 bits cada um e o resultado será dividido pelo numero de vezes os numeros da soma (produtos)...
A aplicação é para usar em audio...imagine que eu tenho que reproduzir ao mesmo tempo 10 ondas sonoras com um tamanho de 16 bits cada uma, então terei que somar essas 10 ondas e depois dividir por esse mesmo coeficiente (10 no caso) e o produto será enviado para um mísero dac...
Se alguém puder me ajudar, preciso de um somador com 24 ou 32 bits e um divisor também e precisa ser em assembler, se alguém souber o principio já é o suficiente para eu começar a criar a rotina...
Agradeço muito,

Enviado:
07 Dez 2010 11:14
por vtrx
Estou saindo agora,mas acho que postei links ja faz um tempo com essas rotinas,da uma pesquisada no fórum.
Caso até a noite não obtenha respostas,posto denovo(tenho que procurar).

Enviado:
07 Dez 2010 15:49
por ze
implicitamente eu já sabia que era em asm. só precisava rir um pouco softwaremente. outra coisa motivadora de risos, pode ser que haja diferença entre os asm´s dos pics 10f ao dspic. talvez seja interessante explicitar qual é pra algum masoquista te ajudar. caso tenhamos tempo e curiosidade, posso compilar a função acima e mostrar-te o asm dela desde que eu tenha compilador do pic instalado (tenho todos mas não todos instalados)
este é o asm que o hitech gerou para um pic10F202 (um pouquinho de tempo/curiosidade eu tive). será que procede?
- Código: Selecionar todos
3: long int soma32(long int a, long int b)
4: {
005 B80 GOTO 0x180
5: return a+b;
180 208 MOVF 0x8, W
181 1CC ADDWF 0xc, W
182 03C MOVWF 0x1c
183 C00 MOVLW 0
184 603 BTFSC 0x3, 0
185 C01 MOVLW 0x1
186 1C9 ADDWF 0x9, W
187 07E CLRF 0x1e
188 603 BTFSC 0x3, 0
189 2BE INCF 0x1e, F
18A 1CD ADDWF 0xd, W
18B 03D MOVWF 0x1d
18C 603 BTFSC 0x3, 0
18D 2BE INCF 0x1e, F
18E 20A MOVF 0xa, W
18F 1DE ADDWF 0x1e, W
190 07F CLRF 0x1f
191 603 BTFSC 0x3, 0
192 2BF INCF 0x1f, F
193 1CE ADDWF 0xe, W
194 03E MOVWF 0x1e
195 603 BTFSC 0x3, 0
196 2BF INCF 0x1f, F
197 20B MOVF 0xb, W
198 1DF ADDWF 0x1f, W
199 1CF ADDWF 0xf, W
19A 03F MOVWF 0x1f
19B 02B MOVWF 0xb
19C 21E MOVF 0x1e, W
19D 02A MOVWF 0xa
19E 21D MOVF 0x1d, W
19F 029 MOVWF 0x9
1A0 21C MOVF 0x1c, W
1A1 028 MOVWF 0x8
6: }
1A2 800 RETLW 0
se analisar com um microscópio, dá até pra localizar os parâmetros in/out. mas não me pergunte.
abç & boa sorte.

Enviado:
07 Dez 2010 16:11
por barboza

Enviado:
07 Dez 2010 19:17
por vtrx
http://www.convict.lu/Jeunes/Math/Fast_operations2.htm
http://www.convict.lu/Jeunes/Math/Fast_operations.htm
http://www.piclist.com/techref/microchip/math/round/fp-24bint-ng.htm
Rotinas de 16 e 24 bits floating point ou não testadas num mísero 16F84,chegando a timing mínimo de 14 clocks.
Mais rápido não ha.
Lembrando que são rotinas para 'ninjas',iniciantes podem ter dor de cabeça,LOL.

Enviado:
07 Dez 2010 20:05
por Guri
Caracas...
Vou dar uma analizada em todo esse vasto material masoquiano...
Olha só eu gosto do ASM e sou simpatizante do C...ok...
Muito obrigado...
Depois postarei os resultados e duvidas se existirem...

Enviado:
08 Dez 2010 08:47
por Djalma Toledo Rodrigues
Se o µC é de 8 bits soma Byte a Byte
tal qual aqui na real se soma digito a digito, decimal
Casos extremos:
00H + 00H = 00H
FFH * FFH = 1FEH isto é, FEH + Carry ( vai um )
DJ

Enviado:
08 Dez 2010 11:08
por vtrx
Olha só eu gosto do ASM
É uma linguagem única para eletrônica,não é questão de gostar.

Enviado:
08 Dez 2010 11:19
por fabim
vtrx escreveu:Olha só eu gosto do ASM
É uma linguagem única para eletrônica,não é questão de gostar.
é mêmu ?
Quando você evoluir um pouco, quero ver mexer com asm no ARM..
Fico imaginando você usar uns 300K tudo em asm!!!! Você ja foi despedido, o produto faleceu, e ainda ta escovando bit!!!

Enviado:
08 Dez 2010 17:26
por vtrx
Valeu fabim,vou tentar evoluir,mas primeiro meus concorrentes terão que me desbancar (não em relação ao forum,mas em relação aos produtos que vendo).

Enviado:
09 Dez 2010 10:45
por Guri
Oi fabi...
Você é filósófo...
Você fala algumas coisas tão extraordinárias sobre a "evolução" eletrônicalógicamenteintelectualoidiâna da fase aéro espacial Cêniana...
NOSSA! realmente eu que sou um miserável humano cheio de defeitos, erros, fraquezas e pôr questão de "burrice" ainda utilizo ASM! Não é mesmo mestre bim...cara eu acho que você deve ter tido algum problema em sua infância: Deve ter sido ou ainda o é até o dia de hoje um ser (talvêz superior, intergalático) que foi muito discriminado, dai pode-se iniciar uma conclusão sobre sua repúdia em relação as pessoas normais que optaram por utilizar ASM....sei lá, de que planeta você é de fato....de repente temos um ilustre ET no forum: ASM51.COM.BR.....
Meu caro, falando sério:
Tenho observado seus comentários neste forum e notei que você é muito "GOZADOR" no sentido até digamos SARRISTA de pessoas que aquí vem para tirar suas dúvidas e solicitar ajuda, percebo que você possa sim até ser uma pessoa inteligente, humilde e disposta a colaborar
com os participantes menos desfavorecidos intelectualmente que talves por força maior ou até mesmo por opção gostam de usar ASM.
Mas o que eu quero dizer é que o problema não é o programa em ASM, C ou qualquer outra linguagem e sim o fato de você além de escrever em dialétos estranhos se coloca e colocando também as outras pessoas em situações acredito eu e acho que muitos irão concordar comigo em situações de indignação...
Eu não estou aquí para defender nada, já obtive ajuda de muitos colegas e a medida que posso colaboro também com minhas informações, tudo no intuito de ajudar.
Sei lá mas acho que você poderia ser mais "delicado" ao expor suas idéias e opniões afim de não criar situações de mal-estar entre os participantes.
Se você é um gênio é problema seu, se você não quer colaborar é um direito seu e acho que esta no lugar errado...Aquí é um forum de debates técnicos e de ajuda, se vc gosta de 16,32, ou nbits é problema seu, aquí tem muitos técnicos, engenheiros, etc...tão quão melhores que você e programam em ASM.
Sito aquí o proex que é um cara na minha opnião muito inteligente e não ví até agora nenhuma palavra dezanimadora ou de afronta ao colegas que pedem ajuda, fora o proex, sito muitos outros que além de conhecedores são profissionais e tem vontade de ajudar e contribuir com o forum, coisa bem diferente de você...
Sei lá cara, toma semanKOL....