2018년 11월 26일
명령어 형식과 주소 지정 방식 (Addressing Mode)
I. CPU 메모리 참조 방식, 명령어 형식과 주소 지정 방식
개념도 | 개념 |
---|---|
– 프로그램 수행을 위해 연산에 사용되는 명령어의 구조와 데이터가 기억장치의 주소를 지정하는 방식 |
– Instruction은 OPCode와 Operand 주소로 이루어져 있으며, 주소 지정 방식에 따라 기억장치를 참조
II. 명령어 형식의 분류 및 상세 설명
가. 명령어 형식의 분류
나. 명령어 형식의 상세 설명
형식 | 상세 설명 | 사례 |
---|---|---|
0-주소 명령어 | – 연산 코드만 존재 – 스택 구조 | PUSH, POP 연산 |
1-주소 명령어 | – 오퍼랜드를 한 개만 포함 – 하나의 연산 대상은 누산기(AC)에 있고 나머지 주소로 연산 대상 지정 – 단일 누산기 구조 | LOAD X ; AC ← M[X] |
2-주소 명령어 | – 오퍼랜드가 2개인 연산 – 대상 주소 모두 저장 – 연산 결과는 OP1에 저장 – 범용 레지스터 구조 | MOV X, Y; M[X] ← M[Y] |
3-주소 명령어 | – 오퍼랜드가 3개인 연산 – 연산대상 모두 결과 저장 – 범용 레지스터 구조 | ADD X, Y, Z; M[X] ← M[Y] + M[Z] |
III. 주소 지정 방식의 유형
방식 | 지정 방식 설명 | 개념도 |
---|---|---|
묵시 주소 | – 위치가 묵시적으로 포함 – 스택 구조 시 항상 Top 예) ADD | Instruction |
즉치 주소 | – 명령어에 직접 포함 (명령어를 연산에 사용) 예) ADD R4, #3 | |
직접 주소 | – 연산에 사용될 데이터가 기억장치의 유효 주소 – 오퍼랜드 < 데이터 크기 예) ADD R1, (0x1001) | |
레지스터 | – 연산에 사용될 데이터가 내부 레지스터에 저장 예) ADD R4, R3 | |
간접 주소 | – 오퍼랜드 기억장치 주소의 데이터는 실제 데이터 주소를 지정 예) ADD R4, @(R1) | |
레지스터 간접 주소 | – 오퍼랜드에서 지정하는 레지스터는 실제 저장되어 있는 메모리 주소 예) ADD R4, (R1) | |
변위 주소 | – 오퍼랜드 필드를 직접 주소와 오프셋으로 구성 – 메모리 사용 효과적이나 변위 추가 작업 필요 예) EA = A + (PC) |
[참고] 주소 지정 방식 표기법
주소 지정 방식 | 표기법 |
---|---|
즉치 주소 방식 | – |
묵시적 주소 방식 | – |
직접 주소 방식 | EA = A |
간접 주소 방식 | EA = (A) |
레지스터 주소 방식 | EA = R |
레지스터 간접 주소 방식 | EA = (R) |
변위 주소 방식 | EA = A + (R) |
– EA: 유효 주소(Effective Address): 데이터가 저장된 기억장치 실제 주소 – A: 명령어 내의 주소 필드 내용 (오퍼랜드 필드가 기억장치의 주소인 경우) – R: 명령어 내의 레지스터 번호 (오퍼랜드 필드가 레지스터 번호인 경우) – (A): 기억장치 A 번지의 내용 – (R): 기억장치 R의 내용 |
One Comment
설명이 깔끔하네요 감사합니다.