You are on page 1of 11

MAIN MEMORY

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

.
.
.

AREA

STACK DATA

CODE AREA

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY
Main1
Nop
Load1

MAR
MDR
PC
MBR
SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

ALU
SHIFT

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063
BBus

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

Memory CBus

ALU/shift JAM

Next
Addr

CYCLE 00
MAIN MEMORY

.
.
.

AREA
0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS

Main1
Nop
Load1

MAR
MDR
PC

0x0000

MBR
SP

PC = 0x0001

CODE AREA
STACK DATA

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

PC = 0x0000

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

A BUS

PC = PC +1

ALU

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

BBus

Memory CBus

ALU/shift JAM

PC

FETCH

B Bus+1

SHIFT

PC

Next
Addr
0x000

CYCLE 01
MAIN MEMORY
CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

.
.
.

AREA

STACK DATA

CODE AREA

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS

Main1
Nop
Load1

MAR
MDR
0x0001

PC

LOAD

MBR

0x0001
LOAD

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

A BUS

ALU

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063
BBus

SHIFT

Address
0x100
0x000
0x001
0x040
0x041
0x042

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

Memory CBus

ALU/shift JAM

Next
Addr
0x100

CYCLE 02
MAIN MEMORY

.
.
.

AREA
0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS

Main1
Nop
Load1

MAR
MDR
PC

0x0001

MBR

PC = 0x0002

CODE AREA
STACK DATA

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

LOAD

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

PC = 0x0001

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

A BUS

PC = PC +1

ALU

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

BBus

Memory CBus

ALU/shift JAM

PC

FETCH

B Bus+1

SHIFT

PC

Next
Addr
0x001

CYCLE 03
MAIN MEMORY

.
.
.

AREA
0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS

Main1
Nop
Load1

MAR
MDR
0x0002

PC

00

MBR

PC = 0X0003

CODE AREA
STACK DATA

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

0x0002
00

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

PC = 0X0002

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

A BUS

PC = PC+1

ALU

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063
BBus

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

Memory CBus

ALU/shift JAM

SHIFT

PC

PC

B BUS+1

Next
Addr
0x040

CYCLE 04
MAIN MEMORY

.
.
.

AREA
0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS

Main1
Nop
Load1

MAR
MDR
PC

0x0003

MBR

H = 0000

CODE AREA
STACK DATA

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

00

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

MBR = 00

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

A BUS

H = MBR SLL8

ALU

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

BBus

Memory CBus

ALU/shift JAM

MBR

FETCH

SLL8

SHIFT SLL8

Next
Addr
0x041

CYCLE 05
MAIN MEMORY

.
.
.

AREA
0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS

Main1
Nop
Load1

MAR
MDR
0x0003

PC

1C

MBR

PC = 0X0004

CODE AREA
STACK DATA

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

0x0003
1C

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

PC = 0X0003

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

A BUS

PC = PC+1

ALU

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063
BBus

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

Memory CBus

ALU/shift JAM

SHIFT

PC

PC

B BUS+1

Next
Addr
0x042

CYCLE 06
MAIN MEMORY

.
.
.

AREA
0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS
MAR

Main1
Nop
Load1

001C

MDR
PC

0x0004

MBR

MAR = 001C

CODE AREA
STACK DATA

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

1C

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

MBR = 1C

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

A BUS

MAR = H + MBR

ALU

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

BBus

Memory

CBus

MBR

FETCH,READ MAR

ALU/shift JAM

SHIFT

H + MBR

Next
Addr
0x043

CYCLE 07

MAR = 001C

MAIN MEMORY

AREA

.
.
.
0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS
MAR

001C

MDR

0001

0X0004

PC

R1

MBR

PC = 0X0005

CODE AREA
STACK DATA

MDR = 0001

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

Main1
Nop
Load1

0x0004
R1

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0000

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

PC = 0X0004

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

A BUS

PC = PC+1

ALU

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063
BBus

Memory

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1
CBus

ALU/shift JAM

PC

B BUS+1

SHIFT

PC

Next
Addr
0x044

CYCLE 08
MAIN MEMORY

.
.
.

AREA
0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

CONTROL MEMORY

B BUS

C BUS
MAR

001C

MDR

0001

PC

Main1
Nop
Load1

0x0005

MBR

R1 = 0001

CODE AREA
STACK DATA

CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

R1

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0001

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

MDR = 0001

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

A BUS

R1 = MDR

ALU

Address
0x100
0x000
0x001
0x040
0x041
0x042

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1

BBus

Memory

CBus

ALU/shift JAM

MDR

FETCH

R1

B BUS

SHIFT

Next
Addr
0x045

CYCLE 09
MAIN MEMORY
CONTENT
NOP (00)
LOAD (01)
00
1C
R1 (01)
LOADM (02)
00
01
R2
ADD (0B)
R2 (02)
R1 (01)
PUSH (11)
R1 (01)
SVC (3F)
00
03
POP (12)
R1 (01)
LOADM (02)
00
00
01
PUSH (11)
R1 (01)
SVC (3F)
00
01
00
01

.
.
.

AREA

STACK DATA

CODE AREA

ADDRESS
0x0000
0x0001
0x0002
0x0003
0x0004
Ox0005
0X0006
0X0007
0X0008
0X0009
0X000A
0X000B
0X000C
0X000D
0X000E
0X000F
0X0010
0X0011
0X0012
0X0013
0X0014
0X0015
0X0016
0X0017
0X0018
0X0019
0X001A
0X001B
0X001C
0X001D

0XF800
0XF801
0XF802
0XF803
0XF804
0XF805

0X0005
LOADM

CONTROL MEMORY

B BUS

C BUS
MAR

001C

MDR

0001

PC

Main1
Nop
Load1

0x0005

MBR

02

SP

F800

T1

0000

T2

0000

T3

0000

T4

0000

R0

0000

R1

0001

R2

0000

R3

0000

R4

0000

R5

0000

R6

0000

R7

0000

0000

A BUS

PC = PC+1

ALU

0x043
0x044
0x045
Loadm1 0x002
0x046
0x047
0x048
0x049
0x04A
0x04B
Add1
0x00B
0x04C
0X04D
0X04E
0X04F
Push1
0X011
0X050
0X051
0X052
0X053
Pop1
0X012
0X054
0X055
0X056
0X057
Jmp1
0X016
0X058
0X059
0X05A
0X05B
Svc1
0X03F
0X05C
0X05D
0X05E
0X05F
0X060
0X061
0X062
0X063
BBus

SHIFT

Address
0x100
0x000
0x001
0x040
0x041
0x042

Memory

Content
set PC = PC+1; fetch; jmpc 0X000
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set MAR = H or MBRU; fetch;
read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set H = H + MBRU; fetch
set PC = PC+1
set RS = H; fetch
donothing; goto main1
set PC = PC+1
set H = RS; fetch
set PC = PC+1
set RS = H+RS; fetch
donothing; goto main1
set PC = PC+1
set MDR = RS; fetch
set MAR = SP; write
set SP = SP+1
set SP = SP+1; goto main1
set SP = SP-1
set SP = SP-1; read
set PC = PC+1
set RS = MDR; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
Donothing
set PC = H + MBRU; fetch
donothing; goto main1
set PC = PC+1
set H = MBR sll8; fetch
set PC = PC+1
set T1 = H + MBRU; fetch
set T2 = SP-1
set MAR = T2-1; read
Donothing
set T2 = MDR
svc; goto main1
CBus

ALU/shift JAM

Next
Addr
0x100

You might also like