cs 230: computer organization and assembly language
DESCRIPTION
CS 230: Computer Organization and Assembly Language. Aviral Shrivastava. Department of Computer Science and Engineering School of Computing and Informatics Arizona State University. Slides courtesy: Prof. Yann Hang Lee, ASU, Prof. Mary Jane Irwin, PSU, Ande Carle, UCB. Announcements. Quiz 2 - PowerPoint PPT PresentationTRANSCRIPT
CCMMLLCCMMLL
CS 230: Computer CS 230: Computer Organization and Organization and
Assembly LanguageAssembly LanguageAviral
ShrivastavaDepartment of Computer Science and
EngineeringSchool of Computing and Informatics
Arizona State University
Slides courtesy: Prof. Yann Hang Lee, ASU, Prof. Mary Jane Irwin, PSU, Ande Carle, UCB
CCMMLLCCMMLL
AnnouncementsAnnouncements
CCMMLLCCMMLL
CSE 230 Road mapCSE 230 Road map
• So far– Write any program in MIPS assembly
language– Convert into binary instructions
• Today– How are numbers represented– How are they added, subtracted,
multiplied divided
CCMMLL
NumbersNumbers• Bits are just bits (no inherent meaning)
– conventions define relationship between bits and numbers
• Unsigned Numbers– 0 - 231
• Large Numbers– Avogadro's number
• 6.0221415 × 1023 ~ 64 bits
• Signed Numbers– How to represent –ve numbers
• Fractions– How to represent 14159265.3
CCMMLLCCMMLL
Unsigned NumbersUnsigned Numbers• Representation
(d31 d30 … d2 d1 d0)2 = d31*231 + d30*230 + … d2*22 + d1 * 21 + d0*20
0000 0000 0000 0000 0000 0000 0000 0000 = 010
0000 0000 0000 0000 0000 0000 0000 0001 = 110
0000 0000 0000 0000 0000 0000 0000 0010 = 210
. . . . . . . . . .1111 1111 1111 1111 1111 1111 1111 1111 =
4,294,967,29510
• Minimum Number= 0 = (0000….0000)2
• Maximum Number= (1111….1111)2 = (1 0000….0000)2 – 1 = 232-132
CCMMLLCCMMLL
Addition of Unsigned Addition of Unsigned NumbersNumbers
• Addition 0 0 1 1 3 + 0 0 1 0 +2--------------------- 0 1 0 1 5
• What happens when– Addition results in a number that does
not fit in 32-bits• 232-1 + 232-1 = 2*232 – 2 = 233 -2 -- needs
33 bits
– Overflow
CCMMLLCCMMLL
Subtraction of Unsigned Subtraction of Unsigned NumbersNumbers
• Subtraction 0 0 1 1 3 - 0 0 1 0 -2--------------------- 0 0 0 1 1
• What happens when– You subtract greater number from
smaller number• Need –ve numbers
CCMMLLCCMMLL
Signed NumbersSigned Numbers• One simple strategy
– Sign Magnitude Representation• Leftmost bit is sign bit• Rest 31-bits are unsigned
– Representation• (d31 d30 … d2 d1 d0)2 = (-1)*d31 + d30*230 + … d2*22 + d1 * 21 +
d0*20
– Number Range = -(231-1), …,-1,-0, +0,+1, …, +(231-1)• 2 zero’s
– How to find –ve of a number• Just change the sign-bit
– Addition & Subtraction• Add/Sub the 31-bits, and change the sign bit logically• Need a seamless way to perform these very frequent
operations
31-bit magnitude1-bit sign
CCMMLLCCMMLL
2s Complement 2s Complement RepresentationRepresentation
• Representation• (d31 d30 … d2 d1 d0)2 = d31*(-2)31 + d30*230 + … d2*22 + d1 * 21 + d0*20
• Examples
0000 0000 0000 0000 0000 0000 0000 0000two = 0ten
0000 0000 0000 0000 0000 0000 0000 0001two = + 1ten
0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten...
0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646ten
0111 1111 1111 1111 1111 1111 1111 1111two = + 2,147,483,647ten
1000 0000 0000 0000 0000 0000 0000 0000two = – 2,147,483,648ten
1000 0000 0000 0000 0000 0000 0000 0001two = – 2,147,483,647ten
1000 0000 0000 0000 0000 0000 0000 0010two = – 2,147,483,646ten...
1111 1111 1111 1111 1111 1111 1111 1101two = – 3ten
1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten
1111 1111 1111 1111 1111 1111 1111 1111two = – 1ten
CCMMLLCCMMLL
Negate 2's Complement Negate 2's Complement NumberNumber
• Negating a two's complement number: invert all bits and
add 1
– remember: “negate” and “invert” are quite different!• 0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten
• 1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten
• Converting n bit numbers into numbers with more than n
bits:
– MIPS 16 bit immediate gets converted to 32 bits for arithmetic
• "sign extension"
– copy the most significant bit (the sign bit) into the other bits
0010 -> 0000 0010
1010 -> 1111 1010
CCMMLLCCMMLL
Add 2’s Complement Add 2’s Complement NumbersNumbers
• Just like unsigned numbers7 + 6 = 13
-4 + -5 = -9
0 1 1 10 1 1 0+1 1 0 1
11
1 1 0 01 0 1 1+0 1 1 1
1
00
0
11
1
CCMMLLCCMMLL
Subtract 2’s Complement Subtract 2’s Complement NumbersNumbers
• A – B = A + (-B) = A + (!B + 1)• Just like unsigned numbers
6 – 7 = 6 + (~7 + 1) = -1
-3 – 5 = -3 + (~(5)+1) = -81 1 0 10 1 0 1-1 0 0 0
0 1 1 00 1 1 1-1 1 1 1
001
0 1 1 01 0 0 1+1 1 1 1
011
101
1 1 0 11 0 1 1+1 0 0 0
111
CCMMLLCCMMLL
OverflowOverflow• When result of operation too large to fit in 32-bits
7 – (-13) = 20
• Detect Overflows– Positive + Positive -> Negative– Negative + Negative -> Positive– Positive – Negative -> Negative– Negative – Positive -> Positive
• Consider the operations A + B, and A – B– Can overflow occur if B is 0 ?– Can overflow occur if A is 0 ?
0 1 1 10 0 1 1-
01
0 1 1 11 1 0 1+0 1 0 0
001
CCMMLLCCMMLL
Effects of OverflowEffects of Overflow• An exception (interrupt) occurs
– Control jumps to predefined address for exception– Interrupted address is saved for possible
resumption
• Details based on software system / language– example: flight control vs. homework assignment
• Don't always want to detect overflow– new MIPS instructions: addu, addiu, subu
note: addiu still sign-extends!note: sltu, sltiu for unsigned comparisons
CCMMLLCCMMLL
Yoda says…Yoda says…
• Luke: I can’t believe it. • Yoda: That is why you fail