Chapter2 - Machine Instructions and Programs
Chapter2 - Machine Instructions and Programs
Chapter2 - Machine Instructions and Programs
Machine
Instructions and
Programs
Objectives
Number, Arithmetic
Operations, and
Characters
Signed Integer
3
major representations:
Sign and magnitude
Ones complement
Twos complement
Assumptions:
1111
1110
+0
+1
0000
0001
1101
0010
+2
-4
1100
0011
+3
0 100 = + 4
-3
1011
0100
+4
1 100 = - 4
-2
1010
0101
1001
-1
0110
1000
-0
0111
+5
+6
+7
Ones Complement
Representation
-0
-1
-2
1111
1110
+0
0000
0001
1101
+1
0010
+2
-3
1100
0011
+3
0 100 = + 4
-4
1011
0100
+4
1 011 = - 4
-5
1010
0101
1001
-6
0110
1000
-7
0111
+5
+6
+7
Twos Complement
Representation
-1
-2
-3
like 1's comp
except shifted
one position
clockwise
1111
1110
+0
0000
0001
1101
+1
0010
+2
-4
1100
0011
+3
0 100 = + 4
-5
1011
0100
+4
1 100 = - 4
-6
1010
0101
1001
-7
0110
1000
-8
0111
+5
+6
+7
Binary, Signed-Integer
Representations
B
Page 28
Valuesrepresented
b3 b2b1b0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
1
1
0
0
0
0
1
1
0
0
1
1
1
0
1
0
1
0
1
0
0
1
0
1
0
1
0
1
Signand
magnitude
+7
+6
+5
+4
+3
+2
+1
+0
0
1
2
3
4
5
6
7
1' scomplement
+7
+6
+5
+4
+3
+2
+1
+0
7
6
5
4
3
2
1
0
2' scomplement
+
+
+
+
+
+
+
+
Figure2.1.Binary,signedintegerrepresentations.
7
6
5
4
3
2
1
0
8
7
6
5
4
3
2
1
-4
1100
+3
0011
+ (-3)
1101
0111
-7
11001
0100
-4
1100
-3
1101
+3
0011
10001
-1
1111
0010
+ 0011
( + 2)
( + 3)
0101
( + 5)
(c)
1011
+ 1110
1001
5
2
7
(e)
1101
1001
3
7
Page 31
(f)
(g)
(h)
(i)
(j)
0010
0100
0110
0011
1001
1011
1001
0001
0010
1101
( + 2)
( + 4)
( + 6)
( + 3)
7
5
7
( + 1)
( + 2)
3
(b)
0111
+ 1101
0100
( + 4)
6
2
( + 7)
3
( + 4)
1101
+ 0111
0100
( + 4)
0100
+ 1010
1110
(d)
0010
+ 1100
1110
0110
+ 1101
0011
1001
+ 0101
1110
( + 3)
1001
+ 1111
1000
0010
+ 0011
0101
( + 5)
Figure2.4.2'scomplementAddandSubtractoperations.
0000
0010
1100
0100
1010
0101
1001
-7
0110
1000
-8
0111
+6
+7
5 + 3 = -8
+3
+4
+5
1111
0000
+1
0001
1101
-4
-5
+0
1110
-3
+2
0011
1011
-6
-2
+1
0001
1101
-4
-5
1111
1110
-3
-1
+0
0010
1100
1011
1010
-6
0110
1000
-8
-7 - 2 = +7
0011
+3
0100
+4
0101
1001
-7
+2
0111
+7
+6
+5
Overflow Conditions
5
0111
0101
-7
1000
1001
0011
-2
1100
-8
1000
10111
Overflow
Overflow
5
0000
0101
-3
1111
1101
0010
-5
1011
0111
-8
11000
No overflow
No overflow
Overflow when carry-in to the high-order bit does not equal carry out
Sign Extension
Task:
Given w-bit signed integer x
Convert it to w+k-bit integer with same value
Rule:
Make k copies of sign bit:
X = xw1 ,, xw1 , xw1 , xw2 ,, x0
X
k copies of MSB
Decimal
Hex
Binary
3B6D
0011101101101101
15213
15213 0000C492 00000000000000000011101101101101
C493
1100010010010011
-15213
-15213 FFFFC493 11111111111111111100010010010011
Memory Locations,
Addresses, and
Operations
Memory consists
of many millions of
storage cells,
each of which can
store 1 bit.
Data is usually
accessed in n-bit
groups. n is called
word length.
firstword
secondword
ithword
lastword
Figure2.5.Memorywords.
b 31 b 30
b1
8bits
8bits
8bits
8bits
ASCII
character
ASCII
character
ASCII
character
ASCII
character
(b)Fourcharacters
b0
Big-Endian: lower byte addresses are used for the most significant bytes of the word
Little-Endian: opposite ordering. lower byte addresses are used for the less significant
bytes of the word
Word
address
Byteaddress
Byteaddress
2 4
2 4
2 3
2 2
2 1
(a)Bigendianassignment
2 4
2 1
2 2
2 3
2 4
(b)Littleendianassignment
Figure2.7.Byteandwordaddressing.
ordering of bytes
Word alignment
Access
strings
Memory Operation
Load
Store
(or Write)
Instruction and
Instruction Sequencing
Must-Perform Operations
Data
R2[LOC]
R4 [R2] + [R3]
Assemble Language
Load R2,LOC
Add R4,R2,R3
CPU Organization
Single
Accumulator
General
Register
Stack
Instruction Formats
Three-Address Instructions
ADD
R1, R2, R3
ADD
A,B,C
Two-Address Instructions
ADD
R1, R2
ADD
A,B
One-Address Instructions
ADD
B
Zero-Address Instructions
ADD
R1 R2 + R3
R1 R1 + R2
AC AC + M[B]
TOS TOS + (TOS 1)
In
one address
LOAD B
STORE B
;AC M[B]
;M[B]AC
Load
A
Add B
Load C
Instruction Formats
Example: Evaluate X=(A+B) (C+D)
Three-Address
1.
2.
3.
ADD
ADD
MUL
R1, A, B
R2, C, D
X, R1, R2
; R1 M[A] + M[B]
; R2 M[C] + M[D]
; M[X] R1 R2
Instruction Formats
Example: Evaluate (A+B) (C+D)
Two-Address
1.
2.
3.
4.
5.
6.
MOV
ADD
MOV
ADD
MUL
MOV
R1, A
R1, B
R2, C
R2, D
R1, R2
X, R1
; R1 M[A]
; R1 R1 + M[B]
; R2 M[C]
; R2 R2 + M[D]
; R1 R1 R2
; M[X] R1
Instruction Formats
Example: Evaluate (A+B) (C+D)
One-Address
1.
2.
3.
4.
5.
6.
7.
LOAD A
ADD B
STORE T
LOAD C
ADD D
MUL T
STORE X
; AC M[A]
; AC AC + M[B]
; M[T] AC
; AC M[C]
; AC AC + M[D]
; AC AC M[T]
; M[X] AC
Instruction Formats
Example: Evaluate (A+B) (C+D)
Zero-Address
1.
2.
3.
4.
5.
6.
7.
8.
PUSH A
PUSH B
ADD
PUSH C
PUSH D
ADD
MUL
(C+D)(A+B)
POP X
; TOS A
; TOS B
; TOS (A + B)
; TOS C
; TOS D
; TOS (C + D)
; TOS
; M[X] TOS
Using Registers
Registers
are faster
Shorter instructions
Potential
speedup
Minimize the frequency with which data is
moved back and forth between the memory
and processor registers.
MOVE Rj, A
MOVE Rk,B
ADD Rj,Rk
MOVE C,Rj
Address
Beginexecutionhere
Contents
Move A,R0
i+4
Add
B,R0
3instruction
program
segment
Assumptions:
- One memory operand
per instruction
- 32-bit word length
- Memory is byte
addressable
- Full memory address
can be directly specified
in a single-word instruction
i+8
Instruction
Execution and StraightLine Sequencing
c[A]+[B]
Move R0,C
Datafor
theprogram
Two-phase procedure
-Instruction fetch
-Instruction execute
Page 43
Figure2.8.AprogramforC+
Branching
Move
NUM1,R0
i+4
Add
NUM2,R0
i+8
Add
NUM3,R0
i + 4n 4
Add
NUMn,R0
i + 4n
Move
R0,SUM
SUM
NUM1
NUM2
NUMn
Figure2.9.Astraightlineprogramforaddingnnumbers.
Branching
LOOP
Program
loop
Branch target
Move
N,R1
Clear
R0
Determineaddressof
"Next"numberandadd
"Next"numbertoR0
Decrement
R1
Branch>0
LOOP
Move
R0,SUM
Conditional branch
SUM
N
NUM1
Figure2.10.Usingalooptoaddnnumbers.
NUM2
NUMn
Condition Codes
Condition
code flags
Condition code register / status register
N (negative), 1 if result is ve else 0
Z (zero), 1 if result is 0 else 0
V (overflow), 1 if arithmetic overflow occurs
else 0
C (carry), 1 if carry out occurs else 0
Different instructions affect different flags
Ex: Branch>0 tests Z flag
Conditional Branch
Instructions
Example:
A: 1 1 1 1 0 0 0 0
B: 0 0 0 1 0 1 0 0
A:
11110000
+(B): 1 1 1 0 1 1 0 0
11011100
C=1
V=0
Z=0
Addressing Modes
Addressing Modes
Opcode Mode
...
Addressing Modes
Register
Indirect
MOV
R1, (R2)
Autoincrement
Direct
/ Autodecrement
R2 = 3
R3 = 5
Addressing Modes
Indirect
Address
A=*B
Move R1,B
Move R2,(R1)
100
101
102
103
104
0 1 0 4
1 1 0 A
Relative Addressing
Addressing Modes
Relative
Address
EA = PC + Relative Addr
PC = 2
0
1
2
AR = 100
Could be Positive
or Negative
(2s Complement)
100
101
102
103
104
1 1 0 A
Addressing Modes
Base
Register
AR = 2
+
BR = 100
Usually points
to the beginning
of an array
100
101
102
103
104
0
0
0
0
0
0
0
0
1
0
0
1
0
0
5
5
2
A
7
9
Addressing Modes
Name
The different
ways in which
the location of
an operand is
specified in
an instruction
are referred to
as addressing
modes.
Assembler syntax
Addressing
function
Immediate
#Value
Operand=Value
Register
Ri
EA = Ri
Absolute(Direct)
LOC
EA = LOC
Indirect
(Ri )
(LOC)
EA = [Ri ]
EA = [LOC]
Index
X(Ri)
EA = [Ri ] + X
Basewithindex
(Ri ,Rj )
EA = [Ri ] + [Rj ]
Basewithindex
andoffset
X(Ri,Rj )
EA = [Ri ] + [Rj ] + X
Relative
X(PC)
EA = [PC] + X
(Ri )+
EA = [Ri ] ;
Incremen
t Ri
(Ri )
Decremen
t Ri ;
EA = [Ri]
Autoincremen
t
Autodecrement
Additional Modes
LOOP
Move
Move
Clear
Add
Decrement
Branch>0
Move
N,R1
#NUM1,R2
R0
(R2)+,R0
R1
LOOP
R0,SUM
Initialization
Figure2.16.TheAutoincrementaddressingmodeusedintheprogramofFigure2.12.