Скачать презентацию 7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 of Скачать презентацию 7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 of

31114c7ae2cc1e7cf77a889429169a92.ppt

  • Количество слайдов: 29

7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 (of 29) 7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 (of 29)

학습개요 이번 시간에는. . . “마이크로프로세서의 명령어 수행 사이클 과 주소지정방식”에 대해 알아보겠습니다. 학습목표 학습개요 이번 시간에는. . . “마이크로프로세서의 명령어 수행 사이클 과 주소지정방식”에 대해 알아보겠습니다. 학습목표 이장에서는 CPU 에서 명령어를 수행하는 사이클에 대해 공부하고 주소지정방식에 대해 알아본다. 학습목차 • 명령어 수행 • 주소지정방식 Slide 2 (of 29)

Instruction Cycle ü Instruction Cycle 명령어 사이클(instruction cycle)은 Memory에 저장되어 있는 program을 읽어와서 명령어를 Instruction Cycle ü Instruction Cycle 명령어 사이클(instruction cycle)은 Memory에 저장되어 있는 program을 읽어와서 명령어를 실 행하는 사이클을 말한다. 한 개의 명령어는 명령어 코드(OP_code)와 실행자(Operand) 로 구성된다. 명령어 = OP code(명령어 코드) + Operand(실행자) 제어장치(CU : Control Unit)와 메모리 구조 CPU MAR PC 100 CU Memory 100 H 101 H 102 H IR 103 H 제어신호 Decoder MBR (명령어 해석기) MAR : Memory Address Register MBR(MDR): Memory Buffer Register(Memory Data Register) IR: Instruction Register(명령어 레지스터) Slide 3 (of 29)

Instruction Cycle ü Instruction Cycle 따라서 한 개 명령어를 실행하기 위해서 ① 먼저 읽어올 Instruction Cycle ü Instruction Cycle 따라서 한 개 명령어를 실행하기 위해서 ① 먼저 읽어올 명령어가 저장되어 있는 메모리를 지정한다. ② 메모리에 저장된 명령어를 먼저 제어장치의 명령어 레지스터(IR: instruction Register)로 읽어온다. ③ 읽어온 명령어는 명령어 해석기에서 해석한 다음 해당 명령어에 대한 제어신호들을 생성하여 제어한다. ④ 해석된 명령어에 의해 실행한다 ex) 메모리에 저장되어 있는 실행자(데이터)를 Acc에 읽어오는 명령어를 실행해 보자 어셈블리 언어 : LD A, 56 H 기계어 (Acc에 56 H을 load 하라는 명령어) : 3 E, 56 OP_code Operand Slide 4 (of 29)

Instruction Cycle ü Instruction Cycle CPU MAR PC 100 CU 100 Memory 100 H Instruction Cycle ü Instruction Cycle CPU MAR PC 100 CU 100 Memory 100 H 3 EH 101 H 56 H 102 H IR 103 H 제어신호 Decoder MBR (명령어 해석기) Slide 5 (of 29) OP_code Operand

Instruction Cycle ü Instruction Cycle 초기상태 에서 RUN 100 H를 실행해 보자 (1) Instruction Instruction Cycle ü Instruction Cycle 초기상태 에서 RUN 100 H를 실행해 보자 (1) Instruction Fetch cycle CPU T 0 MAR 100 PC 100 CU Memory 3 EH 101 H IR 100 H 56 H 102 H 3 EH OP_code T 1 103 H 제어신호 Decoder T 2 (명령어 해석기) Instruction Fetch cycle MBR(3 EH) (1) T 0 : PC → MAR ( 100 을 MAR로 전송) (2) T 1 : [M] → MBR , PC=PC+1 (100번지 내용을 MBR로 전송) (3) T 2 : MBR → IR (3 E(op code)를 IR로 load하여 해석) Slide 6 (of 29)

