Computer Programming TA C162
Topics to discuss…
Data Movement Instructions
• PC Relative Mode
• Indirect mode
• Base + Offset Mode Next Class
• Immediate Mode
1
Computer Programming TA C162
Data Movement Instructions
Moves information between
• General Purpose Registers (GPR) & Memory
• General Purpose Registers (GPR) & IO Devices
Load Moving information from memory to registers
Store Moving information from registers to memory
Load and Store
• Do not affect the information in the source location
• Overwrite the contents in the destination
7 data movement instructions with LC 3
• LD, LDR, LDI, LEA, ST, STR, STI
2
Computer Programming TA C162
Format of Load / Store Instructions
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Opcode DR / SR Address Generation Bits
3
Computer Programming TA C162
Format of Load / Store Instructions
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Opcode DR / SR Address Generation Bits
IR[8:0]
Used to generate 16 bit address in the memory
Four ways to interpret these 9 bits, collectively
called as addressing modes.
4
Computer Programming TA C162
PC Relative Mode
Want to specify address directly in the instruction
• But an address is 16 bits, and so is an instruction!
• After subtracting 4 bits for opcode
and 3 bits for register, we have 9 bits available for address.
Solution:
• Use the 9 bits as a signed offset from the current PC.
9 bits
− 256 ≤ offset ≤ +255
Can form any address X, such that PC − 256 ≤ X ≤ PC +255
Remember that PC is incremented as part of the FETCH phase;
• Hence, the incremented PC is used in calculating the address
5
Computer Programming TA C162
PC Relative Mode (Load LD Instruction)
6
Computer Programming TA C162
What does the following instruction do ?
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1
Destination
Opcode PC Offset (9 bits)
Register
7
Computer Programming TA C162
What does the following instruction do ?
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1
Destination
Opcode LD R6 PC Offset (9 bits) x1AF
Register
8
Computer Programming TA C162
What does the following instruction do ?
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1
Destination
Opcode LD R6 PC Offset (9 bits) x1AF
Register
Assume this LD instruction is in the location x2345. While this instruction
is in execution, PC will have x2346.
9
Computer Programming TA C162
What does the following instruction do ?
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1
Destination
Opcode LD R6 PC Offset (9 bits) x1AF
Register
Assume this LD instruction is in the location x2345. While this instruction
is in execution, PC will have x2346.
Sign Extended offset is xFFAF
10
Computer Programming TA C162
What does the following instruction do ?
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1
Destination
Opcode LD R6 PC Offset (9 bits) x1AF
Register
Assume this LD instruction is in the location x2345. While this instruction
is in execution, PC will have x2346.
Sign Extended offset is xFFAF
The address for load instruction is now xFFAF + x 2345
11
Computer Programming TA C162
What does the following instruction do ?
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1
Destination
Opcode LD R6 PC Offset (9 bits) x1AF
Register
Assume this LD instruction is in the location x2345. While this instruction
is in execution, PC will have x2346.
Sign Extended offset is xFFAF
The address for load instruction is now xFFAF + x 2345
The content of memory location xFFAF + x 2346 will be loaded into R6
12
Computer Programming TA C162
What does the following instruction do ?
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1
Destination
Opcode LD R6 PC Offset (9 bits) x1AF
Register
Assume this LD instruction is in the location x2345. While this instruction
is in execution, PC will have x2346.
Sign Extended offset is xFFAF
The address for load instruction is now xFFAF + x 2345
The content of memory location xFFAF + x 2346 will be loaded into R6
13
What does this quantity refers in decimal
Computer Programming TA C162
ST (PC-Relative)
14
Computer Programming TA C162
PC Relative Mode (Store ST Instruction)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 1
Source
Opcode PC Offset (9 bits)
Register
15
Computer Programming TA C162
What does the following instruction do?
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1
Source
Opcode PC Offset (9 bits)
Register
Assume this ST instruction is in the location x2345. While this instruction
is in execution, PC will have x2346.
16
Computer Programming TA C162
Adding Two Numbers
X3000 LD R0, #5
X3001 LD R1, #5
X3002 ADD R2, R1, R0
X3003 ST R2, #4
X3004
X3005
X3006 0000000000000100
X3007 0000000000000101
X3008 0000000000001001 (Result)
x3009
17