7 장 마이크로프로세서의 명령어수행과 주소지정 방식

Post on 05-Jan-2016

67 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

7 장 마이크로프로세서의 명령어수행과 주소지정 방식. 학습개요. 이번 시간에는 ... “ 마이크로프로세서의 명령어 수행 사이클 과 주소지정방식 ” 에 대해 알아보겠습니다. 학 습 목 표. 이장에서는 CPU 에서 명령어를 수행하는 사이클에 대해 공부하고 주소지정방식에 대해 알아본다. 학 습 목 차. 명령어 수행 주소지정방식. MAR. CPU. PC. 100. 100. CU. IR. 제어신호. Decoder ( 명령어 해석기 ). Instruction Cycle. - PowerPoint PPT Presentation

TRANSCRIPT

7 장

마이크로프로세서의 명령어수행과

주소지정 방식

Slide 1 (of 29)

이장에서는 CPU 에서 명령어를 수행하는 사이클에 대해

공부하고 주소지정방식에 대해 알아본다 .

이번 시간에는 ...

“ 마이크로프로세서의 명령어 수행 사이클 과 주소지정방식”에 대해 알아보겠습니다 .

학습개요학습개요

학 습 목 표학 습 목 표학 습 목 표학 습 목 표

• 명령어 수행• 주소지정방식

학 습 목 차학 습 목 차학 습 목 차학 습 목 차

Slide 2 (of 29)

Instruction Cycle

Instruction Cycle

명령어 사이클 (instruction cycle) 은 Memory 에 저장되어 있는 program 을 읽어와서 명령어를 실행하는 사이클을 말한다 .

MAR : Memory Address Register

MBR(MDR): Memory Buffer Register(Memory Data Register)

IR:Instruction Register( 명령어 레지스터 )

100H

101H

102H

103H

한 개의 명령어는 명령어 코드 (OP_code) 와 실행자 (Operand) 로 구성된다 .

명령어 = OP code( 명령어 코드 ) + Operand( 실행자 )

100

PC

100

MAR

Decoder

( 명령어 해석기 )

IRCU

제어신호

CPU

MBR

Memory

제어장치 (CU : Control Unit) 와 메모리 구조

Slide 3 (of 29)

따라서 한 개 명령어를 실행하기 위해서

① 먼저 읽어올 명령어가 저장되어 있는 메모리를 지정한다 .

② 메모리에 저장된 명령어를 먼저 제어장치의 명령어 레지스터 (IR:instruction Register) 로 읽어온다 .

③ 읽어온 명령어는 명령어 해석기에서 해석한 다음 해당 명령어에 대한 제어신호들을 생성하여 제어한다 .

④ 해석된 명령어에 의해 실행한다

Instruction Cycle

Instruction Cycle

ex) 메모리에 저장되어 있는 실행자 ( 데이터 ) 를 Acc 에 읽어오는 명령어를 실행해 보자

어셈블리 언어 : LD A,56H (Acc 에 56H 을 load 하라는 명령어 )

기계어 : 3E, 56

OP_code Operand

Slide 4 (of 29)

100H

101H

102H

103H

100

PC

100

MAR

Decoder

( 명령어 해석기 )

IRCU

제어신호

CPU

3EH

56H

MBR

Memory

Instruction Cycle

Instruction Cycle

OP_code

Operand

Slide 5 (of 29)

100H

101H

102H

103H

100

PC

100

MAR

Decoder

( 명령어 해석기 )

IRCU

제어신호

CPU

3EH

56H

MBR(3EH)

Memory

Instruction Cycle

Instruction Cycle

OP_code

(1) T0 : PC → MAR ( 100 을 MAR 로 전송 )

(2) T1 : [M] → MBR , PC=PC+1 (100 번지 내용을 MBR 로 전송 )

(3) T2 : MBR → IR (3E(op code) 를 IR 로 load 하여 해석 )

InstructionFetch cycle

T0

T1

(1) Instruction Fetch cycle

3EH

T2

초기상태 에서 RUN 100H 를 실행해 보자

Slide 6 (of 29)

(4) T3 : PC → MAR (101 번지를 MAR 로 전송 )

(5) T4 : [M] → MBR , PC=PC+1 (101 번지 MBR 로 전송 )

(6) T5 : MBR → Acc (MBR(56) 을 Acc 로 전송 )

Instructionexecution

cycle

(2) Instruction execution cycle

Instruction Cycle

Instruction Cycle

100H

101H

102H

103H

101

PC

101

MAR

Decoder

( 명령어 해석기 )

IRCU

제어신호

CPU

3EH

56H

MBR(56H)

MemoryOperand

T3

T43EH

T556HAcc

Slide 7 (of 29)

(3) One Instruction cycle

Instruction Fetch(Machine cycle One)

실행 cycle (Machine cycle)

One Instruction cycle

T0 T1 T2 T3 T4 T5 T0

Instruction Cycle

Instruction Cycle

PC→ MAR[M]→ MBR

PC=PC+1MBR→ IR PC→ MAR

[M]→MBR

PC=PC+1MBR→Acc

Slide 8 (of 29)

ex) 9000H 번지의 내용을 Acc 로 읽어오는 명령어 명령어를 실행해 보자 . 9000H 번지에는 37H 가 저장되어 있다 .

어셈블리 언어 : LD A,(9000H) (Acc 에 9000H 번지의 내용 37H 를 load 하라는 명령어 )

기계어 : 2A, 00, 90OP_code Operand

Instruction Cycle

Instruction Cycle

Slide 9 (of 29)

100H

101H

102H

103H

9000H

100

PC

100

MAR

Decoder

( 명령어 해석기 )

2AHIRCU

제어신호

CPU

2AH

00H

90H

37H

MBR(2AH)

MemoryOP_code

Operand

Acc

Instruction Cycle

Instruction Cycle

(1) Instruction Fetch cycle

(1) T0 : PC → MAR ( 100 을 MAR 로 전송 )

(2) T1 : [M] → MBR , PC=PC+1 (100 번지 내용을 MBR 로 전송 )

(3) T2 : MBR → IR (2A(op code) 를 IR 로 load 하여 해석 )

InstructionFetch cycle

T0

T1T2

Slide 10 (of 29)

(2) Instruction execution cycle

Instruction Cycle

Instruction Cycle

100H

101H

102H

103H

9000H

100

PC

100

MAR

Decoder

( 명령어 해석기 )

2AHIRCU

제어신호

CPU

2AH

00H

90H

37H

MBR(2AH)

MemoryOP_code

Operand

37HAcc

T3

T4

T5

90

Temp2

00

Temp1 T6

T7

T8

T9

T10

T11

T12

Slide 11 (of 29)

(7) T6 : PC → MAR (102 번지를 MAR 로 전송 )

(8) T7 : [M] → MBR , PC=PC+1 (102 번지 MBR 로전송 )

(9) T8 : MBR → Temp2 (MBR(90H) 을 Temp2 레지스터로 전송 )

(10) T9 : Temp → PC (Temp2, Temp2 의 9000H 를 PC 로 전송한다 )

(11) T10 : PC → MAR (9000H 번지를 MAR 로 전송 )

(12) T11 : [M] → MBR , PC=PC+1 (9000H 번지 내용을 MBR 로 전송 )

(13) T12 : MBR → Acc (MBR(37H) 을 Acc 로 전송 )

Instruction Cycle

Instruction Cycle

(4) T3 : PC → MAR (101 번지를 MAR 로전송 )

(5) T4 : [M] → MBR , PC=PC+1 (101 번지 MBR 로 전송 )

(6) T5 : MBR → Temp1 (MBR(00H) 을 Temp1 레지스터로 전송 )

Instructionexecution

cycle

Slide 12 (of 29)

Register Memory

① Immediate addressing mode ( 즉치 주소지정 방식 )

② Direct addressing mode( 직접 주소지정방식 )

③ Register addressing( 레지스터 주소지정 방식 )

④ Indirect addressing mode( 간접 주소지정 방식 )

⑤ Implied addressing mode( 함축 주소지정 방식 )

⑥ Relative addressing mode( 상대 주소지정 방식 )

⑦ Indexed addressing mode( 지표 주소지정 방식 )

⑧ Modified Page Zero addressing mode( 제로 페이지 주소지정 방식 )

⑨ Bit addressing ( 비트 주소지정 방식 )

Register 와 Memory 에서 서로들 간의 Data 전송방법을 주소지정방식 (addressing mode) 라 한다

Addressing Mode

주소지정방식 (Addressing Mode) 개요

주소지정방식의 종류는 다음과 같다 .

Slide 13 (of 29)

25

Acc

메모리로부터 즉치 ( 숫자 ) 를 Register 에 전송하는 주소지정방식을 즉치 주소지정 방식 (immediate addressing

mode) 라 한다

Addressing Mode

Immediate Addressing Mode

형식 : OP_code + 1 byte operand

Mnemonic : LD r, nH ( r 은 A, B, C, D, E, H, L register)

ex) LD A, 25H ( A ← 25H : Acc 에 즉치 25H 를 로드하는 명령어 )

3E, 25

OP-code Operand

3EH

25H

8000H

8001H

8002H

8003H

Slide 14 (of 29)

25H

55

Acc

ex) ADD A, 25H ( A ← A + 25 : Acc 의 내용에 즉치 25H 를 가산한 후 Acc 에 로드하는 명령어 )

