`--- In m68HC11@m68H..., "Gabe " <Gabemejia@m...> wrote:`

>

> does anyone know how to print a decimal number to the screen:

>

The example you gave is not entirely clear, but I'm assuming that you

have a 8-bit or 16-bit integer value (say, in a register or memory

location) that you wish to output in base-10 decimal notation rather

than base-16 hexadecimal notation. Hence, the value 90 hex (9 * 16 +

0) would display as "144" and the value 8E hex (8 * 16 + 14) would

display as "142".

There are two common approaches to solving this problem, each with

their own pros and cons. Method #1 involves creating a table of

decimal divisors, like this:

Power10 DW 10000,1000,100,10,1

then convert your number using this (pseudocode) algorithm:

Index = 0

While (Number < Power10[Index])

Index = Index + 1

While (Index < 5)

Digit = Number / Power10[Index]

Number = Remainder of above division

Digit = Digit + $30 ;$30 = ASCII "0"

Output <ASCDigit>

Index = Index + 1

For a 8- or 16-bit <Number>, the above can be done quite easily using

HC11 assembly language. The total number of instructions would be

approximately 2x to 2.5x the number of pseudocode statements shown above.

The other common method does not require a power-of-10 lookup table

and is somewhat more efficient, but has the disadvantage of converting

the number backwards, requiring that the converted digits be saved to

memory or some buffer until the number is fully converted and ready

for display. This method works like this:

Index = 0

Do

Number = Number / 10

Digit = Remainder of above division (e.g. Number MOD 10)

Buffer[Index] = Digit + $30 ;$30 = ASCII "0"

Index = Index + 1

Until (Number = 0)

Do

Index = Index - 1

Output <Buffer[Index]>

Until (Index = 0) Either of the above algorithmns can be easily implemented in HC11

assembly language, esp. since the HC11 provides a convenient 16-bit

IDIV integer division instruction. Hopefully, you are familiar enough

with the HC11 instruction set so you can take the pseudocode

algorithmns above and translate them into assembly language (I have,

on numerous occasions ;) This task is left as a "excercise for the

student".

>

> does anyone know how to print a decimal number to the screen:

>

The example you gave is not entirely clear, but I'm assuming that you

have a 8-bit or 16-bit integer value (say, in a register or memory

location) that you wish to output in base-10 decimal notation rather

than base-16 hexadecimal notation. Hence, the value 90 hex (9 * 16 +

0) would display as "144" and the value 8E hex (8 * 16 + 14) would

display as "142".

There are two common approaches to solving this problem, each with

their own pros and cons. Method #1 involves creating a table of

decimal divisors, like this:

Power10 DW 10000,1000,100,10,1

then convert your number using this (pseudocode) algorithm:

Index = 0

While (Number < Power10[Index])

Index = Index + 1

While (Index < 5)

Digit = Number / Power10[Index]

Number = Remainder of above division

Digit = Digit + $30 ;$30 = ASCII "0"

Output <ASCDigit>

Index = Index + 1

For a 8- or 16-bit <Number>, the above can be done quite easily using

HC11 assembly language. The total number of instructions would be

approximately 2x to 2.5x the number of pseudocode statements shown above.

The other common method does not require a power-of-10 lookup table

and is somewhat more efficient, but has the disadvantage of converting

the number backwards, requiring that the converted digits be saved to

memory or some buffer until the number is fully converted and ready

for display. This method works like this:

Index = 0

Do

Number = Number / 10

Digit = Remainder of above division (e.g. Number MOD 10)

Buffer[Index] = Digit + $30 ;$30 = ASCII "0"

Index = Index + 1

Until (Number = 0)

Do

Index = Index - 1

Output <Buffer[Index]>

Until (Index = 0) Either of the above algorithmns can be easily implemented in HC11

assembly language, esp. since the HC11 provides a convenient 16-bit

IDIV integer division instruction. Hopefully, you are familiar enough

with the HC11 instruction set so you can take the pseudocode

algorithmns above and translate them into assembly language (I have,

on numerous occasions ;) This task is left as a "excercise for the

student".