Ch.3 Representation and Manipulation of Information

advertisement
Ch.3 Representation and
Manipulation of Information
From Introduction to Embedded
Systems: Interfacing to the
Freescale 9s12 by Valvano, published
by CENGAGE
3.1 Precision
• The number of distinct or different values
(page 57).
• Alternatives—the total number of
possibilities—decimal digits, bytes, or
binary bits.
• Table 3.1 shows the relationship between
bits, bytes and alternatives.
Checkpoint
• Checkpoint 3.1 How many bytes of
memory would it take to store a 50 bit
number?
Precision (cont.)
• Decimal digita are used to specify
precision of measurement systems that
display results as numerical values.
• Table 3.2 (page 58 of text).
• (1/2) decimal digit –a digit that can be 0 or
1.
• Abbreviations for large numbers (Table
3.3).
Checkpoints
• Checkpoint 3.2: How many binary bits is
equivalent to 3 and (1/2) decimal digits.
• Checkpoint 3.3: About how many
decimal digits is 64 binary bits? You can
this without a calculator, just using the
“rule of thumb” (see page 58).
• Checkpoint 3.4 A 2 tebibyte storage
system can store how many bytes?
3.2 Boolean Information
• Two states—logical true and false.
• When interfacing to a light, motor, or a
heater, the Boolean could mean on and
off.
• Positive logic—False is all zeros; true is
any nonzero value.
• Negative logic—absence of a voltage is
true and the presence of a voltage is false.
3.3 8-bit numbers
• Value of an unsigned number for 8-bits
– N = 128*b7 + 64*b6 + 32*b5 + 16*b4 + 8*b3 +
4* b2 + 2*b1 + b0.
– Table 3.4 (page 61 of the text)—shows
examples of conversions.
Conversion and Basis Elements
• The basis of a number sysstem is a subset from
which linear combinations of the basis elements
can be used to construct the entire set.
• Algorithm:
–
–
–
–
–
Start with MSB.
Do we need the basis element for the number?
If yes, then the bit is a 1—if no, then it is a 0.
Continue to the next basis element.
See Table 3.5, page 61 for an example.
Checkpoints
• Checkpoint 3.6: Convert the binary number
%01101010 to unsigned decimal.
• Checkpoint 3.7: Convert the hex number $45
to unsigned decimal.
• Checkpoint 3.8: In this conversion algorithm,
how can we tell if a basis element is needed?
• Checkpoint 3.9 Give the representations of the
decimal 45 in 8-bit binary and hexadecimal
• Checkpoint 3.10 Give the representations of the
decimal 200 in 8-bit binary and hexadecimal
Other Number Schemes for
Negative Number Representation
• One’s complement — complement each bit.
– 0001 1001 –the one’s complement is 1110 0110—this
is the negative of the number.
– Problems: two representations for 0 and no basis
elements.
• Two’s complement — complement each bit
then add 1 to the result.
– 0001 1001 when negated becomes 1110 0111.
– N = -128*b7 + 64*b6 + 32*b5 + 16 * b4 + 8 * b3 +
4*b2 + 2*b1+ b0.
Checkpoints
• Checkpoint 3.11 Convert the signed
binary number%11101010 to signed
decimal.
• Checkpoint 3.12 Are the signed and
unsigned decimal representations of the 8bit number $45 the same or different?
Other Conversion Techniques
•
•
Table 3.7 illustrates conversion of -100 to
signed 8-bit binary (page 63).
Other techniques
1. Convert them into unsigned binary, then do
a two’s complement negate.
2. Add 256 to the number, then conert the
unsigned result to binary using the unsigned
method.
Checkpoints
• Checkpoint 3.13: Give the
representations of -45 in 8-bit binary and
hexadecimal.
• Checkpoint 3.14: Why can’t you
represent the number 200 using 8-bit
signed binary?
Other schemes
•
Sign-Magnitude Representation --if b7
is a 1, then the number is negative.
– Problems:
1. No basis function
2. Two representations for the number zero.
3. Different hardware is needed for addition and
subtraction (unlike two’s complement).
•
Binary Coded Decimal (BCD)—easy for
humans to read—each decimal digit is
represented by a 4-bit binary.
Checkpoint
• Checkpoint 3.15: What binary values
are used to store the number 25 in 8-bit
BCD format?
3.4 16-bit Numbers
•
•
•
•
•
Word or double byte.
Extension of the 8-bit concept.
See Figure 3.4 (page 64).
See Table 3.9 (page 65).
Two’s Complement—Table 3.10.
Checkpoints
• Checkpoint: 3.16: Convert the 16-bit binary number %0010 0000
0110 1010 to unsigned decimal.
• Checkpoint 3.17: Convert the 16-bit hex number $1234 to
unsigned decimal.
• Checkpoint 3.18: Convert the unsigned decimal number 1234 to
16-bit hexadecimal.
• Checkpoint 3.19: Convert the unsigned decimal number 10000 to
16-bit binary.
• Checkpoint 3.20: Convert the 16-bit hex number $1234 to signed
decimal.
• Checkpoint 3.21: Convert the 16-bit hex number $ABCD to signed
decimal.
• Checkpoint 3.22: Convert the signed decimal number 1234 to 16-bit
hexadecimal.
• Checkpoint 3.23: Convert the signed decimal number -100000 to
16-bit binary.
3.5 Extended Precision Numbers
• Unsigned numbers with n bits (see page
66).
• Two’s complement n-bit numbers.
• Binary Coded Decimal n-bit numbers.
Checkpoint
• Checkpoint 3.24: What hexadecimal
values are used to store the number 3456
in 16-bit BCD format?
3.6 Logical Operations
• Unary Operations—produces its result
given a single input parameter—negate,
increment, decrement.
• Logical Not Operation—Figure 3.5.
• Binary Operations—produce a single
result given two inputs—AND(&), OR(|),
and exclusive OR(^)—Table 3.12, Figure
3.6.
Logical Operations and the 9S12
• Operations are performed in a bit-wise
fashion.
• N bit will be set if the result is negative.
• Z bit will be set if the result is zero.
• Logical operations at bottom of page 68
will clear the V bit (signed overflow) and
leave the C bit unchanged.
Examples (pages 69-74)
• 3.1 Write software to set bit 4 and clear bits 1 and 0 of an 8-bit
variable N. (page 69).
• 3.2 Write software that sets a global variable to true if a switch is
pressed.
• 3.3 Write software that make PT4 and PT5 outputs and clears both
outputs without affecting the other bits of PTT.
• 3.4 Write software that togles the PT 3 output without affecting the
other bits of PTT.
• 3.5 Generate two out-of-phase square waves a shown in Figure 3.8
(page 72).
• 3.6 The goal is develop a means for the microcontroller to turn on
and turn off an AC-powered appliance. The interface will use a
solid-state relay with a control parameters of 2 V and 10 ma. Write
necessary subroutines to operate the system.
Digital Storage Elements
• Figure 3.11— (page 74)
• Table 3.14—D flip-flops
3.7 Shift Operations
• In assembly language, the shift is a unary
operation and is for one bit.
–
–
–
–
lsr – logical shift right
asr– arithmetic shift right
lsl– logical shift left
asl – arithmetic shift left
• C will contain the carry out.
• Figure 3.13 – 3.16 illustrates the operations.
• Roll (ror, rol) — operations can be used to
create multiple-byte shift functions (Fig. 3.7).
• See page 77 for a list with related registers.
Example 3.7
• Write assembly code to implement
M=N>>2, where M and N are 16-bit
unsigned variables.
• Solution—
–
–
–
–
ldd N
lsrd
lsrd
std M
Checkpoint
• Checkpoint 3.31: Let N and M be 8-bit
signed locations. Write assembly code to
implement M = 4*N.
Example 3.8
• Take two 4-bit nibbles and combine them
into one 8-bit value.
• Solution—Use the shift operation to move
the bits into position, then use the or
operation to combine the two parts into
one number.—See page 78.
3.8 Arithmetic operations: Addition
and Subtractions.
• Operations are performed using hardware.
• Overflows occur and have to be checked.
Checkpoints
• Checkpoint 3.32: How many bit does it take to
store the result of two unsigned 8-bit numbers
added together?
• Checkpoint 3.33: How many bits does it take to
store the result of two signed 8-bit numbers
added together?
• Checkpoint 3.34: How many bits does it take to
store the result of two unsigned 8-bit numbers
multiplied together?
• Checkpoint 3.35: How many bit does it take to
store the result of two signed 8-bit numbers
multiplied together?
3.8 Arithmetic Operations (cont.)
• Four of the condition code bits stored in
the Condition Code Register (CCR) are
used in Addition/Subtraction.
• See Table 3.16, page 79.
• The adda and addb instructions work for
both signed and unsigned data.
• N, Z, V (signed overflow), and C (unsigned
overflow) are set as shown (page 79.
Example 3.9 (page 79)
• Write assembly code to implement M =
N+10, where M and N are 8-bit variables.
• Solution:
– Perform an 8-bit read to get N into RegA.
– 10 is added to Reg A.
– Result is stored in M.
• C and V bits are set when overflows occur
on unsigned and signed operations.
Arithmetic Operations –16 bit
numbers
• The addd instruction can be used to add
16 bit numbers as discussed at the top of
page 80.
• N, Z, V, and C are set as needed (see
page 80).
Example 3.10
• Write assembly code to implement M = N +
1000, where M and N are 16-bit variables.
• Solution
–
–
–
–
–
Need to use 16-bit register (D).
16 bit read to get N (use ldd N).
Add 1000 (addd #1000).
Store the result in M ( std M).
Check C or V (whichever is appropriate) for possible
overflows.
Checkpoint
• Checkpoint 3.36: Wrie assembly code
that adds a constant 100 to Register X.
Subtraction and Compare
• The instructions at the bottom of page 80
show that compare instructions subtract a
value from memory.
• The other instructions (subtraction and
test) all subtract values as shown.
• 16-bit instructions are shown on page 81.
• Note that the programmer keeps track of
the values being signed or unsigned, since
the computer sets both C and V.
Example 3.11
• Write assembly code to implement M = N10, where M and N are 8-bit variables.
• Solution (page 81)
–
–
–
ldaa N
suba #10
staa M
Example 3.12
• Write assembly code to implement M = N1000, where M and N ar 16-bit variables.
• Solution: (page 81)
–
–
–
ldd N
subd #1000
std M
• Object and source code are illustrated on
page 82.
Adder/Subtractor Hardware
• Figure 3.18 shows a binary full adder.
• Figure 3.19 shows an 8-bit adder using 8 full-adders.
• Consider the operation adda #64
– The contents of RegA and constant binary 64 are placed at the
inputs of the hardware.
– The result is placed in Reg A.
– Condition codes are set.
• Figure 3.20 Shows a number wheel description.
• Figure 3.21 Shows how a two’s complement approach to
subtraction can use full-adders.
• Figure 3.22 Shows a number wheel for subtraction.
• More number wheels—Fig. 3.23, Fig. 3.24.
Checkpoints
• Checkpoint 3.37 Assume Register A is initially -100.
After executing the instruction adda #64 what is the
value in Register A, and the NZVC bits.
• Checkpoint 3.38 Assume Register A is initially -100.
After executing the instruction adda #64 what is the
value in Register A, and the NZVC bits.
• Checkpoint 3.39 Assume Register A is initially 200.
After executing the instruction suba #-64 what is the
value in Register A, and the NZVC bits?
• Checkpoint 3.40 Assume Register A is initially 200.
After executing the instruction suba #64 what is the
value in Register A, and the NZVC bits.
Error Handling
• Usually only have to deal with C or V.
• Promotion involves the increasing of the
precision of the input numbers. (Page 88)
• Ceiling and floor —establishing upper
and lower bounds for the result of an
operation. (Page 90).
3.9 Arithmetic Operations:
Multiplication and Divide
• As an embedded programmer, it is important to
understand the strengths and weaknesses of the
computers used.
• Many embedded computers have a limited
ability for mathematical operations (page 92).
• If precision is not supported, then a different
processor is needed (for speed) or develop
software algorithms for extended precision
(slower).
• A combination of shifts and additions can be
used.
Example 3.13
• Write assembly code to implement
unsigned M = 5*N + 25 where M is 16 bits
and N is 8 bits.
• Solution:
–
–
–
–
–
ldaa N
; 0 to 255
ldab #5
mul
; RegD = 5*N, 0 to 1275
addd #25 ;RegD+5*N+25, 25 to 1300
std M
Example 3.14
• Write assembly code to implement M =
2.3*(N + 5.5), where M is 16 bits and N is
8 bits.
• Solution
– (use integer operations)—page 96.
– Use the idiv instruction (bottom of page 95)
Example 3.15
• Write assembly code to scale an unsigned
8-bit integer into a number from 0 to 500.
• Solution
– (see page 96)
Example 3.16
• Write assembly code to implement M =
12.34*N, where M and N are unsigned 16
bits.
• Solution
– Page 97
– fdiv instruction is used--(performs a 16-bit
by 16-bit unsigned divide)
3.10 Character Information
• ASCII—American Standard Code for Information
Interchange.
• Usually 7 bits with 8th bit (MSB) set to 0.
• See Table 3.21 (page 98).
• ISO/IEC 8859 uses the 8th bit to define additional
characters.
• Unicode Standard—handles some ambiguities,
but is more complex.
• Figure 3.33 illustrates the concept of “nulltermination for storage of a string of ASCII.
3.11 Conversions
• C-examples illustrate the conversion
process.
3.12 Debugging Monitor Using a
LED
• Monitors are used in real-time systems as
a debugging tool (page 102).
• An LED attached to a port is an example
of a “Boolean” monitor.
Checkpoints
• Checkpoint 3.45: How is the character 0
represented in ASCII?
• Checkpoint 3.46: Assume Register A
contains an ASCII code 0 to 9. Write
assembly code that converts the ASCII
code into the corresponding decimal
number.
Download