Programação Assembly, converter hexa para binario
Conversão De Inteiro Para String Hexadecimal
Por Divisões Sucessivas
Grupo 1
Tiago Marçalo nº60172
Salvador Machado nº 65816
Ano Lectivo: 2011/2012
Índice
Índice 2
Resolução do problema 4
Descrição da solução 5
Código Fonte: 5
Problema
A chamada ao sistema que permite imprimir um número inteiro no ecrã sofre de algumas limitações. Por exemplo, só permite escrever em formato decimal (base 10). E se quisermos escrever em formato hexadecimal (base 16)?
O programa deverá pedir um número inteiro ao utilizador e deverá escrevê-lo no ecrã em base 16.
Resolução do problema
Organigrama
Legenda:
$t1= resultado da divisão
$to= guarda valor para escrever no array
$t3= serve somente para guardar o resultado da soma de %t2 com 48
$t2=resto da divisão
$t9=contador
Descrição da solução
Este problema resolvemo-lo igualando cada resto das divisões consecutivas com o correspondente em hexadecimal.
Fiz a verificação 1 a 1, primeiro verifiquei se o resto da divisão era diferente de 10, se for diferente de 10, então vai comparar se e diferente de 11…. Se o resto da divisão não for diferente de 10, se for 10, então implementa 1 no contador e escreve o resto na posição 1 do array. O programa faz isso consecutivamente ate o resultado da divisão for 0, 0 porque quer dizer que o numero esta dividido ao máximo.
No fim do programa vou apresentar o que esta escrito no array. Para isso tenho que o escrever da ultima posição do array para a primeira, porque e assim que se lê 1 numero nas divisões sucessivas por 16. Para isto utilizei o contador, mas em vês de estar a incrementar como para escrever no array, esta a decrementar para poder imprimir a última, depois a penúltima ate a primeira.
Código Fonte: .data contr: .byte 0:33