Date post: | 19-Dec-2015 |
Category: |
Documents |
View: | 224 times |
Download: | 2 times |
Chap 4 & 5LC-3 Computer
LC-3 Instructions
Chap 4 Homework – due Monday October 27
Chap 5 Homework – due Wednesday October 29
Project 2 Designs (Working Schematics) – due Wednesday October 29
Project 2 Reports – due Wednesday November 5
Note: Alt PrintScreen is a good way to get a 1 page schematic with timing traces
Project 1 Feedback – I would like to see more clarification/discussion of what you did and observed, especially linking the timing traces to the circuits.
Chapters 4 & 5: The LC-3 Computer
• LC-3 Computer– Architecture
– Machine Instructions
– Programming in Machine Language (Binary or Hex Code) (One word per instruction)
– Programming in Assembly Language (Symbolic Code)
(One statement per instruction)
• LC-3 Editor & Simulator– Go to: http://www.mhhe.com/patt2
– Download: LC-3 Simulator (Either Windows or Unix version) – Simulator Download includes LC-3 (Simulator) & LC-Edit– Download: Simulator Lab Manual
The LC-3 Computera von Neumann machine
Memory
PSW (Program Status Word): Bits: 15 10 9 8 2 1 0 | S| |Priority| | N| Z| P|
PSW
The Instruction CycleFetch: Next Instruction from Memory (PC) (points to) next instruction PC (PC) + 1 Decode: Fetched InstructionEvaluate: Instr & Address (es) (find where the data is)Fetch: Operand (s) (get data as specified)Execute: OperationStore: Result (if specified)
Computer Machine Instruction Formats
What is IN an instruction?• Operation code – what to do
• Input Operand(s) – where to get input operands (memory, registers)
• Output Operand(s) – Where to put results (memory, registers)
What are the major instruction types?• Data Movement (load, store, etc.)
• Operate (add, sub, mult, OR, AND, etc.)
• Control (branch, jump to subroutine, etc.)
The LC-3 Instruction Addressing Modes
• Register (Operand is in one of the 8 registers)
• Immediate (Operand is in the instruction)
• PC-relative (Operand is “offset” from the (PC) )
• Indirect (The “Operand” actually points to the real Operand – rather than being the operand)
• Base + Offset (Base relative) (Operand is “offset” from the contents of a register)
Note: no Direct Addressing defined in the LC-3
LC-3 Instructions (Fig 5.3 – Appendix a)
Addressing Modes
•Register (Operand is in one of the 8 registers)
• PC-relative (Operand is “offset” from where the PC points)
• Base + Offset (Base relative) (Operand is “offset” from the contents of a register)
• Immediate (Operand is in the instruction)
• Indirect (The “Operand” points to the real address of Operand
– rather than being the operand)
Operate Instructions
• Only three operate Instructions: ADD, AND, NOT
• Source and Destination operands are:
Registers
Data Movement Instructions
•Load - read data from memory to register– LD: PC-relative mode [0010 DR PCoffset9]– LDI: indirect mode [1010 DR PCoffset9]– LDR: base+offset mode [0110 DR BaseR offset6]
•Store - write data from register to memory– ST: PC-relative mode [0011 DR PCoffset9]– STI: indirect mode [1011 DR PCoffset9]– STR: base+offset mode [0111 DR BaseR offset6]
•Load effective address – address saved in register– LEA: immediate mode [1110 DR PCoffset9]
Branch Instruction
BR [0000 nzp PCoffset9]
• Branch specifies one or more condition codes Program Status Word (PSW):
Bits: 15 10 9 8 2 1 0 | S| |Priority| |N|Z|P|
• If the set bit is specified, the branch is taken:– PC is set to the address specified in the instruction
- Target address is made by adding SEXT(IR[8:0]) to the PC
• If the branch is not taken: - the next sequential instruction (PC) is executed.
Jump Instruction
JMP BaseR [1100 000 BaseR 000000]
• Jump is an unconditional branch -- always taken.
• BaseR– Address is contents of the register– Allows any target address.
Compute the Sum of 12 Integers Program
• Program begins at location x3000.• Integers begin at location x3100.
R1 x3100R3 0 (Sum)R2 12(count)
R2=0?
R4 M[R1] R3 R3+R4R1 R1+1R2 R2-1
NO
YES
R1: “Array” index pointer (Begin with location 3100)
R3: Accumulator for the sum of integers
R2: Loop counter (Count down from 12)
R4: Temporary register to store next integer
Sum integers from x3100 – x310B
Address Instruction Comments
x3000 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 R1 x3100
x3001 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 R3 0
x3002 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 R2 0
x3003 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 R2 12
x3004 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 If Z, goto x300A
x3005 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 Load next value to R4
x3006 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0 Add to R3
x3007 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 Increment R1 (pointer)
X3008 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1 1Decrement R2
(counter)
x3009 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 Goto x3004
R1: “Array” index pointer (Begin with location 3100) R3: Accumulator for the sum of integers
R2: Loop counter (Count down from 12) R4: Temporary register to store next integer