Title: Overview
1Overview
Program in LC-3 machine language Use the
Editor Use LC-3 Simulator Trap Instruction
2LC-3 Editor / Simulator
- Go to Authors Web page
- http//www.mhhe.com/patt2
- Download
- LC-3 Simulator Win or Unix
- - (LC-3 Edit, LC-3 Simulate)
- LC-3 Simulator Lab Manual
3Sum of 12 Integers
- Compute sum of 12 integers.
- Numbers start at location x3100. Program starts
at location x3000.
R1 ? x3100R3 ? 0 (Sum)R2 ? 12(count)
R20?
R4 ? MR1 R3 ? R3R4R1 ? R11 R2 ? R2-1
NO
YES
Write program
4Sum 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 1 Decrement R2 (counter)
x3009 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 Goto x3004
5The Add program in binary
- 0011000000000000 start x3000
- 1110001011111111 R1x3100
- 0101011011100000 R30
- 0101010010100000 R20
- 0001010010101100 R2R212
- 0000010000000101 If z goto x3009
- 0110100001000000 Load next value into R4
- 0001011011000100 R3R3R4
- 0001001001100001 R1R11
- 0001010010111111 R2R2-1
- 0000111111111010 goto x3004
6The Add program in hex
- 3000 start x3000
- E2FF R1x3100
- 56E0 R30
- 54A0 R20
- 14AC R2R212
- 0405 If z goto x3009
- D840 Load next value into R4
- 16C4 R3R3R4
- 1261 R1R11
- 14BF R2R2-1
- 0FFA goto x3004
7The Add program Data (hex)
- 3100 Begin data at x3100
- 3107 Loc x3100
- 2819
- 0110
- 0310
- 0110
- 1110
- 11B1
- 0019
- 0007
- 0004
- 0000
- 0000 Loc x310B
8LC3Edit
- Load the program into LC3Edit
- - Store it as prog.bin for a binary file, or
- Store it as prog.hex for a hex file
- - Create a prog.obj file with the Editor
- Load the data into LCEdit
- - Store it as data.bin for a binary file, or
- Store it as data.hex for a hex file
- - Create a data.obj file with the Editor
9LC-3 Simulator
- Open LC-3 Simulator
- - Load prog.obj
- - Load data.obj
- - Set breakpoint(s)
- - Step through program
10TRAP
- Calls a service routine, identified by 8-bit
trap vector. - When routine is done, PC is set to the
instruction following TRAP.
vector routine
x23 input a character from the keyboard
x21 output a character to the monitor
x25 halt the program
11TRAPS
12Add HALT to Add program
- Add HALT statement and run program without
breakpoint(s)
13Example Multiply
- Write program to Multiply two unsigned integers
in R4 and R5
14Example Multiply
- This program multiplies two unsigned integers in
R4 and R5.
Write program
15 Program to multiply R4 x R5 and place result
in R2
x3200 Clear Accumulator (R2) R2 lt- 0 x3201
Add R4 to Accumulator R2 lt- R2 R4
x3202 Dec R5 R5 lt- R5 1 x3203 Do
again if R5 gt 0 BR p x3201 x3204 Stop
HALT
16 Program to multiply R4 x R5 and place result
in R2
Code program
17 Program to multiply R4 x R5 and place result
in R2
x3200 Clear Accumulator (R2) R2 lt- 0 0101
010 010 1 00000 54A0 x3201 Add R4 to
Accumulator R2 lt- R2 R4 0001 010 010 0 00
100 1484 x3202 Dec R5 R5 lt- R5 1 0001
101 101 1 11111 1B7F x3203 Do again if
R5 gt 0 BR p x3201 0000 001 111111101
03FD x3204 Stop HALT 1111 0000 00100101
F025
Test on Simulator
18 Write a program to place the absolute value of
the R2 in R2
How do we compute A - A if we dont have
have a subtract instruction?
19Example - Occurrences of Inputted Char
20Example - Occurrences of Inputted CharProgram
(1 of 2)
Address Instruction Comments
x3000 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 R2 ? 0 (counter)
x3001 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 R3 ? Mx3102 (ptr)
x3002 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 Input to R0 (TRAP x23)
x3003 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 R1 ? MR3
x3004 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 R4 ? R1 4 (EOT)
x3005 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 If Z, goto x300E
x3006 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 R1 ? NOT R1
x3007 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 R1 ? R1 1
X3008 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 R1 ? R1 R0
x3009 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 If N or P, goto x300B
21Example - Occurrences of Inputted CharProgram
(2 of 2)
Address Instruction Comments
x300A 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 R2 ? R2 1
x300B 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 R3 ? R3 1
x300C 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 R1 ? MR3
x300D 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 Goto x3004
x300E 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 R0 ? Mx3013
x300F 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 R0 ? R0 R2
x3010 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 Print R0 (TRAP x21)
x3011 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 HALT (TRAP x25)
X3012 Starting Address of File
x3013 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 ASCII x30 (0)