Lecture09 assembly language

12

Click here to load reader

Transcript of Lecture09 assembly language

Page 1: Lecture09 assembly language

COMPUTER ORGANIZATION

AND ASSEMBLY LANGUAGE

Lecture 9

Page 2: Lecture09 assembly language

Today

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

Page 3: Lecture09 assembly language

Numbers

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

Page 4: Lecture09 assembly language

Unsigned Numbers

Representation(d31 d30 … d2 d1 d0)2 = d31*2

31 + d30*230 + … d2*2

2 + 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-1

32

Page 5: Lecture09 assembly language

Addition of Unsigned Numbers

Addition0 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

Page 6: Lecture09 assembly language

Subtraction of Unsigned

Numbers

Subtraction0 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

Page 7: Lecture09 assembly language

Signed 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*2

30 + … d2*22 + d1 * 21 + d0*2

0

Number Range = -(231-1), …,-1, 0,+1, …, +(231-1)

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 magnitude

1-bit sign

Page 8: Lecture09 assembly language

2s Complement Representation

Representation (d31 d30 … d2 d1 d0)2 = d31*(-2)31 + d30*2

30 + … d2*22 + d1 * 21 + d0*2

0

Examples

0000 0000 0000 0000 0000 0000 0000 0000two = 0ten0000 0000 0000 0000 0000 0000 0000 0001two = + 1ten0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten...

0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646ten0111 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,647ten1000 0000 0000 0000 0000 0000 0000 0010two = – 2,147,483,646ten...

1111 1111 1111 1111 1111 1111 1111 1101two = – 3ten1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten1111 1111 1111 1111 1111 1111 1111 1111two = – 1ten

Page 9: Lecture09 assembly language

Add 2’s Complement Numbers

Just like unsigned numbers

7 + 6 = 13

-4 + -3 = -7

0 1 1 10 1 1 0+1 1 0 1

11

1 1 0 01 0 1 1+0 1 1 1

1

0

0

0

11

1

Page 10: Lecture09 assembly language

Subtract 2’s Complement

Numbers

A – B = A + (-B) = A + (!B + 1)

Just like unsigned numbers

6 – 7 = 6 + (~7 + 1) = -1

-3 – 5 = -3 + (~(5)+1) = -8

1 1 0 1

0 1 0 1-

1 0 0 0

0 1 1 0

0 1 1 1-

1 1 1 1

00

1

0 1 1 0

1 0 0 1+

1 1 1 1

01

1

10

1

1 1 0 1

1 0 1 1+

1 0 0 0

11

1

Page 11: Lecture09 assembly language

Overflow

When result of operation too large to fit in 32-bits7 – (-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

Page 12: Lecture09 assembly language

Effects 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