Página 1 de 3

Como fazer uma soma com 24 ou 32 bits?

MensagemEnviado: 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

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

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

MensagemEnviado: 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,

MensagemEnviado: 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,

MensagemEnviado: 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).

MensagemEnviado: 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.

MensagemEnviado: 07 Dez 2010 16:11
por barboza

MensagemEnviado: 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.

MensagemEnviado: 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...

MensagemEnviado: 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

MensagemEnviado: 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.

MensagemEnviado: 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!!!

MensagemEnviado: 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).

MensagemEnviado: 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....