Chapter 6 LMC Little Moron Computer von Neumann

  • Slides: 30
Download presentation
Chapter 6 LMC Little Moron Computer

Chapter 6 LMC Little Moron Computer

von Neumann Principles (revisited) • Stored program concept - Memory & Data • Memory

von Neumann Principles (revisited) • Stored program concept - Memory & Data • Memory is addressed linearly • Memory is addressed without regard to content 1 John von Neumann, 1945

LMC Mailboxes Calculator 00 LM 01 02 03 04 05 06 07 Counter 96

LMC Mailboxes Calculator 00 LM 01 02 03 04 05 06 07 Counter 96 97 98 99

LMC Organization

LMC Organization

CPU Components

CPU Components

LMC - CPU

LMC - CPU

LMC Instructions n n OPCODE OPERAND OPCODE Source OPERAND Instruction Mailbox Address

LMC Instructions n n OPCODE OPERAND OPCODE Source OPERAND Instruction Mailbox Address

Address vs. Contents G Addresses are consecutive G Contents may be data or instructions

Address vs. Contents G Addresses are consecutive G Contents may be data or instructions

The CPU - The Instruction Cycle START Fetch Next Instruction & Decode Execute Instruction

The CPU - The Instruction Cycle START Fetch Next Instruction & Decode Execute Instruction HALT Fetch Cycle Execute Cycle

Fetch an Instruction

Fetch an Instruction

Fetch an Instruction (continued)

Fetch an Instruction (continued)

Execute an Instruction

Execute an Instruction

Execute an Instruction (continued)

Execute an Instruction (continued)

LMC Instruction Set n n n 1 xx 2 xx 3 xx 5 xx

LMC Instruction Set n n n 1 xx 2 xx 3 xx 5 xx 6 xx 7 xx 8 xx 9 01 9 02 0 00 ADD SUB STO LDA BR BRZ BRP IN OUT HLT DAT Arithmetic Data Movement Program Control Input/Output Data Storage Location

LDA INSTRUCTION 5 xx l l Go to mailbox with address xx Read 3

LDA INSTRUCTION 5 xx l l Go to mailbox with address xx Read 3 -digit number on paper in mailbox (leave paper there) Enter 3 -digit number into calculator Advance location counter NOTE: Accumulator changes in value. Contents of memory location xx does not change.

STO INSTRUCTION 3 xx l l l Retrieve value from calculator Go to mailbox

STO INSTRUCTION 3 xx l l l Retrieve value from calculator Go to mailbox at address xx and replace 3 -digit number on paper in mailbox with value from calculator Advance location counter NOTE: Accumulator does not change in value. Contents of memory location xx does change.

ADD INSTRUCTION 1 xx l l Go to mailbox with address xx Read 3

ADD INSTRUCTION 1 xx l l Go to mailbox with address xx Read 3 -digit number on paper in mailbox (leave paper there) Add 3 -digit number to number stored in calculator Advance location counter NOTE: Accumulator changes in value.

SUB INSTRUCTION 2 xx l l Go to mailbox with address xx Read 3

SUB INSTRUCTION 2 xx l l Go to mailbox with address xx Read 3 -digit number on paper in mailbox (leave paper there) Subtract 3 -digit number from number stored in calculator Advance location counter NOTE: Accumulator changes in value.

IN INSTRUCTION 9 01 l l Wait for paper slip to be placed in

IN INSTRUCTION 9 01 l l Wait for paper slip to be placed in IN Basket. Remove paper from IN Basket, and read 3 -digit number on it Enter number into calculator Advance location counter NOTE: Accumulator changes in value.

OUT INSTRUCTION 9 02 l l l Copy number from calculator onto paper Place

OUT INSTRUCTION 9 02 l l l Copy number from calculator onto paper Place paper into OUT Basket Advance location counter NOTE: Accumulator does not change in value.

BRANCH INSTRUCTION 6 xx l Set value of location counter to xx

BRANCH INSTRUCTION 6 xx l Set value of location counter to xx

BRZ INSTRUCTION 7 xx l l Observe value stored in calculator If value is

BRZ INSTRUCTION 7 xx l l Observe value stored in calculator If value is 0, set value of location counter to xx

