포털:고등학교/정보·통신 계열 전문 교과(2015)/컴퓨터 구조/명령어
보이기
1. 명령어의 개념
명령어(Instruction): 컴퓨터에게 어떤 일을 어떻게 수행해야 하는지를 나타내는 비트들의 집합
*비트: 정보 표현의 최소 단위
명령어의 목적
- 컴퓨터가 실행해야 할 작업 표시
- 작업에 필요한 일련의 동작이나 자료들을 나타냄
프로그램(Program): 어떤 일을 처리하기 위하여 컴퓨터가 실행해야할 명령어들
- 프로그램과 데이터가 주기억 장치에 연속적으로 위치하며, 이들은 중앙처리 장치에 의해 순차적으로 하나씩 실행됨
명령어의 종류
1) 데이터 처리 명령어
- 산술연산, 논리연산, 비트 처리 명령 및 워드의 비트를 이동시킬 때 사용
ex) 시프트 명령어
*워드(Word): 컴퓨터 내부에서 취급되는 정보단위. 보통 하나의 명령 또는 하나의 수치가 1워드에 상당한다.
1워드의 크기는 각각의 컴퓨터에 정해져 있으며, 8비트, 16비트, 32비트 등 여러가지 길이가 있다.
2) 데이터 전송 명령어
- 내용 변경 없이 다른 장소로 데이터를 이동시킬 때 사용
3) 프로그램 제어 명령어
- 프로그램 카운터의 값을 변경할 수 있는 제어 기능을 가진 명령어
ex) 분기, 서브 루틴 명령어
2. 명령어의 형식
| 모드 | 피연산자의 주소가 직접 주소인지 간접 주소인지를 구분한다. |
| 명령 코드부 | 실행할 동작을 지시한다. |
| 주소부 | 피연산자가 저장된 주기억 장치의 주소를 나타낸다. |
- 직접 주소: 가장 일반적인 주소 지정 방식, 기억 장소를 주소부에 직접 지정할 수 있게 되는 것
- 간접 주소: 컴퓨터의 명령의 주소 부분이 처리 대상의 데이터가 저장되어 있는 주소를 직접 나타내지 않고, 이 주소를 저장하고 있는 기억 장소의 주소를 저장한 것
명령 코드의 기능: 명령 코드(op code) 필드에서는 수행할 연산의 종류를 나타내며, 기능별로 다음과 같이 분류한다
| 함수 연산 기능 | 함수 연산에는 산술적 연산과 논리적 연산을 포함한다.
산술적 연산의 기본은 덧셈, 시프트, 보수이다. 논리적 연산의 기본은 AND, OR, NOT등의 조합이다. 범용 컴퓨터에는 기본적인 연산자 이외에 많은 함수 연산자들을 포함하여 응용 분야에 사용할 수 있도록 하고 있다. |
| 전달 기능 | 중앙 처리 장치와 주기억 장치 사이의 데이터 전송 기능과 레지스터 사이의 데이터 교환을 진행한다.
주기억 장치에서 데이터를 읽어 중앙 처리 장치로 가져오는 것을 적재(Load) 혹인 인출(Fetch)라고 한다. 중앙 처리 장치의 데이터를 주기억 장치에 기억시키는 것을 저장(Store)이라고 한다. |
| 제어 기능 | 명령 순서의 변경 혹은 프로그램의 실행 순서를 배열된 명령들의 순서와 다르게 수행할 수 있는 기능으로 조건 분기와 무조건 분기가 있다. |
| 입, 출력 기능 | 주기억 장치와 입, 출력 장치 사이의 데이터 이동 기능이다. |
기본적인 컴퓨터 명령어
| 기능 | 명령 | 의미 |
|---|---|---|
| 함수 연산 | ADD X | AC ← AC + M(X) |
| AND X | AC ← AC ^ M(X) | |
| CPA | AC ← AC | |
| CPC | C ← C(C는 carry) | |
| CLA | AC ← 0(clear) | |
| CLC | C ← 0(올림수를 clear) | |
| ROL | C와 AC를 1비트 좌측 시프트 | |
| ROR | C와 AC를 1비트 우측 시프트 | |
| 전달 | LDA X | AC ← M(X) |
| STA X | M(X) ← AC | |
| JMP X | PC ← X | |
| 제어 | SPA | if(AC > 0) then PC ← PC + 1 |
| SMA | if(AC < 0) then PC ← PC + 1 | |
| SZA | if(AC = ) then PC ← PC +1 | |
| SZC | if(C = 0) then PC ← PC + 1 | |
| INC X | M(X) ← M(X) + 1 | |
| IAC | AC ← AC + 1 | |
| CMA | AC ← (AC)’ 보수 | |
| 입출력 | IMP X | AC ← 입력 장치 X |
| OUT X | 출력 장치 X ← AC |
주소부의 주소 수에 따른 분류
1) 0-주소 명령어 형식
- 스택(Stack) 구조 컴퓨터에서 사용되는 명령어 형식이다
- 입력 자료들의 출처와 연산 결과를 기억시킬 장소가 고정되어 있다
- 명령어 내에서 자료의 주소를 지정할 필요가 없는 명령어 형식이다.
- TOS는 스택의 최상단을 의미한다.
*스택(Stack): 한쪽 끝에서만 삽입과 삭제의 연산이 일어나는 순서 리스트를 말한다.
기억 장치에 데이터를 일시적으로 꺼내어 사용할 수 있게 주기억 장치나 레지스터의 일부를 할당하여 사용하는 임시 기억 장치이다.
2) 1-주소 명령어 형식
- 단일 누산기 구조의 컴퓨터에서 사용된다.
- 명령어의 수행은 누산기(AC) 레지스터에서 이루어진다.
- 하나의 주소부를 가지며, 연산에 사용되는 피연산자는 명령어에 나타난 주소부에 의하여 얻어지는 피연산자와 누산기에 기억되어 있는 피연산자이다.
- 연산 결과도 누산기에 저장되므로 명령어 실행 이전에 기억되어 있던 데이터는 명령어 실행 후에 잃어버린다.
3) 2-주소 명령어 형식
- 범용 레지스터 구조의 컴퓨터에서 사용되며, 가장 많이 사용하는 형식이다.
- 각 주소부는 레지스터나 주기억 장치의 주소를 지정한다.
- 연산 후 입력 자료의 보존이 필요 없으면 연산 결과를 두 개의 입력 자료가 기억되어 있던 곳들 중 한 레지스터에 기억시키는 방식이다.
4) 3-주소 명령어 형식
- 범용 레지스터 구조의 컴퓨터에서 사용되며, 세 개의 주소를 지정한다.
- 각 주소부는 레지스터나 주기억 장치의 주소를 지정한다.
- 프로그램의 길이가 짧고 연산 후에 입력 자료가 레지스터에 보존되는 장점이 있다.
- 하나의 명령을 수행하기 위해서는 자주 기억 장치에 접근해야 하므로 수행 시간이 길어져 특수 목적의 기계 외에는 사용을 하지 않는다.
주소 지정 방식
- 명령어의 명령 코드는 수행할 명령을 표시한다.
- 명령은 레지스터나 주기억 장치의 데이터를 대상으로 수행된다.
- 명령어가 수행되는 동안에 피연산자인 주소를 지정하는 방법은 명령어의 주소 지정 방식에 따라 좌우된다.
명령어 활용 명령어는 명령 코드부, 주소부로 구성되며 이들은 제어장치에서 해독되어 동작 신호로 바뀌게 된다.
명령 코드 해독
- 명령 코드는 입출력이나 연산과 같은 특정 동작을 지시하도록 정해 놓은 신호이다.
ex) 2비트인 명령 코드와 동작 행위를 정할 때 제어 장치에 의하여 해당되는 회로가 동작되도록 하여야 한다.

