Moderadores: andre_luis, 51, guest2003, Renie
Jozias del Rios escreveu:Isso aí! Boa sorte nas divisões por 10^n. Tomare que vc faça isso em C, pq fazer em ASM dá um trabalho.. hehe
...
Djalma Toledo Rodrigues escreveu:Jozias del Rios escreveu:Isso aí! Boa sorte nas divisões por 10^n. Tomare que vc faça isso em C, pq fazer em ASM dá um trabalho.. hehe
...
Ah dá e como dá
Da tanto trabalho que em ASM simplesmente se 'pega' o Digito converte via tabela abcdef (dos 7 segmentos) e manda o Byte pro Mux
Ufa!! que trabalho que deu.
DJ
cblock 0x20
input_value : 2
output_digits : 5
endc
void f(int i)
{
unsigned int j,k;
if(i)
{
f(j = (i + (i<<3) + (i<<4) + (i<<7) + (i<<8) + (i<<11) + (i<<12))>>16);
putchar(i-((j<<1)+(j<<3))+'0');
}
}
int main()
{
f(0x3172);
}
Jozias del Rios escreveu: ... O problema é justamente esse verbo aí... 'pega'...
Te lanço um desafio:
input: um numero unsigned de 16 bits, por exemplo 12658 que é 0x3172
Djalma Toledo Rodrigues escreveu:Jozias del Rios escreveu: ... O problema é justamente esse verbo aí... 'pega'...
Te lanço um desafio:
input: um numero unsigned de 16 bits, por exemplo 12658 que é 0x3172
Pô como vocês "cansam a minha beleza" ( Depois daquela da Juliana .. )
Hexadecimal e representação.
Dentro do µC ou do µP é tudo Binário , Bináááriooo.
Em BCD um Byte contem 2 digitos "coladinhos" --- Des_Niblando ...
UFA!
DJ
unsigned int dmil,mil,cen,dez,un;
dmil=dado/10000;
mil=(dado-dmil*10000)/1000;
cen=(dado-dmil*10000-mil*1000)/100;
dez=(dado-dmil*10000-mil*1000-cen*100)/10;
un=dado-dmil*10000-mil*1000-cen*100-dez*10;
Summary:
Program space used 17Fh ( 383) of 2000h words ( 4.7%)
Data space used 19h ( 25) of 170h bytes ( 6.8%)
#define un s[0] //só pra melhor identificar em alguma função
#define dez s[1]
#define cen s[2]
#define mil s[3]
#define dmil s[4]
unsigned int s[5]; //global
void separa(unsigned int dado)
{
unsigned char i=0;
while(dado)
{
s[i]=dado%10;
dado/=10;
i++;
}
}
Summary:
Program space used 8Dh ( 141) of 2000h words ( 1.7%)
Data space used 14h ( 20) of 170h bytes ( 5.4%)
Ex.: 12658 em BCD:
00000001 (MSB) 00100110 01011000 (LSB)
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante