29
7장 장장장장장장장장장 장장장장장장 장장장장 장장 Slide 1 (of 29)

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

  • Upload
    maxima

  • View
    67

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

7 장

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

주소지정 방식

Slide 1 (of 29)

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

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

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

이번 시간에는 ...

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

학습개요학습개요

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

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

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

Slide 2 (of 29)

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

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)

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

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

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

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

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

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

Instruction Cycle

Instruction Cycle

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

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

기계어 : 3E, 56

OP_code Operand

Slide 4 (of 29)

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

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)

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

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)

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

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

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

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

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

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)

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

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)

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

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

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

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

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

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)

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

상대 주소지정 방식 (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)

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

변위 계산 방법

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)

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

지표 주소지정 방식 (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)

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

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)

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

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)