Chapter 3 - PowerPoint PPT Presentation

About This Presentation
Title:

Chapter 3

Description:

One Binary digit (bit) represents 2 possible states (0, 1) ... From right to left, multiply the digit of the number-to-convert by its baseposition ... – PowerPoint PPT presentation

Number of Views:87
Avg rating:3.0/5.0
Slides: 36
Provided by: ValuedDel2
Category:
Tags: chapter | digit

less

Transcript and Presenter's Notes

Title: Chapter 3


1
Chapter 3 Digital Logic and Binary Numbers
  • These are lecture notes to accompany the book
    SPARC Architecture, Assembly Language
    Programming, and C,
  • by Richard P. Paul, 2nd edition, 2000.
  • By Michael Weeks

2
Binary
  • A computer is a bistable device
  • A bistable device
  • Easy to design and build
  • Has 2 states 0 and 1
  • One Binary digit (bit) represents 2 possible
    states (0, 1)

3
  • With 2 bits, 4 states are possible (22 4)

Bit1 Bit0 State 0 0 1 0 1 2 1 0 3 1 1
4
Bit2 Bit1 Bit0 State 0 0 0 1 0 0 1 2 0 1 0 3 0 1
1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 8
  • With 3 bits, 8 states are possible (23 8)
  • With n bits, 2n states are possible

4
Binary Coded Decimal (BCD)
  • Why not use 4 bits to represent decimal?
  • Let 0000 represent 0
  • Let 0001 represent 1
  • Let 0010 represent 2
  • Let 0011 represent 3, etc.
  • This is called BCD
  • Only uses 10 of the 16 possibilities

5
Binary Number System
  • From left to right, the position of the digit
    indicates its magnitude (in decreasing order)
  • E.g. in decimal, 123 is less than 321
  • In binary, 011 is less than 100
  • A subscript indicates the numbers base
  • E.g. is 100 decimal or binary? We dont know!
  • But 1410 11102 is clear

6
Bytes
  • A group of 8 bits is a byte
  • A byte can represent 28 256 possible states
  • Registers are usually a multiple of bytes
  • SPARC registers have 32 bits (4 bytes)
  • 232 4,294,967,296

7
Memory Addresses
  • Memory addresses are in binary
  • often 32 bits, these days
  • if each memory address maps to 1 byte
  • 232 bytes 4 GB
  • K kilo thousand,
  • but 1KB actually means 1024 bytes
  • 1MB 1024 x 1024 bytes
  • 1GB 1024 x 1024 x 1024 bytes

8
Octal and Hexadecimal
  • It is difficult for a human to work with long
    strings of 0s and 1s
  • Octal and Hexadecimal are ways to group bits
    together
  • Octal base 8
  • Hexadecimal base 16

9
Hexadecimal
Bit3 Bit2 Bit1 Bit0 Symbol 0 0 0 0 0 0 0 0
1 1 0 0 1 0 2 0 0 1 1 3 0 1 0
0 4 0 1 0 1 5 0 1 1 0 6 0 1 1
1 7 1 0 0 0 8 1 0 0 1 9 1 0 1
0 a 1 0 1 1 b 1 1 0 0 c 1 1 0
1 d 1 1 1 0 e 1 1 1 1 f
  • With 4 bits, there are 16 possibilities
  • Use 0, 1, 2, 3, 9 for the first 10 symbols
  • Use a, b, c, d, e, and f for the last 6

10
Binary to Hexadecimal
  • 01010110101100112 ? in hex
  • Group into 4 bits, from the right
  • 0101, 0110, 1011, 00112
  • Now translate each (see previous table)
  • 01012 gt 5, 01102 gt 6, 10112 gt b, 00112 gt 3
  • So this is 56b316
  • What if there are not enough bits?
  • Pad with 0s on the left

11
Hexadecimal to Binary
  • f0e516 ? in binary
  • Translate each into a group of 4 bits
  • f16 gt 11112, 016 gt 00002, e16 gt 11102, 516 gt
    01012
  • So this is 11110000111001012

12
Decimal to Any Number Base
  • Take the decimal number, and divide by the new
    number base
  • Keep track of the quotient and remainder
  • Repeat until quotient 0
  • Read number from the bottom to the top

13
Decimal to Binary
  • Binary is base 2
  • Example convert 35 (decimal) to binary
  • Quotient Remainder
  • 35 / 2 17 1
  • 17 / 2 8 1
  • 8 / 2 4 0
  • 4 / 2 2 0
  • 2 / 2 1 0
  • 1 / 2 0 1
  • So 3510 1000112

14
Any Number Base to Decimal
  • From right to left, multiply the digit of the
    number-to-convert by its baseposition
  • Sum all results

15
Binary to Decimal
  • Binary is base 2
  • Example convert 10110 (binary) to decimal
  • 101102 1x24 0x23 1x22 1x21 0x20
  • 1x16 0x8 1x4 1x2 0x1
  • 16 0 4 2 0
  • 22
  • So 101102 2210

16
Hexadecimal to Decimal
  • Hexadecimal is base 16
  • Example convert 16 (hex) to decimal
  • 1616 1x161 6x160
  • 1x16 6x1
  • 16 6
  • 22
  • So 1616 2210
  • Not surprising, since 1616 0001, 01102
  • If one of the hex digits had been gt 9, say c,
    then we would have used 12 in its place.