C6, 25

OP-code Operand

C6H

25H

8000H

8001H

8002H

8003H

Addressing Mode

Immediate Addressing Mode

30

Acc

◈ 실행 전 ◈ 실행 후

Slide 15 (of 29)

20

H L

15

Addressing Mode

Immediate Addressing Mode

16bit 즉치를 Register 에 Load 하는 명령어로서 확장 즉치 주소지정 방식 (Immediate Extended

Addressing Mode) 이라고도 한다

형식 : OP_code + 2 byte operand

Mnemonic : LD rr, nnH ( rr 은 BC, DE, HL register)

ex) LD HL, 2015H (HL ← 2015H : 즉치 2015H 를 HL 레지스터에 로드하는 명령어

21, 15 , 20

OP-code Operand

25H

21H

15H

20H

8000H

8001H

8002H

8003H

Slide 16 (of 29)

ex) LD A,(9000H) (A ← (9000H) : 9000H 번지의 내용을 직접 A 에 Load 하는 명령어

Addressing Mode

Direct Addressing Mode

실행자가 가르키는 메모리번지의 내용을 직접 Register 에 전송하는 주소지정방식을 직접 주소지정 방식(direct addressing mode) 라 한다

형식 : OP_code + 2 byte operand

Mnemonic : LD r, (nnH) , LD (nnH), r ( r 은 A, B, C, D, E, H, L register)

3A , 00, 90

OP-code Operand

56

Acc

3AH

00H

90H

8000H

8001H

8002H

8003H

56H9000H직접 전송

Slide 17 (of 29)

Addressing Mode

Direct Addressing Mode

ex) LD (8500H),A ( (8500H) ← A : Acc 의 내용을 8500H 번지에 직접 전송하는 명령어

32 , 00, 85

OP-code Operand

74

Acc

32H

00H

85H

8000H

8001H

8002H

8003H

74H8500H직접 전송

Slide 18 (of 29)

Addressing Mode

Direct Addressing Mode

16bit Register 에 직접 데이터를 Load 하는 명령어로서 확장 직접 주소지정 방식 (direct Extended

Addressing Mode) 이라고도 한다

ex) LD HL, (8500H) ( H ← (8501H), L ← (8500H) : 8050H, 8051H 번지의 내용을 HL 레지스터로 직접 전송하는 직접 전송하는 명령어

형식 : OP_code + 2 byte operand

Mnemonic : LD rr, (nnH) , LD (nnH), rr ( rr 은 BC, DE, HL register)

2A , 00, 85

OP-code Operand

2AH

00H

85H

8000H

8001H

8002H

8003H

16 비트 데이터직접 전송

34H

12H

8500H

8501H

12

H L

34

Slide 19 (of 29)

Addressing Mode

Direct Addressing Mode

ex) LD (8500H). BC ( (8501H) ← C, (8500H) ← B : BC 레지스터 내용을 8050H, 8051H 번지에 직접 전송하는 직접 전송하는 명령어

ED,43 , 00, 85

OP-code Operand EDH

43H

00H

85H

8000H

8001H

8002H

8003H

16 비트 데이터직접 전송

56H

34H

8500H

8501H

34

B C

56

Slide 20 (of 29)

Addressing Mode

Register Addressing Mode

레지스터의 내용을 레지스터터로 전송하는 주소지정방식을 레지스터 주소지정 방식 (register addressing

mode) 라 한다

형식 : OP_code

Mnemonic : LD r, r ( r 은 A, B, C, D, E, H, L register)

ex) LD A, B ( A ← B : B 레지스터의 내용을 Acc 로 전송하는 명령어 )

78

OP-code

47

Acc

78H8000H

8001H

8002H

8003H47

B 직접 Load

Slide 21 (of 29)

ex) LD A, (HL) (A ← (HL) : HL 의 내용이 가르키는 번지의 내용을 Acc 로 전송하는 명령어 )

Addressing Mode

Indirect Addressing Mode

16 비트 레지스터의 내용이 가르키는 번지의 메모리 내용을 레지스터로 전송하는 주소지정방식을간접 주소지정 방식 (indirect addressing mode) 라 한다

형식 : OP_code

Mnemonic : LD r, (rr) LD (rr), r

( r 은 A, B, C, D, E, H, L register, (rr) 은 SP, BC, DE, HL register)

7E

OP-code 7EH8000H

8001H

8002H

8003H

16 비트 주소 생성47H

34H

9000H

9001H

90

H L

00

47

Acc

간접 로드

Slide 22 (of 29)

ex) CPL ( Acc 내용을 1 진 보수 처리하는 명령어 )

Addressing Mode

Implied Addressing Mode

