LusoRobótica - Robótica em Português

Sistemas específicos => 8051 => Tópico iniciado por: filipe89 em 21 de Dezembro de 2012, 15:09

Título: 8051 - dividir por 2 bytes- assembly
Enviado por: filipe89 em 21 de Dezembro de 2012, 15:09
Boa tarde, estou a fazer um projecto onde tenho que fazer uma regra de 3 simples, uControlador equivalente ao 8051.

Ou seja vou ter de multiplicar um byte (8 bits)  por outro (no caso o valor fixo 10) o que me dá 16bits e agora quero-o o divir, e esses 16bits estão em A e B.

Como é consigo efectuar a operação sendo que só quero a parte inteira?


PS: algum moderador que me posso mover este tópico para »Sistemas específicos » 8051
é que só depois vi que havia sector só para o 8051

obrigado
Título: Re: 8051 - dividir por 2 bytes- assembly
Enviado por: ivitro em 21 de Dezembro de 2012, 17:55
Isso é em C ou assembly?
Título: Re: 8051 - dividir por 2 bytes- assembly
Enviado por: dropes em 21 de Dezembro de 2012, 23:34
Não foi preciso procurar muito, já programei em 8051 entretanto já devo ter esquecido muita coisa

-->> ADD :: http://www.8052.com/add16.phtml (http://www.8052.com/add16.phtml)
-->> Subtract :: http://www.8052.com/subb16.phtml (http://www.8052.com/subb16.phtml)
-->> Multiply :: http://www.8052.com/mul16.phtml (http://www.8052.com/mul16.phtml)
-->> Division :: http://www.8052.com/div16.phtml (http://www.8052.com/div16.phtml)
Título: Re: 8051 - dividir por 2 bytes- assembly
Enviado por: filipe89 em 22 de Dezembro de 2012, 05:00
Isso é em C ou assembly?

assembly
Título: Re: 8051 - dividir por 2 bytes- assembly
Enviado por: GnGz em 22 de Dezembro de 2012, 10:54
Terás de fazer shift de maneira a separar os dois bocados da variavel de 16bits e colocar os resultados do shift nessas Variavéis A e B.

http://www.edsim51.com/8051Notes/8051/rotateInstructions.html (http://www.edsim51.com/8051Notes/8051/rotateInstructions.html)
Título: Re: 8051 - dividir por 2 bytes- assembly
Enviado por: filipe89 em 24 de Dezembro de 2012, 13:26
Terás de fazer shift de maneira a separar os dois bocados da variavel de 16bits e colocar os resultados do shift nessas Variavéis A e B.

http://www.edsim51.com/8051Notes/8051/rotateInstructions.html (http://www.edsim51.com/8051Notes/8051/rotateInstructions.html)

A multiplicação é fácil e esse é que me dá 2 bit (A e B):
Exemplo=
100 - 10
250 - x

x = 250 * 10 => 2500 ou seja A=196 e B=9

agora como faço para o resultado de divisão por 100 me dê 25?