17
ASCII
  • American Standard Code for Information
    Interchange
  • Use byte values to represent characters
  • The assembler allows double-quotes
  • mov 0x4d, r3 ! Moves capital M to register 3
  • mov M, r3 ! This command does the same

18
ASCII chart
19
Bitwise Logical Operations
  • There are several binary operations
  • NOT
  • AND
  • OR
  • XOR
  • NAND
  • NOR

20
NOT
  • The NOT operation simply complements a binary
    value
  • not (a)
  • a

a not(a) 0 1 1 0
21
AND
  • The AND operation uses 2 binary values
  • a and b

a b a and b 0 0 0 0 1 0 1 0 0 1 1 1
22
OR
  • The OR operation uses 2 binary values
  • a or b

a b a or b 0 0 0 0 1 1 1 0 1 1 1 1
23
XOR
  • The XOR (exclusive-or) operation uses 2 binary
    values
  • True when only one input is true.
  • a xor b

a b a xor b 0 0 0 0 1 1 1 0 1 1 1 0
24
NAND
  • The NAND (Not-AND) operation uses 2 binary values
  • Take the AND function, and complement it.
  • a nand b

a b a nand b 0 0 1 0 1 1 1 0 1 1 1 0
25
NOR
  • The NOR (Not-OR) operation uses 2 binary values
  • Take the OR function, and complement it.
  • NAND and NOR are easy to make on a chip. Why?
    Take CSc 4250 and find out!

a b a nor b 0 0 1 0 1 0 1 0 0 1 1 0
26
Possible Logic Functions
  • Suppose you have 2 binary digits a, b
  • Imagine that some function operates on them to
    create c.
  • What could this function be?
  • There are only 16 possibilities
  • And some of these are not useful!

ab
some function
c
27
Logic Operations
  • A 0011 Logical Sparc
  • B 0101
  • 0 0000 false
  • 1 0001 a and b and
  • 2 0010 a and (not b) andn
  • 3 0011 a
  • 4 0100 b and (not a)
  • 5 0101 b
  • 6 0110 a xor b xor
  • 0111 a or b or
  • 1000 a nor b
  • 1001 a xor (not b) xnor
  • A 1010 not b
  • B 1011 a or (not b) orn
  • C 1100 not a
  • D 1101 b or (not a)
  • E 1110 a nand b
  • F 1111 true

28
Bitwise
  • Each of these logic functions is a bitwise
    operation, meaning that the result is independent
    of the bits to the left or right
  • e.g. 1 0 1
  • or 0 1 1
  • 1 1 1
  • compare this with addition

29
Logic Instruction Examples
mov 0x47, l0 and l0,
0xca, l1 mov 0x47, l0
andn l0, 0xca, l1 mov 0x47,
l0 or l0, 0xca, l1 mov
0x47, l0 orn l0, 0xca, l1
mov 0x55, l0 not l0
42
  • mov 0x21, l0
  • and l0, 0x3c, l1
  • mov 0x21, l0
  • or l0, 0x3c, l1
  • mov 0x55, l0
  • xnor l0, 0x3c, l1
  • mov 0x55, l0
  • xor l0, 0x3c, l1

20
5
3d
cf
ffffff96
ffffff77
69
ffffffaa
30
A Few More Logic Examples
In all the examples below, these registers have
the following initial values l0
0x12345678 l1 0x9abcdef0 What are the values
for l1 after the instruction?
xor l0, l1, l1 not l0, l1
  • and l0, l1, l1
  • or l0, l1, l1

123456780
88888888
edcba987
9abcdef8
31
SPARC Instruction Format
  • These commands are in the form

command source register 1, source register 2,
destination register command source register
1, immediate value, destination register
  • command can be any of the following
  • and, andn, xor, or, xnor, orn
  • andcc, andncc, xorcc, orcc, xnorcc, orncc
  • the cc means set condition codes
  • andn means a and (not b)
  • orn means a or (not b)

32
SPARC Logical Instruction Example
  • cmp a_r, 0
  • ble next
  • nop
  • add b_r, 1, b_r
  • next

This is equivalent to if (a gt 0) b
a_r and b_r will be replaced by the actual
registers, such as r2 and r3
33
Synthetic Instructions
  • The cmp command is a synthetic one. It is a macro
    that uses g0. The above cmp command will be
    expanded to
  • subcc a_r, g0, g0
  • Also, the tst command compares a register to 0
  • tst a_r
  • which the assembler turns into
  • orcc a_r, g0, g0
  • Since g0 ignores any updates, only the condition
    codes are affected.

34
Flags
  • Since individual bits are used to represent
    boolean flags, a word may contain 32 flags.
  • Common flag operations and mnemonics
  • set bset ( done with or )
  • clear bclr ( done with andn )
  • toggle btog ( done with xor )

35
Testing Flags
  • This command will see if one or more flags is set
  • btst reg_or_imm, regrs1
  • it expands to
  • andcc regrs1, reg_or_imm, g0
  • (notice how the operands are switched)
  • example test if flag 0x02 is set
  • btst 0x02, a_r
  • be clear
  • nop
  • set
  • clear
Write a Comment
User Comments (0)
About PowerShow.com