함축 주소지정방식 (Implied addressing mode) 는 자기 자신의 register 를 자체적으로 Data 를 조작하는 주소지정방식 implied addressing mode 이다

형식 : OP_code or 2byte OP_code

Mnemonic : CPL, NEG

2F

OP-code

2FH8000H

8001H

8002H

8003H

6A

Acc

95

Acc

◈ 실행 전 ◈ 실행 후

1001 0101 0110 1010CPL

Slide 23 (of 29)

ED, 44

OP-code

ex) NEG (Acc 내용을 2 진 보수 처리하는 명령어 )

Addressing Mode

Implied Addressing Mode

EDH

44H

8000H

8001H

8002H

8003H

6B

Acc

95

Acc

◈ 실행 전 ◈ 실행 후

1001 0101 0110 1011NEG

1001 0101

0110 1010

CPL(1 진 보수 )

0110 1011

0000 0001+

(2 진 보수 결과 )

Slide 24 (of 29)

상대 주소지정 방식 (relative addressing mode) 는 현재 PC 로부터 근접 Jump( +127~ -128 사이 ) 에사용되는 상대적 점프를 말한다 .

Addressing Mode

Relative Addressing Mode

형식 : OP_code + 1byte operand

Mnemonic : jr nH (n 은 상대점프해갈 8 비트 변위를 말한다 )

8100H

8101H

8102H

8103H

8082H

8181H

현재 PC 내용

-128(80H)

- 쪽으로 jump 할 수 있는 번지

+127(7FH)

+ 쪽으로 jump 할 수 있는 번지

총 256 개 번지

Slide 25 (of 29)

변위 계산 방법

Jump 해갈 번지 - 현재 PC = 변위

ex) 현재 PC 내용이 8102 일 때 8105 번지로 jump 하려면 변위 계산 : 8105 - 8102 = 03 JR 03H ( + 쪽으로 3 번지 jump)

Addressing Mode

Relative Addressing Mode

18H

03H

8100H

8101H

8102H

8103H

8105H

현재 PC 내용

18, 03

OP-code Operand( 변위 )

JR 03H

+ 쪽으로 03H 번지로 점프

Slide 26 (of 29)

지표 주소지정 방식 (Indexed addressing mode) 는 지표 레지스터 IX, IY 를 이용하여 번지를 지정하는방식으로 유효 주소는 다음과 같다 .

ex) LD A, (IX + 03H) ( A ←(IX+03H) : IX 레지스터 내용에 변위 3H 를 가산하여 유효주소를 만들어 유효주소의 내용을 Acc 로 전송하는 명렬어 )

Addressing Mode

Indexed Addressing Mode

유효 주소 (effective address) = IX(or IY) + d( 변위 )

변위는 -128 에서 +127 사이를 지정한다 .

Mnemonic : LD r, (IX + d)

DD, 7E, 03

OP-code Operand( 변위 )

78

Acc

DDH

7EH

03H

8000H

8001H

8002H

8003H

8100

IX 12H

34H

56H

78H

8100H

8101H

8102H

8103H

8103(effective address) = 8100(IX) + 03( 변위 )

Slide 27 (of 29)

Zero page 는 0000 번지부터 00FF 번지까지 256 번지를 말한다 . Zero page 내에 특정한 벡터를 구성하여 주소를 지정하는 방식이다 .

Addressing Mode

Modified Page Zero Addressing Mode

RST nH (nH 는 Zero page 벡터 번지이며 ) 명령어에 의해 동작되는 방식 .

Mnemonic : RST nH (RST 00, RST 08, RST 10, RST18, RST 20, RST 28, RST 30, RST 38)

ex) RST 10 (0010H 벡터번지로 가서 명령어를 실행하는 명령어 )

D7

OP-code D7H8000H

8001H

8002H

8003H

C3H

00H

20H

0010H

0011H

0012H

0013H

12H

34H

56H

78H

2000H

2001H

2002H

2003H

① RST 10

③특정한

부프로그램

실행

Memory Zero page

②벡터 구성JP 2000H(2000H 로 점프 )

Slide 28 (of 29)

Register 값에서 임의 bit 를 1 로 set 하거나 0 으로 reset 하는 mode.

ex) SET 3, A

ex) RESET 5, B

Addressing Mode

Bit Addressing Mode

Mnemonic : SET I, r (r 레지스터에서 I 번째 비트를 “1” 로 세트하는 명령어 ) RESET I, r (r 레지스터에서 I 번째 비트를 “0” 으로 리세트하는 명령어 )

88

Acc

80

Acc

◈ 실행 전 ◈ 실행 후

1000 0000 1000 1000SET 3H, A

88

Acc

B0

Acc

◈ 실행 전 ◈ 실행 후

1011 0000 1001 0000RSET 5H, A

Slide 29 (of 29)

top related