Lecture09 assembly language
Click here to load reader
-
Upload
programming-passion -
Category
Engineering
-
view
25 -
download
2
Transcript of Lecture09 assembly language
![Page 1: Lecture09 assembly language](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/1.jpg)
COMPUTER ORGANIZATION
AND ASSEMBLY LANGUAGE
Lecture 9
![Page 2: Lecture09 assembly language](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/2.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/3.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/4.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/5.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/6.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/7.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/8.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/9.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/10.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/11.jpg)
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](https://reader038.fdocuments.in/reader038/viewer/2022100606/55a0d3931a28ab40108b4844/html5/thumbnails/12.jpg)
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