Professional Documents
Culture Documents
Coa-2 1
Coa-2 1
Machine
Instructions and Programs
Objectives
• 3 major representations:
Sign and magnitude
One’s complement
Two’s complement
• Assumptions:
4-bit machine word
16 different values can be represented
Roughly half are positive, half are negative
Sign and Magnitude Representation
-7 +0
-6 1111 0000 +1
1110 0001
-5 +2 +
1101 0010
-4 1100 0011 +3 0 100 = + 4
-1 +0
-2 1111 0000 +1
1110 0001
-3 +2 +
like 1's comp 1101 0010
except shifted -4 1100 0011 +3 0 100 = + 4
one position
clockwise -5 1011 0100 +4 1 100 = - 4
1010 0101
-6 +5 -
1001 0110
-7 1000 0111 +6
-8 +7
0 1 1 1 + 7 +7 + 7
0 1 1 0 + 6 +6 + 6
0 1 0 1 + 5 +5 + 5
0 1 0 0 + 4 +4 + 4
0 0 1 1 + 3 +3 + 3
0 0 1 0 + 2 +2 + 2
0 0 0 1 + 1 + 1 + 1
0 0 0 0 + 0 +0 + 0
1 0 0 0 - 0 -7 - 8
1 0 0 1 - 1 -6 - 7
1 0 1 0 - 2 -5 - 6
1 0 1 1 - 3 -4 - 5
1 1 0 0 - 4 -3 - 4
1 1 0 1 - 5 -2 - 3
1 1 1 0 - 6 - 1 - 2
1 1 1 1 - 7 -0 - 1
-1 +0 -1 +0
-2 1111 0000 +1 -2 1111 0000 +1
1110 0001 1110 0001
-3 +2 -3
1101 1101 +2
0010 0010
-4 -4
1100 0011 +3 1100 0011 +3
-5 1011 -5 1011
0100 +4 0100 +4
1010 1010
-6 0101 -6 0101
1001
+5 +5
0110 1001 0110
-7 1000 0111 +6 -7 1000 +6
0111
-8 +7 -8 +7
5 + 3 = -8 -7 - 2 = +7
Overflow Conditions
0111 1000
5 0101 -7 1001
3 0011 -2 1100
-8 1000 7 10111
Overflow Overflow
0000 1111
5 0101 -3 1101
2 0010 -5 1011
7 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 = xw–1 ,…, xw–1 , xw–1 , xw–2 ,…, x0
w
X • • •
k copies of MSB
• • •
X • • • • • •
k w
Sign Extension Example
n bits
• Memory consists first word
of many millions second word
of storage cells,
each of which can •
store 1 bit. •
•
i th word
• Data is usually
accessed in n-bit •
groups. n is called •
•
word length.
last word
b 31 b 30 b1 b0
•
•
•
Sign bit: b 31= 0 for positive numbers
b 31= 1 for negative numbers
• 1K(kilo)=210
• 1T(tera)=240
Memory Location, Addresses, and
Operation
• impractical to assign distinct addresses to individual bit locations.
• byte-addressable memory.
0 0 1 2 3 0 3 2 1 0
4 4 5 6 7 4 7 6 5 4
• •
• •
• •
k k k k k k k k k k
2 -4 2 -4 2 -3 2 - 2 2 - 1 2 - 4 2 - 1 2 - 2 2 -3 2 -4
• Word alignment
• Words are aligned in memory if they begin at a byte addr.
- - multiple of the num of bytes in a word.
• I/O transfers.
Register Transfer Notation
• General Register
• Registers hold operands thus reduce memory traffic
• Register bookkeeping
• Stack
• Operands and result are always in the stack
Instruction Formats
• Three-Address Instructions
• ADD R1, R2, R3 R1 ← R2 + R3
• Two-Address Instructions
• ADD R1, R2 R1 ← R1 + R2
• One-Address Instructions
• ADD M AC ← AC + M[AR]
• Zero-Address Instructions
• ADD TOS ← TOS + (TOS – 1)
• RISC Instructions
• Lots of registers. Memory is restricted to Load & Store
• Shorter instructions
• The number of registers is smaller (e.g. 32 registers need 5 bits)
• Potential speedup
• Minimize the frequency with which data is moved back and forth
between the memory and processor registers.
Instruction Execution and Straight-Line
Sequencing
Address Contents
i
Assumptions:
Begin execution here Move A,R0
3-instruction - One memory operand
i+4 Add B,R0 program
i+8
segment per instruction
Move R0,C
- 32-bit word length
- Memory is byte
addressable
A - Full memory address
can be directly specified
in a single-word instruction
B Data for
the program
Two-phase procedure
-Instruction fetch
-Instruction execute
C
Page 43
•
•
•
i + 4n - 4 Add NUM n,R0
i + 4n Move R0,SUM
•
•
•
SUM
NUM1
NUM2
•
•
•
NUM n
Branching LOOP
Determine address of
"Next" number and add
Program "Next" number to R0
loop
Decrement R1
Branch>0 LOOP
Branch target
Move R0,SUM
Conditional branch
•
•
•
SUM
N n
NUM1
•
•
•
NUM n
Condition Codes
• Example: A: 11110000
• A: 1 1 1 1 0 0 0 0
• B: 0 0 0 1 0 1 0 0 +(−B): 1 1 1 0 1 1 0 0
11011100
C=1 Z=0
S=1
V=0
Status Bits
Cn-1
A B
Cn ALU
F
V Z S C
Fn-1
Zero Check
Addressing Modes
Addressing Modes
Name Assem bler syn tax Addressing function
• The different
ways in which Immediate #V alue Op erand = Value
the location of
an operand is Register Ri EA = R i
specified in an Absolute (Direct) LOC EA = LOC
instruction are
referred to as Indirect (R i ) EA = [R i ]
addressing (LOC) EA = [LOC]
modes.
Index X(R i) EA = [R i ] + X
Autoincremen t (R i )+ EA = [R i ] ;
Incremen t R i
Autodecrement − (R i ) Decremen t R i ;
EA = [R i]
Addressing Modes
• Implied
• AC is implied in “ADD M[AR]” in “One-Address” instr.
• TOS is implied in “ADD” in “Zero-Address” instr.
• Immediate
• The use of a constant in “MOV R1, 5”, i.e. R1 ← 5
• Register
• Indicate which register holds the operand, MOV R1, R2
Addressing Modes
• Register Indirect
• Indicate the register that holds the number of the register that holds the operand
MOV R1, (R2)
R1
R2 = 3
R3 = 5
Addressing Mode
• Direct Address
• Use the given address to access a memory location
MOV LOC, R1
Addressing Modes - Indexing and Arrays
• X(Ri): EA = X + [Ri]
.
Addressing Modes – Indexing and Arrays
Addressing Modes – Indexing and Arrays
Addressing Modes – Indexing and Arrays
Indexing and Arrays
• Several variations:
• Relative Address
• EA = PC + Relative Addr
0
1
PC = 2 2
100
AR = 100
101
102 1 1 0 A
103
104
Additional Modes
• (Ri)+. The increment is 1 for byte-sized operands, 2 for 16-bit operands,
and 4 for 32-bit operands.
• Autodecrement mode: -(Ri) – decrement first
Move N,R1
Move #NUM1,R2 Initialization
Clear R0
LOOP Add (R2)+,R0
Decrement R1
Branch>0 LOOP
Move R0,SUM
Figure 2.16. The Autoincrement addressing mode used in the program of Figure 2.12.
Assembly Language
Types of Instructions
• Data Transfer Instructions
Name Mnemonic
Branch BR
Jump JMP
Skip SKP
Subtract A – B but
Call CALL don’t store the result
Return RET
Compare
CMP
(Subtract) 10110001
Test (AND) TST
00001000
Mask
00000000
Conditional Branch Instructions
• The data on which the instructions operate are not necessarily already
stored in memory.
.
Program-Controlled I/O Example
Processor
DATAIN DATAOUT
SIN SOUT
- Registers
- Flags
- Device interface
Program-Controlled I/O Example
• Machine instructions that can check the state of the status flags and
transfer data:
•
READWAIT Branch to READWAIT if SIN = 0
Input from DATAIN to R1
Assumption – the initial state of SIN is 0 and the initial state of SOUT is 1.
Program to read line of character and display
Stacks
Home Work
• For each Addressing modes mentioned before, state one example for
each addressing mode stating the specific benefit for using such
addressing mode for such an application.
Stack Organization
Current
• LIFO Top of Stack
Last In First Out TOS 0
1
2
3
4
5
SP 6 0 1 2 3
7 0 0 5 5
FULL EMPTY 8 0 0 0 8
9 0 0 2 5
Stack Bottom 10 0 0 1 5
Stack
Stack Organization
Current 1 6 9 0
• PUSH Top of Stack
SP ← SP – 1 TOS 0
M[SP] ← DR 1
If (SP = 0) then (FULL ← 1) 2
EMPTY ← 0
3
4
5 1 6 9 0
SP 6 0 1 2 3
7 0 0 5 5
FULL EMPTY 8 0 0 0 8
9 0 0 2 5
Stack Bottom 10 0 0 1 5
Stack
Stack Organization
Current
• POP Top of Stack
DR ← M[SP] TOS 0
SP ← SP + 1 1
If (SP = 11) then (EMPTY ← 1) 2
FULL ← 0
3
4
5 1 6 9 0
SP 6 0 1 2 3
7 0 0 5 5
FULL EMPTY 8 0 0 0 8
9 0 0 2 5
Stack Bottom 10 0 0 1 5
Stack
Stack Organization
• Memory Stack
• PUSH
PC 0
SP ← SP – 1
1
M[SP] ← DR 2
• POP
DR ← M[SP]
AR 100
SP ← SP + 1
101
102
200
SP 201
202
Reverse Polish Notation
• Infix Notation
A+B
• Prefix or Polish Notation
+AB
• Postfix or Reverse Polish Notation (RPN)
AB+
• Example
(A + B) [C (D + E) + F]
(A B +) (D E +) C F +
Reverse Polish Notation
• Stack Operation
(3) (4) (5) (6) +
PUSH 3
PUSH 4
6
MULT
PUSH 5 30
4
5
PUSH 6
3
42
12
MULT
ADD
Additional Instructions
Logical Shifts
before: 0 0 1 1 1 0 . . . 0 1 1
after: 1 1 1 0 . . . 0 1 1 0 0
0 R0 C
before: 0 1 1 1 0 . . . 0 1 1 0
after: 0 0 0 1 1 1 0 . . . 0 1
R0 C
before: 1 0 0 1 1 . . . 0 1 0 0
after: 1 1 1 0 0 1 1 . . . 0 1
. . .
Rotate
before: 0 0 1 1 1 0 0 1 1
after: 1 1 1 0 . . . 0 1 1 0 1
C R0
before: 0 0 1 1 1 0 . . . 0 1 1
after: 1 1 1 0 . . . 0 1 1 0 0
R0 C
before: 0 1 1 1 0 . . . 0 1 1 0
after: 1 1 0 1 1 1 0 . . . 0 1
R0 C
before: 0 1 1 1 0 . . . 0 1 1 0
after: 1 0 0 1 1 1 0 . . . 0 1