1 / 29

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

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

maxima
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

  8. Instruction Cycle • Instruction Cycle (3) One Instruction cycle T0 T1 T2 T3 T4 T5 T0 One Instruction cycle [M]→ MBR PC=PC+1 [M]→MBR PC=PC+1 PC→ MAR MBR→Acc MBR→ IR PC→ MAR Instruction Fetch (Machine cycle One) 실행 cycle (Machine cycle) Slide 8 (of 29)

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

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

  11. Instruction Cycle • Instruction Cycle (2) Instruction execution cycle MAR CPU PC T3 Memory OP_code 100 100 100H 101H 102H 103H 9000H T9 Temp2 Temp1 T6 Operand 90 00 T10 CU T7 T4 2AH IR T5 제어신호 Decoder (명령어 해석기) MBR(2AH) T8 T11 37H Acc T12 Slide 11 (of 29)

  12. 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 레지스터로 전송) (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 execution cycle Slide 12 (of 29)

  13. 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)

  14. Addressing Mode • Immediate Addressing Mode 메모리로부터 즉치(숫자)를 Register에 전송하는 주소지정방식을 즉치 주소지정 방식(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 Acc 25 Slide 14 (of 29)

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

  16. 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 H L 20 15 25H Slide 16 (of 29)

  17. 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) ex) LD A,(9000H) (A ← (9000H) : 9000H 번지의 내용을 직접 A에 Load하는 명령어 3A , 00, 90 OP-code Operand Acc 56 직접 전송 Slide 17 (of 29)

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

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

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

  21. 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 Acc 47 B 직접 Load 47 Slide 21 (of 29)

  22. 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 로 전송하는 명령어) 7E OP-code Acc 47 H L 90 00 간접 로드 16비트 주소 생성 Slide 22 (of 29)

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

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

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

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

  27. 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 + 03H) ( A ←(IX+03H) : IX레지스터 내용에 변위 3H를 가산하여 유효주소를 만들어 유효주소의 내용을 Acc로 전송하는 명렬어) DD, 7E, 03 OP-code Operand(변위) Acc 78 IX ⊕ 8100 8103(effective address) = 8100(IX) + 03(변위) Slide 27 (of 29)

  28. Addressing Mode • Modified Page Zero Addressing Mode Zero page는 0000 번지부터 00FF 번지까지 256번지를 말한다. Zero page내에 특정한 벡터를 구성하여 주소를 지정하는 방식이다. 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 벡터번지로 가서 명령어를 실행하는 명령어) Memory Zero page D7 ① RST 10 OP-code ②벡터 구성 JP 2000H (2000H로 점프) ③특정한 부프로그램 실행 Slide 28 (of 29)

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

More Related