overview program in lc-3 machine language use the editor use lc-3 simulator trap instruction

21
Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Post on 20-Dec-2015

221 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Overview

Program in LC-3 machine language

Use the Editor

Use LC-3 Simulator

Trap Instruction

Page 2: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

LC-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

Page 3: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Sum 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)

R2=0?

R4 M[R1] R3 R3+R4R1 R1+1R2 R2-1

NO

YES

Write program

Page 4: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

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

Page 5: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

The Add program in “binary”

0011000000000000 ;start x30001110001011111111 ;R1=x31000101011011100000 ;R3=00101010010100000 ;R2=00001010010101100 ;R2=R2+120000010000000101 ;If z goto x30090110100001000000 ;Load next value into R40001011011000100 ;R3=R3+R40001001001100001 ;R1=R1+10001010010111111 ;R2=R2-10000111111111010 ;goto x3004

Page 6: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

The Add program in “hex”

3000 ;start x3000E2FF ;R1=x310056E0 ;R3=054A0 ;R2=014AC ;R2=R2+120405 ;If z goto x3009D840 ;Load next value into R416C4 ;R3=R3+R41261 ;R1=R1+114BF ;R2=R2-10FFA ;goto x3004

Page 7: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

The Add program Data (hex)

3100 ; Begin data at x31003107 ; Loc x31002819011003100110111011B100190007000400000000 ; Loc x310B

Page 8: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

LC3Edit

• 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

Page 9: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

LC-3 Simulator

• Open LC-3 Simulator

- Load prog.obj

- Load data.obj

- Set breakpoint(s)

- Step through program

Page 10: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

TRAP

• 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

Page 11: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

TRAPS

Page 12: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Add HALT to “Add” program

• Add HALT statement and run program without breakpoint(s)

Page 13: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Example : Multiply

Write program to Multiply two unsigned integers in R4 and R5

Page 14: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Example : Multiply

• This program multiplies two unsigned integers in R4 and R5.

clear R2

add R4 to R2

decrement R5

R5 = 0?

HALT

No

Yes

Write program

Page 15: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

x3200 Clear Accumulator (R2) R2 <- 0

x3201 Add [R4] to Accumulator R2 <- R2 + R4

x3202 Dec R5 R5 <- R5 – 1

x3203 Do again if [R5] > 0 BR p x3201

x3204 Stop HALT

Program to multiply [R4] x [R5] and place result in R2

Page 16: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Code program

Program to multiply [R4] x [R5] and place result in R2

Page 17: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

x3200 Clear Accumulator (R2) R2 <- 0 0101 010 010 1 00000 54A0

x3201 Add [R4] to Accumulator R2 <- R2 + R4 0001 010 010 0 00 100 1484

x3202 Dec R5 R5 <- R5 – 1 0001 101 101 1 11111 1B7F

x3203 Do again if [R5] > 0 BR p x3201 0000 001 111111101 03FD

x3204 Stop HALT 1111 0000 00100101 F025

Program to multiply [R4] x [R5] and place result in R2

Test on Simulator

Page 18: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Write a program to place the

absolute value of the [R2] in R2

How do we compute

A = - A

if we don’t have have a subtract instruction?

Page 19: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Example - # Occurrences of Inputted Char

Count = 0(R2 = 0)

Ptr = 1st file character(R3 = M[x3012])

Input charfrom keybd

(TRAP x23)

Done?(R1 ?= EOT)

Load char from file(R1 = M[R3])

Match?(R1 ?= R0)

Incr Count(R2 = R2 + 1)

Load next char from file(R3 = R3 + 1, R1 = M[R3])

Convert count toASCII character

(R0 = x30, R0 = R2 + R0)

Print count(TRAP x21)

HALT(TRAP x25)

NO

NO

YES

YES

Page 20: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Example - # 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 M[x3102] (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 M[R3]

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

Page 21: Overview Program in LC-3 machine language Use the Editor Use LC-3 Simulator Trap Instruction

Example - # 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 M[R3]

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 M[x3013]

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’)