자격증

정보처리기능사 - 4. 명령어 및 제어

Beekei 2025. 3. 15. 23:40
반응형

명령어

명령어의 구성

명령어 = 연산자부(OP-Code: Operation Code) + 자료부(Operand)

연산자부(명령코드 부, OP-Code: Operation Code) 

수행해야 할 동작에 맞는 연산자를 표시(명령어 형식, 동작코드, 데이터의 종류 등)

nBit일 때 최대 2n개의 명령어 사용 가능

기능에는 함수 연산, 자료 전달, 제어, 입출력 기능이 존재

함수 연산 기능

산술 연산과 비수치적인 논리 연산 존재

  • 산술 연산: ADD, SUB, MUL, DIV, 산술 Shift 등
  • 논리 연산: NOT, AND, OR, XOR, 논리적 Shift, Rotate, Complement, Clear 등

※ 피연산자 수에 따른 연산자의 분류

  • 단항 연산자: 피연산자가 1개만 필요한 연산자(NOT, Shift, Rotate, Move 등)
  • 이항 연산자: 피연산자가 2개 필요한 연산자(사칙연산, AND, OR, XOR, XNOR 등)

자료 전달 기능

CPU와 기억장치 사이에서 정보를 교환

  • Load: 기억장치에 기억되어 있는 정보를 CPU로 가져오는 명령
  • Store: CPU에 있는 정보를 기억장치에 기억시키는 명령

제어 기능

명령의 실행 순서를 변경시킬 때 사용

  • 무조건 분기 명령: GOTO, Jump(JMP) 등
  • 조건 분기 명령: IF 조건

입출력기능

CPU 또는 메모리와 I/O 장치 사이에 자료 전달


연산

AND(Masking Operation)

특정 문자 또는 특정 비트를 삭제(Clear) 시키는 연산(Masking 연산)

삭제할 부분의 비트를 0과 AND 연산시켜 삭제

  • ex) 01101101 AND 11010111 = 01000101(※ Mask Bit: 대응시키는 0인 비트)

OR(Selective-Set)

특정 문자를 삽입하거나 특정 비트에 1을 세트 시키는 연산

삽입하거나 세트 시킬 비트에 삽입할 문자 또는 1을 OR 연산

  • ex) 10011000 OR 01000010 = 11011010

XOR(Compare, 비교)

두 개의 데이터를 비교하거나 특정 비트를 반전시킬 때 사용

반전시킬 비트와 1을 XOR 연산, XOR 연산 결과에 1Bit라도 1이 있다면 서로 다른 데이터를 의미

  • ex) 10001001 XOR 00001111 = 10000110

NOT(Complement, 보수)

각 비트의 값을 반전시키는 연산, 보수를 구할 때 사용

  • ex) 10001001 NOT = 01110110

논리 Shift

왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 연산, 이동한 후 비어있는 비트에는 0 삽입

데이터 직렬 전송(Serial Transfer)에 사용

Shift Left Logical / Shift Right Logical

Rotate

Shift 연산에서 밀려나서 삭제되는 비트의 값을 반대편으로 입력하는 연산

문자 위치를 변환할 때 사용

Left Rotate / Right Rotate

Move

레지스터에 기억된 자료를 그대로 다른 레지스터로 옮길 때 사용

 

💡 외우기
AND -> 삭제
OR -> 삽입, Set
XOR -> 비교, 반전
NOT -> 보수
Shift -> 1Bit씩 이동, 0 삽입
Rotate -> 1Bit씩 이동, 삭제된 비트 삽입
Move -> 레지스터 이동

 


명령어 형식

3주소 명령어(3 Address Instruction)

OP-Code부(명령부)와 Operand부(자료부)가 3개로 구성

연산 후 입력 자료가 변하지 않고 보존, 명령어 한 개의 길이가 길어짐

여러 개의 범용 레지스터(GPR)를 가진 컴퓨터에서 사용

3 Address Instruction = OP-Code + Operand1 + Operand2 + Operand3

2주소 명령어(2 Address Instruction)

OP-Code부(명령부)와 Operand부(자료부)가 2개로 구성

연산 결과가 Operand1에 저장되므로 Operand1에 저장되어 있던 원래의 자료는 파괴

가장 일반적으로 널리 사용되며 여러 개의 범용 레지스터(GPR)를 가진 컴퓨터에서 사용

2 Address Instruction = OP-Code + Operand1 + Operand2

1주소 명령어(1 Address Instruction)

OP-Code부(명령부)와 Operand부(자료부)가 1개로 구성

연산 결과를 누산기(AC: Accumulator)에 저장

1 Address Instruction = OP-Code + Operand1

0주소 명령어(0 Address Instruction)

Operand부(자료부) 없이 OP-Code부만으로 구성

주소의 사용 없이 스택(Stack)을 사용해 연산, 스택을 사용하기 때문에 원래의 자료는 남지 않음

※ Stack 명령어 - Push : 자료 삽입, Pop: 자료 삭제

0 Address Instruction = OP-Code

주소지정방식

접근 방식에 따른 분류

암시적 주소지정방식(Implied Mode)

주소(번지)를 지정하지 않고 0주소 명령어(0 Address Instruction)에서 Stack의 Top 포인터가 가리키는 Operand를 암시하여 이용

즉치(즉시)적 주소지정방식(Immediate Mode)

Operand에 주소(번지) 대신 즉시 사용할 수 있는 자료를 지정한 방식

메모리를 참조하지 않아 실행 속도가 빠름

즉치(즉시)적 주소지정방식(Immediate Mode)

직접 주소지정방식(Direct Mode)

Operand에 자료가 기억된 주소(번지)를 지정한 방식

메모리를 1번 참조

직접 주소지정방식(Direct Mode)

간접 주소지정방식(Indirect Mode)

Operand에 자료가 기억된 주소(번지)를 가지고 있는 메모리 주소(번지)를 지정한 방식

메모리를 2번 참조하므로 실행 속도가 느림

간접 주소지정방식(Indirect Mode)

 

계산에 의한 주소지정방식

Operand부(주소부) + CPU의 특정 레지스터로 유효 주소를 계산하는 방식(주소 일부분을 생략하는 약식주소)

상대 주소(Relative Mode)

유효 주소: Operand + PC(Program Counter)

자신의 기억장소를 기준으로 상대적으로 데이터 위치를 지정하는 방식

베이스 레지스터(Base Register Mode)

유효 주소: Operand + Base Register

프로그램 재배치(Relocation)할 때 이용

인덱스 레지스터(Index Register, 색인 주소지정방식)

유효 주소: Operand + Index Register

2개의 레지스터를 사용하며, 순차적인 주소 지정에 유리

 

실제 기억공간 주소에 따른 구분

주소를 실제 기억공간과 연관시키는 방법

절대 주소(Absolute Address)

실제 주소로 기억장치의 맨 처음부터 1Byte마다 순서대로 16진수의 번호가 차례대로 지정

상대 주소(Relative Address)

기준주소를 기준으로 하여 상대적으로 얼마만큼 떨어져 있는지 변위(Displacement: Offset)로 표현하는 주소

절대 주소로 변환해야만 실제 데이터에 접근 가능

반응형