1. 명령어
명령어는 연산 코드(Operation Code)와 오퍼 랜드(Operand)로 이루어진다.
연산 코드
수행될 연산을 지정해주며, 비트 수가 증가하면 실행 가능한 연산이 증가한다.
오퍼랜드
연산을 수행하는 데 필요한 데이터 혹은 데이터의 주소, 레지스터 번호 등을 표현한다.
2. 명령어의 분류
오퍼랜드의 수에 따라서 명령어를 분류한다.
0-주소 명령어
- 오퍼랜드 없이 연산자만으로 명령어가 구성
- 스택구조 컴퓨터에서 사용
- 연산속도가 빠르다
- 스택의 PUSH, POP 사용
- 후위표기법 사용
- 주소부가 없지만 무조건 스택을 사용하므로 묵시적 주소라 한다.
1-주소 명렁어
- 모든 데이터 처리가 내장되어있는 누산기(AC)에 의해 이루어짐
- 누산기로 데이터 전달하는 LOAD, 누산기의 데이터를 주기억장치에 저장하는 STORE
2-주소 명령어
- 범용 레지스터 구조에서 사용
- Operand2 주소에서 데이터를 가져와 Operand1 주소에 연산결과를 저장
- Move 명령어 가장 많이 사용
3-주소 명령어
- 범용 레지스터 구조에서 사용
- 프로그램의 길이를 짧게 할 수 있고 연산 후 입력자료 보존
- Operand2, Operand3 주소에서 데이터를 가져와 Operand1 주소에 연산결과를 저장
- 하나의 명령을 수행하기 위해 최소 4번의 기억장치 접근이 필요하므로 수행시간이 길어 잘 사용하지 않음
3. 주소지정 방식
즉시 주소지정 방식
Immediate Addressing Mode
- Operand = 데이터
- 데이터 인출을 위한 주기억장치 접근이 필요없으므로 실행 사이클이 짧아진다.
- Operand 크기에 따라 사용 가능한 데이터의 범위가 정해진다
직접 주소지정 방식
Direct Addressing Mode
- Operand = 유효 주소 -> 데이터
- 한 번의 기억장치 접근 필요
- Operand bit 수에 의해 직접 접근할 수 있는 주소 공간이 제한됨
간접 주소지정 방식
Indirect Addressing Mode
- Operand = 유효 주소의 주소 -> 유효 주소 -> 데이터
- 두 번의 기억장치 접근 필요
- 기억장치 단어 길이가 n비트라면 2n 개의 주소 공간을 가질 수 있음
레지스터 주소지정 방식
Register Addressing Mode
- Operand = 레지스터 번호 -> 데이터
- Operand bit 수에 의해 접근 가능한 레지스터 개수가 정해짐
- 레지스터의 크기가 데이터의 범위를 결정
- 기억장치 접근이 필요 없다
레지스터 간접 주소지정 방식
Register-Indirect Addressing Mode
- Operand = 레지스터 번호 -> 유효주소 -> 데이터
- 주소가 지정될 주기억장치 범위는 레지스터의 비트 수에 의해 결정
변위 주소지정 방식
Displacement Addressing Mode
- Operand = 레지스터 번호 + 변위 -> 유효주소 -> 데이터
1) 상대 주소지정 방식
- PC(Program Counter)에 담긴 주소와 Operand에 저장된 변위를 더해 유효주소 결정
- 변위 = PC에 저장된 주소를 기준으로 한 상대적인 값
2) 인덱스 주소지정 방식
- Operand = 데이터 배열의 시작 주소
- 인덱스 레지스터(IX) = 인덱스 값을 저장하는 레지스터