Total
Search
1. 컴퓨터 명령어의 개요
•
컴퓨터 명령어의 필요성
•
컴퓨터 명령어 (instruction)
◦
컴퓨터가 수행해야하는 일을 나타내기 위한 비트의 집합
◦
일정한 형식을 가짐
•
명령어 집합 (instruction set)
◦
컴퓨터에서 사용할 수 있는 명령어의 세트
◦
모든 컴퓨터는 자신의 명령어 집합을 가지고 있음
◦
명령어 집합은 그 컴퓨터의 구조적인 특성을 나타내는 가장 중요한 정보
◦
동일 계열의 컴퓨터는 같은 명령어 집합이 사용
◦
따라서 명령어 집합을 이용하여 컴퓨터 시스템의 구조를 살펴 볼 수 있음
2. 명령어의 구성
•
필드(field) 라는 비트그룹으로 이루어짐
◦
연산코드와 오퍼랜드 필드로 구성
▪
연산코드 필드: 처리해야할 연산의 종류
▪
오퍼랜드 필드: 처리할 대상 데이터 또는 데이터의 주소
•
컴퓨터 명령어의 수행 기능
◦
함수연산 기능
▪
덧셈, 시프트, 보수 등의 산술연산과 AND, OR, NOT 등의 논리연산 수행 기능
◦
정보전달 기능
▪
레지스터들 사이의 정보 전달기능과 중앙처리장치와 주기억장치 사이의 정보전달 기능
◦
순서제어 기능
▪
조건 분기와 무조건 분기 등을 통해 명령어의 수행순서를 제어하는 기능
◦
입출력 기능
▪
주 기억장치와 입출력 장치 사이의 정보 이동 기능
3. 명령어의 형식
•
명령어 형식
◦
명령어를 구성하는 필드들의 수와 배치 방식 및 각 필드들의 비트수를 말한다.
◦
명령어는 컴퓨터의 내부구조에 따라 여러 가지 형식이 있음
•
명령어 형식의 분류
◦
오퍼랜드의 기억장소에 따른 명령어 형식
◦
오퍼랜드의 수에 따른 명령어 형식
4. 기억장소에 따른 명령어 형식
•
명령어 형식의 분류
◦
오퍼랜드의 기억장소에 따른 명령어 형식
◦
오퍼랜드의 수에 따른 명령어 형식
•
오퍼랜드가 기억 되는 장소에따라
1.
누산기를 이용하는 명령어 형식
2.
다중레지스터를 이용하는 명령어 형식
3.
스택 구조를 이용하는 명령어 형식
4.1. 누산기를 이용하는 명령어 형식
•
누산기를 가진 컴퓨터 구조에서 사용되는 형식
◦
누산기
▪
누산기를 가진 컴퓨터 구조에서 중앙처리장치에 있는 유일한 데이터 레지스터로서 명령어가 수행될 때 오퍼랜드를 기억시키는 레지스터
◦
예시)
4.2. 다중 레지스터를 이용하는 명령어 형식
•
다중 레지스터를 가진 컴퓨터 구조는 중앙처리장치 내에 여러 개의 레지스터를 가지고 있는 컴퓨터이다.
•
예시)
4.3. 스택 구조를 이용하는 명령어 형식
•
스택 구조 컴퓨터는 연산에 필요한 오퍼랜드들을 기억장치 스택에 기억시켜야 하고, 연산의 결과도 스택에 기억시키는 구조이다.
•
예시)
5. 오퍼랜드 수에 따른 명령어 형식
5.1. 3-주소 명령어
•
명령어 오퍼랜드의 개수가 3개인 명령어 형식
•
예시)
•
장점
◦
산술식을 프로그램화하는데 있어서 프로그램의 길이가 짧아짐
•
단점
◦
3-주소명령어를 2진 코드화했을때 3개의 오퍼랜를 나타내기위한 비트수가 다른 주소 명령어 형식보다 많이 필요함
5.2. 2-주소 명령어
•
오퍼랜드의 개수가 2개인 명령어 형식
•
상업용 컴퓨터에서 가장 많이 사용
•
예시)
•
장점
◦
3-주소 명령어에 비해 명령어 길이는 짧아짐
•
단점
◦
같은 내용을 수행하기 위해 수행해야 하는 명령어의 수는 증가됨
5.3. 1-주소 명령어
•
오퍼랜드의 개수가 1개인 명령어 형식
•
기억장치로부터 오퍼랜드를 가져오거나 연산결과를 저장하기 위한 임시적인 장소로 누산기 레지스터를 사용함
6. 주소지정방식
•
명령어 주소지정 방식(addressing mode)
◦
프로그램 수행 시 오퍼랜드를 지정하는 방식
◦
명령어의 주소 필드를 변경하거나 해석하는 규칙을 지정하는 형식
◦
주소지정방식을 사용하면 명령어의 수를 줄일 수 있는 효과적인 프로그래밍 사용
•
유효 주소
◦
주소지정방식의 각 규칙에 의해 정해지는 오퍼랜드의 실제 주소
•
별도의 주소지정방식 필드를 가진 명령어 형식
◦
연산코드 필드 (opcode)
▪
수행할 연산의 종류 지정
◦
주소지정방식 필드
▪
연산에 필요한 오퍼랜드의 주소를 알아내는데 사용
◦
주소 혹은 오퍼랜드 필드 (operand)
▪
기억장치주소 혹은 레지스터
•
주소지정방식의 종류
◦
의미 주소지정방식
◦
즉치 주소지정방식
◦
직접 주소지정방식
◦
간접 주소지정방식
◦
레지스터 주소지정방식
◦
레지스터 간접 주소지정방식
◦
상대 주소지정방식
◦
인덱스된 주소지정방식
6.1. 의미 주소지정
•
명령어형식에서주소필드를필요로하지않는방식
•
연산코드 필드에 지정된 묵시적 의미의 오퍼랜드를 지정
•
예) ADD ; TOS ← TOS + TOS-1
◦
기억장치스택에서 ADD와 같은명령어는 스택의맨위항목과 그 아래 항목을 더하여 스택의 맨 위에 저장하는 명령어로서, 오퍼랜드가 스택의 맨 위에 있다는 것을 묵시적으로 가정함
6.2. 즉치 주소지정
•
명령어 자체 내에 오퍼랜드를 지정하고 있는 방식
•
오퍼랜드 필드의 내용이 실제 사용될 데이터
•
레지스터나 변수의 초기화에 유용
•
예) LDI 100,R1 ; R1 ←100
6.3. 직접 주소지정과 간접 주소지정
•
직접 주소지정방식
◦
명령어의 주소필드에 직접 오퍼랜드의 주소를 저장시키는 방식
◦
기억장치에의 접근이 한번에 이루어짐
◦
예) LDA ADRS ; AC ← M[ADRS]
•
간접 주소지정방식
◦
명령어의 주소필드에 유효주소가 저장되어있는 기억장치 주소를 기억시키는 방식
◦
예) LDA [ADRS] ; AC←M[M[ADRS]]
6.4. 레지스터 주소지정과 레지스터 간접주소지정
•
레지스터 주소지정방식 (register mode)
◦
오퍼랜드 필드에 레지스터가 기억되는 방식
◦
레지스터에 오퍼랜드가 들어있음 (유효주소가 없음)
◦
예) LDA R1 ; AC←R1
•
레지스터 간접 주소지정방식(register-indirect mode)
◦
레지스터가 실제 오퍼랜드가 저장된 기억장치의 주소 값을 갖고 있는 방식
◦
예) LDA (R1) ; AC ← M[R1]
6.5. 상대 주소지정
•
상대 주소지정방식(relative addressing mode)
•
유효주소를 계산하기 위해 처리장치 내에 있는 특정 레지스터의 내용에 명령어 주소필드 값을 더하는 방식
•
특정 레지스터로 프로그램 카운터(PC)가 주로 사용
•
예)
◦
LDA $ADRS ; AC←M[ADRS+PC]
◦
유효주소 =명령어 주소 부분의 내용 + PC의 내용
6.6. 인덱스된 주소지정
•
인덱스 레지스터의 내용을 명령어 주소 부분에 더해서 유효주소를 얻는 방식
•
예)
◦
LDA ADRS(R1) ; AC←M[ADRS+R1]
◦
유효주소 = 명령어 주소부분의 내용 + 인덱스 레지스터의 내용
6.7. 주소지정방식의 요약
•
요약
◦
연산코드
▪
LDA - AC (누산기에 값을 적재하라)
◦
PC: 250
▪
시작주소가 250이라는 의미
▪
250번지에 연산코드는 LDA, 주소지정방식(#NBR: 즉치주소)
7. 명령어의 종류
7.1. 데이터 전송 명령어
•
한 장소에서 다른 장소로 단지 데이터를 전송하는 명령어
•
레지스터와 레지스터 사이, 레지스터와 기억장치 사이, 또는 기억장치와 기억장치 사이에 데이터를 이동하는 기능
•
입출력 명령어가 포함
7.2. 데이터 처리 명령어
•
데이터에 대한 연산을 실행하고 컴퓨터에 계산능력을 제공
•
산술 명령어
•
논리와 비트 처리 명령어
◦
레지스터나 기억장치에 저장된 단어에 대한 2진 연산
◦
주로 2진 부호화 정보를 표현하는 비트 그룹이나 개별 비트를 처리하는데 사용
◦
비트 값을 0으로 만들거나, 기억장치 레지스터에 저장된 오퍼랜드에 새로운 비트 값을 삽입하는 것 등이 가능
•
시프트 명령어
◦
오퍼랜드의 비트를 왼쪽이나 오른쪽으로 이동시키는 명령어
◦
논리적 시프트와 산술적 시프트, 회전형 시프트 연산 등이 있음
7.3. 프로그램 제어 명령어
•
프로그램 수행의 흐름을 제어
•
다른 프로그램의 세그먼트 (segment)로 분기