Instruction Cycle ü Instruction Cycle (2) Instruction execution cycle CPU T 3 MAR 101 Instruction Cycle ü Instruction Cycle (2) Instruction execution cycle CPU T 3 MAR 101 PC 101 CU Memory 3 EH 101 H IR 100 H 56 H 102 H 3 EH T 4 103 H 제어신호 Decoder MBR(56 H) (명령어 해석기) Acc T 5 56 H (4) T 3 : PC Instruction execution cycle → MAR (5) T 4 : [M] → MBR , PC=PC+1 (101번지 MBR로 전송) (6) T 5 : MBR → Acc Operand (101번지를 MAR로 전송) (MBR(56)을 Acc로 전송) Slide 7 (of 29)

Instruction Cycle ü Instruction Cycle (3) One Instruction cycle T 0 T 1 T Instruction Cycle ü Instruction Cycle (3) One Instruction cycle T 0 T 1 T 2 T 3 T 4 T 5 One Instruction cycle PC→ MAR [M]→ MBR PC=PC+1 MBR→ IR Instruction Fetch (Machine cycle One) PC→ MAR [M]→MBR PC=PC+1 실행 cycle (Machine cycle) Slide 8 (of 29) MBR→Acc T 0

Instruction Cycle ü Instruction Cycle ex) 9000 H번지의 내용을 Acc로 읽어오는 명령어를 실행해 보자. Instruction Cycle ü Instruction Cycle ex) 9000 H번지의 내용을 Acc로 읽어오는 명령어를 실행해 보자. 9000 H번지에는 37 H가 저장되어 있다. 어셈블리 언어 : LD A, (9000 H) 기계어 (Acc에 9000 H 번지의 내용 37 H를 load 하라는 명령어) : 2 A, 00, 90 OP_code Operand Slide 9 (of 29)

Instruction Cycle ü Instruction Cycle (1) Instruction Fetch cycle CPU T 0 MAR PC Instruction Cycle ü Instruction Cycle (1) Instruction Fetch cycle CPU T 0 MAR PC 100 CU Memory 100 00 H 102 H 2 AH 101 H IR 100 H OP_code 90 H Operand 103 H 제어신호 Decoder T 2 (명령어 해석기) T 1 9000 H MBR(2 AH) Acc Instruction Fetch cycle 37 H (1) T 0 : PC → MAR ( 100 을 MAR로 전송) (2) T 1 : [M] → MBR , PC=PC+1 (100번지 내용을 MBR로 전송) (3) T 2 : MBR → IR (2 A(op code)를 IR로 load하여 해석) Slide 10 (of 29)

Instruction Cycle ü Instruction Cycle (2) Instruction execution cycle CPU T 9 MAR PC Instruction Cycle ü Instruction Cycle (2) Instruction execution cycle CPU T 9 MAR PC 100 Temp 2 Temp 1 90 CU 100 H 00 H 102 H 90 H T 7 2 AH T 5 9000 H 37 H Decoder (명령어 해석기) Acc OP_code Operand 103 H T 10 제어신호 2 AH 101 H T 6 00 IR Memory T 3 T 8 MBR(2 AH) T 11 37 H T 12 Slide 11 (of 29) T 4

Instruction Cycle ü Instruction Cycle (4) T 3 : PC → MAR (101번지를 MAR로전송) Instruction Cycle ü Instruction Cycle (4) T 3 : PC → MAR (101번지를 MAR로전송) (5) T 4 : [M] → MBR , PC=PC+1 (101번지 MBR로 전송) (6) T 5 : MBR → Temp 1 (7) T 6 : PC Instruction execution cycle (MBR(00 H)을 Temp 1 레지스터로 전송) (102번지를 MAR로 전송) (8) T 7 : [M] → MAR → MBR , PC=PC+1 (102번지 MBR로전송) (9) T 8 : MBR → Temp 2 (MBR(90 H)을 Temp 2 레지스터로 전송) (10) T 9 : Temp (Temp 2, Temp 2의 9000 H를 PC로 전송한다) → PC (11) T 10 : PC → MAR (12) T 11 : [M] (9000 H번지를 MAR로 전송) → MBR , PC=PC+1 (9000 H번지 내용을 MBR로 전송) (13) T 12 : MBR → Acc (MBR(37 H)을 Acc로 전송) Slide 12 (of 29)

