Once upon a time,
when engineers enjoyed fair working contracts that lasted longer than
twelve weeks,
microprocessors featured three supply voltages at a 4 Bit word length,
and were mostly used in calculators or cash registers.
With only a few thousand transistors a chip, program memory for applications was limited.
Problem is, that microprocessors and end users seem to run on different
numeric formats.
Some simple applications only required to add/subtract fixed point decimal
numbers.
So converting large numbers from decimal to binary (hexadecimal)
and back had a tendency to create an overhead in software.
But there is a trick to make the microprocessor calculate in decimal.
decimal binary hexadecimal
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F
Left: decimal. 0..9, Base 10.
Right: 4 Bit hexadecimal. 0..F (decimal 0..15), Base 16.
When calculating decimal numbers in binary/hexadecimal,
the trick is to skip/avoid numbers between 10..15 (A..F),
and it is called decimal correction.
From the decimal point of view, we may call such numbers
illegal values, or invalid 4 Bit codes...
or, to make it sound more complicated: pseudo_tetrades.
When incrementing 9, the result would be 10 (hexadecimal A).
Adding 6 gives us 0, and a carry that increments the next higher
digit.
So the result would be 10.
When decrementing 0, we would have 15 (hexadecimal F).
Subtracting 6 gives us 9 as a result.
Now to describe, how to build our own decimal correction circuitry in hardware.
[HOME] [UP]/ [BACK] [1] [2] [3] [4] [5] [6] [7] [NEXT]
(c) Dieter Mueller 2006