Como fazer uma soma com 24 ou 32 bits?

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Como fazer uma soma com 24 ou 32 bits?

Mensagempor Guri » 06 Dez 2010 23:12

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
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Mensagempor ze » 07 Dez 2010 06:15

long int soma32(long int a, long int b)
{
return a+b;
}
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor tcpipchip » 07 Dez 2010 08:54

esta soma é com sinal, certo ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor Guri » 07 Dez 2010 09:57

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,
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Mensagempor Guri » 07 Dez 2010 10:03

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,
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Mensagempor vtrx » 07 Dez 2010 11:14

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).
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor ze » 07 Dez 2010 15:49

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.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor barboza » 07 Dez 2010 16:11

Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor vtrx » 07 Dez 2010 19:17

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.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor Guri » 07 Dez 2010 20:05

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...
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Mensagempor Djalma Toledo Rodrigues » 08 Dez 2010 08:47

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
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor vtrx » 08 Dez 2010 11:08

Olha só eu gosto do ASM

É uma linguagem única para eletrônica,não é questão de gostar.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor fabim » 08 Dez 2010 11:19

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!!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor vtrx » 08 Dez 2010 17:26

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).
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor Guri » 09 Dez 2010 10:45

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....
Guri
Byte
 
Mensagens: 457
Registrado em: 25 Abr 2010 09:05
Localização: Minas Gerais

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x