Addressing Mode ü 주소지정방식(Addressing Mode) 개요 Register와 Memory에서 서로들 간의 Data 전송방법을 주소지정방식(addressing mode)라 Addressing Mode ü 주소지정방식(Addressing Mode) 개요 Register와 Memory에서 서로들 간의 Data 전송방법을 주소지정방식(addressing mode)라 한다 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 (비트 주소지정 방식) Slide 13 (of 29)

Addressing Mode ü Immediate Addressing Mode 메모리로부터 즉치(숫자)를 Register에 전송하는 주소지정방식을 즉치 주소지정 방식(immediate Addressing Mode ü Immediate Addressing Mode 메모리로부터 즉치(숫자)를 Register에 전송하는 주소지정방식을 즉치 주소지정 방식(immediate addressing mode)라 한다 형식 : OP_code + 1 byte operand Mnemonic : LD r, n. H ex) LD A, 25 H ( r 은 A, B, C, D, E, H, L register) ( A ← 25 H : Acc에 즉치 25 H를 로드하는 명령어) 3 E, 25 OP-code Operand Acc 8000 H 25 3 EH 8001 H 25 H 8002 H 8003 H Slide 14 (of 29)

Addressing Mode ü Immediate Addressing Mode ex) ADD A, 25 H ( A ← Addressing Mode ü Immediate Addressing Mode ex) ADD A, 25 H ( A ← A + 25 : Acc의 내용에 즉치 25 H를 가산한 후 Acc에 로드하는 명령어) C 6, 25 OP-code Operand ◈ 실행 전 Acc 30 ◈ 실행 후 Acc 55 8000 H C 6 H 8001 H 25 H 8002 H ⊕ 8003 H Slide 15 (of 29) 25 H

Addressing Mode ü Immediate Addressing Mode 16 bit 즉치를 Register에 Load하는 명령어로서 확장 즉치 Addressing Mode ü Immediate Addressing Mode 16 bit 즉치를 Register에 Load하는 명령어로서 확장 즉치 주소지정 방식(Immediate Extended Addressing Mode) 이라고도 한다 형식 : OP_code + 2 byte operand Mnemonic : LD rr, nn. H ex) LD HL, 2015 H ( rr 은 BC, DE, HL register) (HL ← 2015 H : 즉치 2015 H를 HL 레지스터에 로드하는 명령어 21, 15 , 20 OP-code Operand H 20 L 15 8000 H 21 H 8001 H 15 H 8002 H 20 H 8003 H Slide 16 (of 29) 25 H

Addressing Mode ü Direct Addressing Mode 실행자가 가르키는 메모리번지의 내용을 직접 Register에 전송하는 주소지정방식을 Addressing Mode ü Direct Addressing Mode 실행자가 가르키는 메모리번지의 내용을 직접 Register에 전송하는 주소지정방식을 직접 주소지정 방식 (direct addressing mode)라 한다 : OP_code + 2 byte operand 형식 Mnemonic : LD r, (nn. H) , LD (nn. H), r ex) LD A, (9000 H) ( r 은 A, B, C, D, E, H, L register) (A ← (9000 H) : 9000 H 번지의 내용을 직접 A에 Load하는 명령어 3 A , 00, 90 OP-code Operand 8000 H 8001 H 56 00 H 8002 H Acc 3 AH 90 H 8003 H 직접 전송 9000 H Slide 17 (of 29) 56 H

Addressing Mode ü Direct Addressing Mode ex) LD (8500 H), A ( (8500 H) Addressing Mode ü Direct Addressing Mode ex) LD (8500 H), A ( (8500 H) ← A : Acc의 내용을 8500 H 번지에 직접 전송하는 명령어 32 , 00, 85 OP-code Operand 8000 H 8001 H 74 00 H 8002 H Acc 32 H 85 H 8003 H 직접 전송 8500 H Slide 18 (of 29) 74 H

Addressing Mode ü Direct Addressing Mode 16 bit Register에 직접 데이터를 Load하는 명령어로서 확장 Addressing Mode ü Direct Addressing Mode 16 bit Register에 직접 데이터를 Load하는 명령어로서 확장 직접 주소지정 방식(direct Extended Addressing Mode) 이라고도 한다 : OP_code + 2 byte operand 형식 Mnemonic : LD rr, (nn. H) , LD (nn. H), rr ( rr 은 BC, DE, HL register) ex) LD HL, (8500 H) ( H ← (8501 H), L ← (8500 H) : 8050 H, 8051 H 번지의 내용을 HL 레지스터로 직접 전송하는 명령어 2 A , 00, 85 OP-code Operand 8000 H 8001 H H 12 2 AH 00 H L 8002 H 85 H 34 8003 H 8500 H 16비트 데이터직접 전송 34 H 8501 H 12 H Slide 19 (of 29)

Addressing Mode ü Direct Addressing Mode ex) LD (8500 H). BC ( (8501 H) Addressing Mode ü Direct Addressing Mode ex) LD (8500 H). BC ( (8501 H) ← C, (8500 H) ← B : BC 레지스터 내용을 8050 H, 8051 H 번지에 직접 전송하는 명령어 ED, 43 , 00, 85 OP-code Operand 8000 H 8001 H B 34 56 16비트 데이터직접 전송 Slide 20 (of 29) 43 H 8002 H 00 H 8003 H 8500 H C EDH 56 H 8501 H 34 H

Addressing Mode ü Register Addressing Mode 레지스터의 내용을 레지스터터로 전송하는 주소지정방식을 레지스터 주소지정 방식(register Addressing Mode ü Register Addressing Mode 레지스터의 내용을 레지스터터로 전송하는 주소지정방식을 레지스터 주소지정 방식(register addressing mode)라 한다 형식 : OP_code Mnemonic : LD r, r ex) LD A, B ( r 은 A, B, C, D, E, H, L register) ( A ← B : B 레지스터의 내용을 Acc로 전송하는 명령어) 78 OP-code Acc 47 B 8000 H 직접 Load 47 8001 H 8002 H 8003 H Slide 21 (of 29) 78 H

Addressing Mode ü Indirect Addressing Mode 16비트 레지스터의 내용이 가르키는 번지의 메모리 내용을 레지스터로 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) ex) LD A, (HL) (A ← (HL) : HL의 내용이 가르키는 번지의 내용을 Acc 로 전송하는 명령어) 7 E OP-code Acc 8000 H 8001 H 47 H 90 7 EH 8002 H L 00 8003 H 간접 로드 9000 H 16비트 주소 생성 Slide 22 (of 29) 47 H 9001 H 34 H

