1. 레지스터란?

- CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치

- 메모리로 연산의 결과를 보내고 영구적으로 저장할 데이터를 하드디스크에 저장하는 등의 명령 처리

- 연산 속도가 메모리보다 훨씬 빠르며 특정 주소를 가리키거나 값을 읽어올 수 있음

- 컴퓨터의 bit가 클수록 처리속도가 빠름

- 어셈블리에서 레지스터란 CPU가 사용하는 변수를 의미

 

 

2. 레지스터의 종류

1) 범용 레지스터 (General Purpose Register)

 

- 작은 데이터의 임시 저장 공간

- 연산 처리 및 번지 지정을 도와주며 컴퓨터의 장치를 제어함

 

종류 특징
EAX
(Accumulator)
  - 누산기 레지스터로 입출력, 산술연산, 논리연산을 수행
  - 함수의 리턴 값 저장
  - AX는 EAX의 오른쪽 16비트 부분
  - AH는 AX의 왼쪽 8비트 상위부분, AL은 AX의 오른쪽 8비트 하위부분
EBX
(Base address)
  - 주소 지정을 확장하기 위해 인덱스로서 사용하는 레지스터
  - BX는 EBX의 오른쪽 16비트 부분
  - BH는 BX의 왼쪽 8비트 상위부분, BL은 BX의 오른쪽 8비트 하위부분
ECX
(Counter)
  - 반복문을 수행할 때 반복 횟수를 지정하는데 사용
  - CX는 ECX의 오른쪽 16비트 부분
  - CH는 CX의 왼쪽 8비트 상위부분, CL은 CX의 오른쪽 8비트 하위부분
EDX
(Data)
  - 큰 수의 산술연산, 논리연산을 할 때 EAX의 보조적 역할로 사용
  - EAX 레지스터와 같이 쓰임
  - 부호 확장 명령 등에 사용
  - DX는 EDX의 오른쪽 16비트 부분
  - DH는 DX의 왼쪽 8비트 상위부분, DL은 DX의 오른쪽 8비트 하위부분

 

2) 포인터 레지스터 (Pointer Register)

 

- 메모리 스택 영역과 관련된 주소 값을 나타냄

 

종류 특징
ESP (Extended Stack Pointer)   - 스택 영역의 최상단을 가리킴
EBP (Extended Base Pointer)   - 스택 영역의 기준이 되는 주소를 가리킴
EIP (Extended Instruction Pointer)   - 다음 실행할 명령이 들어 있는 메모리의 주소를 가리킴

 

3) 인덱스 레지스터 (Index Register)

 

- 문자열을 복사/비교

- 인덱스 주소지정과 덧셈, 뺄셈에서 사용 가능

 

종류 특징
ESI (Extended Source Index)   - 복사/비교의 대상의 주소를 가리킴
EDI (Extended Destination Index)   - 복사/비교를 할 곳의 주소를 가리킴

 

4) 세그먼트 레지스터 (Segment Register)

 

- 다양한 크기로 구분을 하는 목적으로 사용

- 16비트로 구성

 

종류 특징
CS (Code Segment)   - 함수와 제어문 같은 명령어들이 저장되는 코드 세그먼트
DS (Data Segment)   - 전역, 정적 변수 데이터가 들어있는 데이터 세그먼트
SS (Stack Segment)   - 주소와 데이터를 일시적으로 저장할 목적으로 쓰이는 세그먼트
  - 스택의 주소를 지정하는데 사용
ES (Extra Segment)   - 추가 레지스터로 문자 데이터의 주소를 지정하는데 사용

 

5) 플래그 레지스터 (Extended Flags Register)

 

- 실행 순서를 제어하기 위한 목적으로 사용

- 플래그를 1로 설정하는 것을 SET, 0으로 설정하는 것을 CLEAR 또는 RESET이라고 함

 

종류 특징
상태플래그 CF (Carry Flag)   - 산술 연산 후 상위 비트의 캐리를 포함
  - 자리이동 또는 회전연산 후 마지막의 비트내용을 포함
PF (Parity Flag)   - 연산 결과 1비트들의 개수에 따라 짝수 패리티와 홀수 패리티로 나타냄
OF (Overflow Flag)   - 산술 연산 후 상위비트의 오버플로우를 나타냄
AF (Auxiliary Flag)   - 특수화된 산술에서 사용
  - 비트 3에서 비트 4로의 캐리를 포함
ZF (Zero Flag)   - 산술이나 비교 연산의 결과를 나타냄
SF (Sign Flag)   - 산술 연산의 결과값에 대한 부호를 포함
제어플래그 DF (Direction Flag)   - 스트링 데이터를 이동시키거나 비교할 때 방향 결정
시스템플래그 TF (Trap Flag)   - 단일 단계 모드의 프로세서 연산 허용
IF (Interrupt Flag)   - 키보드 입력과 같은 외부 인터럽트의 처리 여부를 나타냄

+ Recent posts