7 장 마이크로프로세서의 명령어수행과 주소지정 방식
Post on 05-Jan-2016
67 Views
Preview:
DESCRIPTION
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