Addressing Mode ü Implied Addressing Mode 함축 주소지정방식(Implied addressing mode)는 자기 자신의 register를 자체적으로 Addressing Mode ü Implied Addressing Mode 함축 주소지정방식(Implied addressing mode)는 자기 자신의 register를 자체적으로 Data 를 조작 하는 주소지정방식 implied addressing mode 이다 형식 : OP_code or 2 byte OP_code Mnemonic : CPL, ex) CPL NEG ( Acc 내용을 1진 보수 처리하는 명령어) 2 F OP-code ◈ 실행 전 Acc ◈ 실행 후 Acc 95 1001 0101 6 A CPL 8000 H 8001 H 8002 H 0110 1010 Slide 23 (of 29) 8003 H 2 FH

Addressing Mode ü Implied Addressing Mode ex) NEG (Acc 내용을 2진 보수 처리하는 명령어) Addressing Mode ü Implied Addressing Mode ex) NEG (Acc 내용을 2진 보수 처리하는 명령어) ED, 44 OP-code ◈ 실행 전 Acc ◈ 실행 후 Acc 95 1001 0101 6 B NEG 0110 1011 CPL(1진 보수) 0110 1010 0001 0110 1011 EDH 8001 H 44 H 8002 H 1001 0101 + 8000 H (2진 보수 결과) Slide 24 (of 29) 8003 H

