컴퓨터 명령어는 연산 코드(opcode)와 오퍼랜드(operand)로 구성됩니다.
• 연산 코드(opcode): 수행할 작업(예: 더하기, 빼기, 곱하기 등)을 정의하는 부분입니다.
• 오퍼랜드(operand): 연산에 필요한 데이터나 데이터의 위치(메모리 주소, 레지스터 등)를 나타내는 부분입니다.
기억 장소에 따른 명령어 형식
• 0주소 명령어: 오퍼랜드가 없으며, 연산에 필요한 데이터는 스택과 같은 묵시적인 장소에서 가져옵니다. 예: 스택 기반의 PUSH, POP.
• 1주소 명령어: 하나의 기억 장소(주소)를 사용하는 명령어로, 연산 결과는 주로 누산기(Accumulator) 같은 레지스터에 저장됩니다. 예: LOAD A (A에서 값을 불러옴).
• 2주소 명령어: 두 개의 기억 장소를 지정하며, 하나는 소스, 다른 하나는 목적지입니다. 예: MOV A, B (A에서 값을 가져와 B에 저장).
• 3주소 명령어: 세 개의 기억 장소를 지정할 수 있으며, 두 개는 입력값, 하나는 출력값으로 사용됩니다. 예: ADD A, B, C (A와 B를 더해 C에 저장).
오퍼랜드의 수에 따른 명령어 형식
• 0오퍼랜드 명령어: 오퍼랜드가 필요 없는 명령어로, 주로 제어 명령어에 사용됩니다. 예: RET (리턴).
• 1오퍼랜드 명령어: 하나의 오퍼랜드만 사용하는 명령어입니다. 예: INC A (A의 값을 1 증가).
• 2오퍼랜드 명령어: 두 개의 오퍼랜드를 사용하는 명령어로, 산술 또는 데이터 이동에 많이 사용됩니다. 예: ADD A, B (A와 B를 더해 A에 저장).
• 3오퍼랜드 명령어: 세 개의 오퍼랜드를 사용하는 명령어로, 예를 들어 두 개의 입력을 더한 결과를 별도의 출력 장소에 저장하는 경우에 사용됩니다. 예: MUL A, B, C (A와 B를 곱해 C에 저장).
이렇게 명령어는 오퍼랜드의 수나 기억 장소에 따라 다양한 형식으로 구분되며, CPU 아키텍처에 따라 명령어 집합이 결정됩니다.
명령어는 다양한 연산을 수행하는 데 사용되며, 아래는 대표적인 명령어와 그 사용 예시입니다.
ADD (더하기)
• 사용법: ADD A, B
• 설명: A와 B의 값을 더한 후, 그 결과를 A에 저장.
• 예시:
A = 3, B = 5
ADD A, B // A = A + B = 8
SUB (빼기)
• 사용법: SUB A, B
• 설명: A에서 B의 값을 뺀 후, 그 결과를 A에 저장.
• 예시:
A = 10, B = 4
SUB A, B // A = A - B = 6
MUL (곱하기)
• 사용법: MUL A, B
• 설명: A와 B의 값을 곱한 후, 그 결과를 A에 저장.
• 예시:
A = 6, B = 7
MUL A, B // A = A * B = 42
DIV (나누기)
• 사용법: DIV A, B
• 설명: A를 B로 나눈 결과를 A에 저장.
• 예시:
A = 20, B = 4
DIV A, B // A = A / B = 5
MOV (데이터 이동)
• 사용법: MOV A, B
• 설명: B의 값을 A에 복사.
• 예시:
A = 0, B = 15
MOV A, B // A = 15
INC (증가)
• 사용법: INC A
• 설명: A의 값을 1 증가.
• 예시:
A = 9
INC A // A = 10
DEC (감소)
• 사용법: DEC A
• 설명: A의 값을 1 감소.
• 예시:
A = 5
DEC A // A = 4
CMP (비교)
• 사용법: CMP A, B
• 설명: A와 B를 비교하고 결과에 따라 플래그를 설정 (결과는 A - B의 결과로 설정됨).
• 예시:
A = 10, B = 10
CMP A, B // 결과는 0 (A와 B가 같음)
JMP (무조건 점프)
• 사용법: JMP LABEL
• 설명: LABEL로 무조건 점프.
• 예시:
JMP LOOP
JZ (조건부 점프 - Zero)
• 사용법: JZ LABEL
• 설명: 이전 명령어가 결과적으로 0일 때 LABEL로 점프.
• 예시:
CMP A, B
JZ EQUAL_LABEL // A == B이면 EQUAL_LABEL로 점프
이러한 명령어들은 CPU의 동작을 제어하는 중요한 도구입니다. 산술 연산뿐 아니라, 데이터 이동, 조건부 분기 등 다양한 기능을 수행할 수 있습니다.