BRP INSTRUCTION 8 xx l l Observe value stored in calculator If value is

BRP INSTRUCTION 8 xx l l Observe value stored in calculator If value is not negative, set value of location counter to xx NOTE: 0 value is considered positive.

HLT INSTRUCTION 0 00 l LMC takes a break. NOTE: Make no assumptions about

HLT INSTRUCTION 0 00 l LMC takes a break. NOTE: Make no assumptions about contents of memory or calculator.

ADD TWO INPUT NUMBERS l l l l 00 01 02 03 04 05

ADD TWO INPUT NUMBERS l l l l 00 01 02 03 04 05 99 IN STO 99 IN ADD 99 OUT HLT DAT 00 9 3 9 1 9 0 0 01 99 02 00 00

FIND POSITIVE DIFFERENCE OF TWO INPUT NUMBERS l l l 00 01 02 03

FIND POSITIVE DIFFERENCE OF TWO INPUT NUMBERS l l l 00 01 02 03 04 05 06 07 08 09 10 11 IN STO 10 IN STO 11 SUB 10 BRP 08 LDA 10 SUB 11 OUT HLT DAT 00 9 3 2 8 5 2 9 0 01 10 01 11 10 08 10 11 02 00 00 00

Problem 6. 6: Find largest of 3 numbers Part 1: Find larger of two

Problem 6. 6: Find largest of 3 numbers Part 1: Find larger of two numbers and store its value in memory cell. l 00 IN 9 01 ; input three numbers and save l 01 STO 99 3 99 l 02 IN 9 01 l 03 STO 98 3 98 l 04 IN 9 01 l 05 STO 97 3 97 l 06 SUB 98 2 98 ; subtract number in 98 from that in 97 l 07 BRP 10 8 11 ; number in 97 larger l 08 LDA 98 5 98 ; number in 98 larger-restore 98 l 09 BR 11 6 11 l 10 LDA 97 5 97 ; restore 97 l 11 STO 96 3 96 ; store larger of (97, 98) in 96

Problem 6. 6 (continued) l l l 12 13 14 15 16 17 18

Problem 6. 6 (continued) l l l 12 13 14 15 16 17 18 96 97 98 99 SUB 99 BRP 16 LDA 99 BR 17 LDA 96 OUT HLT DAT 00 2 8 5 6 5 9 0 0 0 99 16 99 17 96 02 00 00 00 ; subtract number in 99 from larger ; number in 96 larger ; number in 99 larger--restore 99 ; restore 96

Problem 6. 7 - Find Largest of N Numbers l l l l 00

Problem 6. 7 - Find Largest of N Numbers l l l l 00 01 02 03 04 05 06 07 08 09 10 11 12 13 98 99 IN STO 99 IN BRZ 11 STO 98 SUB 99 BRP 08 BR 02 LDA 98 STO 99 BR 02 LDA 99 OUT HLT DAT 00 9 3 9 7 3 2 8 6 5 3 6 5 9 0 01 99 ; store the first number in 99 01 11 ; completion flag 98 ; store new value temporarily 99 08 ; new value larger--store it in 99 02 ; old value in 99 is larger--get next number 98 99 02 00 00 00; contains largest number currently input

Problem 6. 14: Program Loader l l l l l 00 … 86 87

Problem 6. 14: Program Loader l l l l l 00 … 86 87 88 89 90 91 92 BR 86 6 86; Jump to location 86 LDA 98 STO 92 INP SUB 97 BRZ 01 ADD 97 DAT 00 5 3 9 2 7 1 0 98 92 02 97 01 97 00 93 94 95 96 LDA 92 ADD 99 STO 92 BR 88 5 1 3 6 92 99 92 88 l l l l 97 DAT 999 98 DAT 301 99 DAT 01 9 99 3 01 0 01 ; initialize the STORE instruction at location 92 ; input a value ; subtract 999 ; done loading--jump to 01 for execution ; restore input value ; store value. This will contain 3 XX, with XX indexed ; each time ; load the STORE instruction in 92 ; increment it ; and resave it ; continue with the next input [NOTE: No test for exceeding ; memory] ; value 999 for testing ; initial STORE 01 instruction as a data value ; value 1 for indexing