Addressing Mode ü Relative Addressing Mode 상대 주소지정 방식(relative addressing mode)는 현재 PC로부터 근접 Addressing Mode ü Relative Addressing Mode 상대 주소지정 방식(relative addressing mode)는 현재 PC로부터 근접 Jump( +127~ -128 사이)에 사용되는 상대적 점프를 말한다. 형식 : OP_code + 1 byte operand Mnemonic : jr n. H (n은 상대점프해갈 8비트 변위를 말한다) 8082 H -128(80 H) 8100 H - 쪽으로 jump할 수 있는 번지 8101 H 8102 H 8103 H 8181 H 총 256개 번지 현재 PC 내용 +쪽으로 jump할 수 있는 번지 +127(7 FH) Slide 25 (of 29)

Addressing Mode ü Relative Addressing Mode 변위 계산 방법 Jump해갈 번지 - 현재 PC Addressing Mode ü Relative Addressing Mode 변위 계산 방법 Jump해갈 번지 - 현재 PC = 변위 ex) 현재 PC 내용이 8102 일 때 8105번지로 jump하려면 변위 계산 : 8105 - 8102 = 03 JR 03 H ( +쪽으로 3번지 jump) 18, 03 OP-code Operand(변위) 8100 H 18 H 8101 H 03 H 8102 H JR 03 H 현재 PC 내용 8103 H +쪽으로 03 H 번지로 점프 8105 H Slide 26 (of 29)

Addressing Mode ü Indexed Addressing Mode 지표 주소지정 방식(Indexed addressing mode)는 지표 레지스터 IX, Addressing Mode ü Indexed Addressing Mode 지표 주소지정 방식(Indexed addressing mode)는 지표 레지스터 IX, IY 를 이용하여 번지를 지정하는 방식으로 유효 주소는 다음과 같다. 유효 주소(effective address) = IX(or IY) + d(변위) 변위는 -128에서 +127 사이를 지정한다. Mnemonic : LD r, (IX + d) ex) LD A, (IX + 03 H) ( A ←(IX+03 H) : IX레지스터 내용에 변위 3 H를 가산하여 유효주소를 만들어 유효주소의 내용을 Acc로 전송하는 명렬어) 8000 H OP-code Operand(변위) 7 EH 8002 H Acc DDH 8001 H DD, 7 E, 03 03 H 8003 H 78 IX 8100 H ⊕ 8103(effective address) = 8100(IX) + 03(변위) Slide 27 (of 29) 8101 H 34 H 8102 H 8100 12 H 56 H 8103 H 78 H

Addressing Mode ü Modified Page Zero Addressing Mode Zero page는 0000 번지부터 00 FF Addressing Mode ü Modified Page Zero Addressing Mode Zero page는 0000 번지부터 00 FF 번지까지 256번지를 말한다. Zero page내에 특정한 벡터를 구성하 여 주소를 지정하는 방식이다. RST n. H (n. H는 Zero page 벡터 번지이며)명령어에 의해 동작되는 방식. Mnemonic : RST n. H (RST 00, RST 08, RST 10, RST 18, RST 20, RST 28, RST 30, RST 38) ex) RST 10 (0010 H 벡터번지로 가서 명령어를 실행하는 명령어) Memory Zero page D 7 ① RST 10 OP-code 0010 H C 3 H 8001 H 0011 H 00 H 8002 H 0012 H 20 H 8003 H 0013 H 8000 H D 7 H 2000 H 2001 H 34 H 2002 H 56 H 2003 H Slide 28 (of 29) 12 H 78 H ②벡터 구성 JP 2000 H (2000 H로 점프) ③특정한 부프로그램 실행

Addressing Mode ü Bit Addressing Mode Register값에서 임의 bit를 1로 set하거나 0으로 reset하는 mode. Addressing Mode ü Bit Addressing Mode Register값에서 임의 bit를 1로 set하거나 0으로 reset하는 mode. Mnemonic : SET I, r RESET I, r ex) SET 3, A (r 레지스터에서 I번째 비트를 “ 1”로 세트하는 명령어) (r 레지스터에서 I번째 비트를 “ 0”으로 리세트하는 명령어) ◈ 실행 전 Acc 80 ◈ 실행 후 Acc 88 SET 3 H, A 1000 0000 1000 ex) RESET 5, B ◈ 실행 전 Acc B 0 ◈ 실행 후 Acc 88 RSET 5 H, A 1011 0000 1001 0000 Slide 29 (of 29)