주소 해독
- 주기억 장치는 바이트나 워드 단위로 일련번호를 부여한 고유 번호로 구별하는데, 이것을 주소(번지)라고 한다.
- 기계적으로 구별할 수 있도록 회로 설계 시에 정해져서 변경할 수 없는 기계적인 번지를 절대 주소(absolute address)라 한다.
- 주소는 MAR에 기억되었다가 주소 해독기에 의해 해독된다.
- 컴퓨터를 설계할 때 제어 장치가 지적할 수 있는 최소의 단위에 따라 워드 단위로 주소를 가리킨 것을 워드 기계, 바이트 단위로 주소를 가리킨 것을 바이트 기계라 한다.
생활속 명령어 이용 사례
우리의 생활을 편리하게 해주는 명령어 이용 사례로는 다음과 같은 것들이 있다.
하지만 생활속 명령어 이용 사례 중 인터넷과 연결하여 이용하는 명령어는 개인의 정보가 새어나가거나 외부에서 침입하지 못하도록 주의를 기울여야 한다.
사용자가 이들을 악용하는것 또한 허락되지 않은 다른 사용자의 개인정보 유출 우려가 있기 때문에 조심해야한다.
실제로 인터넷 검색을 이용하여 구글 드라이브와 같은 웹 하드가 해킹된 사례가 있다.
또한 아래에 나온 예시 외에도 SNS를 이용하면서 계정을 해킹하는 등 많은 해킹이 이루어지고 있다.
따라서 우리는 명령어의 양면성을 인지하고 조심해서 사용해야 할 필요가 있다.
![]() |
![]() |
![]() |

















