ALU 명령어
ALU 명령어들은 모두 기계어로 해석될 때, 0번째 비트가 1이다.
ADD RA, RB | RA와 RB를 더해서 RB에 연산 결과를 넣기 |
SHR RA, RB | RA를 오른쪽 시프트한 후 결과를 RB에 넣기 |
SHL RA, RB | RA를 왼쪽 방향으로 시프트하고 결과를 RB에 넣기 |
NOT RA, RB | RA를 NOT 연산하고 결과를 RB에 넣기 |
AND RA, RB | RA와 RB를 AND 연산하고 결과를 RB에 넣기 |
OR RA, RB | RA와 RB를 OR 연산하고 결과를 RB에 넣기 |
XOR RA, RB | RA와 RB를 XOR 연산하고 결과를 RB에 넣기 |
CMP RA, RB | RA와 RB를 비교하고 결과를 RB에 넣기 |
로드/저장 명령어
로드 명령어: 램에 들어 있는 바이트 데이터를 레지스터로 이동할 때 사용한다. (기계어코드 0000)
저장 명령어: 레지스터에 들어 있는 바이트 데이터를 램으로 이동할 때 사용한다. (기계어코드 0001)
LD RA, RB | RA가 가리키는 램의 주소에 들어 있는 데이터를 RB로 로드 |
ST RA, RB | RB에 들어 있는 데이터를 RA가 가리키는 램의 주소에 저장 |
데이터 명령어
램의 어떤 주소에서 바이트 데이터를 하나 가져와서 레지스터에 로드하는 역할인데, 이렇게만 보면 로드 명령어와 차이점이 없어 보인다. 그러나 로드 명령어와 크게 다른 점은 데이터 명령어로 바이트 데이터를 가져오기 위해 지정하는 램의 주소는 로드 명령어에서 지정하는 주소와 다른 공간을 사용한다는 사실이다. (기계어코드 0010)
DATA RB, xxxx xxxx | RB에 8비트 데이터 로드 |
레지스터 분기 명령어
특정 레지스터에 들어 있는 내용을 IAR로 옮기는 역할을 한다. (기계어코드 0011)
JMPR RB | RB에 들어 있는 램의 주소로 분기 |
직접 분기 명령어
어떤 명령어를 실행하고 싶을 때 그 명령어가 있는 램의 번지수를 알고 있을 때 유용하다. (기계어 코드 0100)
JMP Addr | 특정 램 주소로 직접 분기 |
단일 조건 분기 명령어
조건(플래그)에 맞으면 분기한다. (기계어코드 0101)
JC Addr | 자리 올림이 발생하면 분기 |
JA Addr | A>B이면 분기 |
AE Addr | A=B이면 분기 |
JZ Addr | 결과가 0이면 분기 |
J(Jump): 분기
C(Carry): 올림
A: A가 더 큼
E(Equal): 같음
Z(Zero): 연산결과가 0
복합 조건 분기 명령어
단일 조건 분기 명령어 들을 복합적으로 엮은 명령어 들이다. (기계어코드 0101)
플래그 레지스터 초기화 명령어
(기계어코드 0110)
CLF | Flags의 모든 플래그 비트를 0으로 초기화 |
'컴퓨터 공학 > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] 클록(Clock; Clk) 내부구조 (0) | 2021.12.02 |
---|---|
[컴퓨터구조] ALU 내부 구조 (0) | 2021.12.02 |
[컴퓨터구조] CISC VS RISC (0) | 2021.10.19 |
[컴퓨터구조] 폰 노이만 아키텍처란? (0) | 2021.10.17 |
[논리회로] 가산기 (0) | 2021.10.16 |